织梦dede list推荐置顶如何实现?

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 织梦建站 正文

下面我将分步详细讲解如何实现,并提供两种主流的实现方法:

织梦 dede list 推荐置顶
(图片来源网络,侵删)

核心思路

  1. 利用现有字段:织梦的文章表 dede_archives 中已经内置了 iscommend(推荐)和 flag(标志位,包含 'h' 置顶)字段,我们不需要修改数据库结构。
  2. 修改列表页模板:在 list_article.htm 模板文件中,使用自定义的SQL查询来获取带有推荐或置顶标志的文章。
  3. 自定义调用标签:织梦的 {dede:list} 标签功能有限,我们需要使用更强大的 {dede:sql}{dede:arclist} 标签来精确控制查询条件。
  4. CSS样式美化:通过CSS为推荐和置顶的文章添加特殊的样式,如不同的背景色、边框或图标,以便用户一眼就能识别。

使用 {dede:sql} 标签(最灵活、推荐)

这种方法可以直接在模板中编写SQL语句,自由度最高,可以完全控制查询逻辑。

步骤 1:修改列表页模板 list_article.htm

  1. 打开你的模板文件夹,找到 list_article.htm 文件。
  2. 找到默认的列表循环标签,通常是 {dede:list}注意: {dede:list} 是一个分页标签,它内部循环一次只输出一篇文章,并且它不支持复杂的SQL条件,我们需要替换掉它,或者在其外部用 {dede:sql} 来获取特殊文章。

步骤 2:编写SQL查询并调用

下面我将给出一个完整的示例,展示如何在列表页上方分别输出“置顶文章”和“推荐文章”,然后下面再输出普通文章。

list_article.htm 中,你可以这样组织代码:

{dede:include filename="head.htm"/}
<!-- 置顶文章列表 -->
<h2 class="top-title">置顶文章</h2>
<ul class="list top-list">
    {dede:sql sql='SELECT * FROM dede_archives WHERE typeid = [field:id/] AND flag LIKE "%h%" ORDER BY sortrank DESC, id DESC'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:sql}
</ul>
<!-- 推荐文章列表 -->
<h2 class="commend-title">推荐文章</h2>
<ul class="list commend-list">
    {dede:sql sql='SELECT * FROM dede_archives WHERE typeid = [field:id/] AND iscommend = 1 ORDER BY sortrank DESC, id DESC'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:sql}
</ul>
<!-- 普通文章列表 -->
<h2 class="normal-title">最新文章</h2>
<ul class="list normal-list">
    {dede:list pagesize='10'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:list}
</ul>
{dede:include filename="footer.htm"/}

代码解析:

织梦 dede list 推荐置顶
(图片来源网络,侵删)
  • [field:id/]:这是当前栏目的ID,{dede:sql} 标签外层需要这个变量来限定文章属于当前栏目。
  • flag LIKE "%h%":这是查询置顶文章的关键。flag 字段是一个字符串,'h' 代表置顶,使用 LIKE "%h%" 可以确保即使文章同时有其他标志(如 'c' 移动端),只要包含 'h' 就能被筛选出来。
  • iscommend = 1:这是查询推荐文章的关键。iscommend 字段为1时表示推荐。
  • ORDER BY sortrank DESC, id DESCsortrank 是文章的排序权重,id 是文章ID,这样可以让置顶/推荐的文章按权重排序,权重相同则按发布时间倒序。
  • {dede:list}:保留它来显示普通文章,这样分页功能依然有效。

步骤 3:添加CSS样式

在模板的CSS文件或 <style> 标签中,为不同列表添加样式,让它们看起来有区别。

/* 基础列表样式 */
.list li {
    list-style: none;
    padding: 10px;
    border-bottom: 1px solid #eee;
}
.list .title {
    font-weight: bold;
    margin-right: 20px;
}
.list .date {
    color: #999;
    font-size: 12px;
}
/* 置顶文章样式 */
.top-list li {
    background-color: #fffbea;
    border-left: 4px solid #ffc107;
    font-weight: bold;
}
/* 推荐文章样式 */
.commend-list li {
    background-color: #f0f9ff;
    border-left: 4px solid #40a9ff;
}
/* 普通文章样式 */
.normal-list li {
    /* 默认样式即可 */
}

使用 {dede:arclist} 标签(织梦官方推荐)

{dede:arclist} 是一个功能非常强大的列表标签,支持丰富的参数,是实现这个需求的另一种优雅方式。

步骤 1:修改列表页模板 list_article.htm

同样,打开 list_article.htm,用 {dede:arclist} 来替换或补充 {dede:list}

{dede:include filename="head.htm"/}
<!-- 置顶文章列表 -->
<h2 class="top-title">置顶文章</h2>
<ul class="list top-list">
    {dede:arclist typeid='[field:id/]' flag='h' orderby='sortrank' pagesize='5'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
</ul>
<!-- 推荐文章列表 -->
<h2 class="commend-title">推荐文章</h2>
<ul class="list commend-list">
    {dede:arclist typeid='[field:id/]' iscommend='1' orderby='sortrank' pagesize='10'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
</ul>
<!-- 普通文章列表 -->
<h2 class="normal-title">最新文章</h2>
<ul class="list normal-list">
    {dede:list pagesize='10'}
    <li>
        <span class="title"><a href='[field:arcurl/]'>[field:title/]</a></span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:list}
</ul>
{dede:include filename="footer.htm"/}

代码解析:

织梦 dede list 推荐置顶
(图片来源网络,侵删)
  • typeid='[field:id/]':限定栏目。
  • flag='h'{dede:arclist}flag 参数可以直接指定标志,'h' 就是置顶。
  • iscommend='1'{dede:arclist}iscommend 参数可以直接指定推荐。
  • orderby='sortrank':按权重排序。
  • pagesize='5':控制每个列表显示的文章数量。

步骤 2:添加CSS样式

CSS样式部分与方法一完全相同,这里不再赘述。


如何给文章设置“推荐”和“置顶”?

无论你选择哪种方法,最终都需要在后台发布文章时设置这些属性。

  1. 登录织梦后台。
  2. 进入“[核心] -> [内容发布] -> [添加文档]”。
  3. 在发布文章的表单中,找到 “自定义属性” 这个字段。
  4. 设置推荐:勾选 “推荐”
  5. 设置置顶:勾选 “置顶”
  6. 发布文章后,这些属性就会写入到 dede_archives 表的 iscommendflag 字段中。

总结与对比

特性 方法一 ({dede:sql}) 方法二 ({dede:arclist})
灵活性 极高,可以写任意复杂的SQL。 ,参数丰富,但不如SQL灵活。
易用性 需要懂SQL语法。 非常简单,标签化参数,易于理解。
性能 直接查询数据库,效率高。 织梦对 {dede:arclist} 有缓存机制,效率也高。
适用场景 需要非常复杂的查询逻辑,或 {dede:arclist} 无法满足需求时。 绝大多数情况,是官方推荐且最方便的做法。

推荐建议:

对于大多数用户,强烈推荐使用方法二 ({dede:arclist}),它更符合织梦的设计理念,代码更简洁,也更容易维护,只有在遇到 {dede:arclist 无法解决的复杂查询时,才考虑使用方法一 ({dede:sql})。

-- 展开阅读全文 --
头像
谭浩强C语言第四版课后答案全解?
« 上一篇 2025-12-03
谭浩强C语言程序设计第四版课后答案全解?
下一篇 » 2025-12-03

相关文章

取消
微信二维码
支付宝二维码

目录[+]