dede文章置顶标签如何设置?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 DEDE建站 正文

在DedeCMS中,文章置顶功能是通过一个名为 ismake 的字段来控制的,这个字段是一个布尔值(0或1):

dede文章置顶标签
(图片来源网络,侵删)
  • ismake = 1: 表示该文章被置顶。
  • ismake = 0: 表示该文章为普通文章,未置顶。

所有与置顶相关的标签和SQL查询,核心都是围绕这个 ismake 字段展开的。


后台操作:如何置顶文章?

在理解标签之前,首先要知道如何让一篇文章进入置顶状态。

  1. 登录DedeCMS后台
  2. 进入 “核心” -> “内容发布” -> “新增文档” 或编辑现有文档。
  3. 在文章编辑页面,找到 “置顶” 选项(通常是一个复选框)。
  4. 勾选“置顶”,然后发布或更新文档。
  5. 发布后,这篇文章的 ismake 值就会在数据库中被设置为 1

重要提示: 仅仅勾选“置顶”并发布,文章可能并不会立刻显示在列表的最顶端,你还需要在后台的 “首页” -> “首页管理” -> “首页默认文档” 中,将置顶文章手动设置为“首页头条”或进行其他排序操作,或者通过调用特定标签来专门获取置顶文章。


前台调用:常用置顶标签

DedeCMS提供了多种标签来调用置顶文章,以满足不同的场景需求。

dede文章置顶标签
(图片来源网络,侵删)

调用所有置顶文章(最常用)

这个标签会忽略所有栏目限制,直接从全站的文档中调用 ismake=1 的文章。

{dede:arclist flag='h' titlelen='50' row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

标签解析:

  • flag='h': 这是最关键的参数h 代表“头条”或“特荐”,它等同于 ismake=1 的条件,使用这个参数,系统就会只查询置顶的文章,len='50'`: 标题长度,最多显示50个字符。
  • row='10': 调用文章的数量,这里调用10篇。
  • [field:arcurl/]: 文章链接。
  • [field:title/]: 文章标题。
  • [field:pubdate ...]: 发布日期,并使用函数 MyDate 格式化。

调用指定栏目下的置顶文章

如果你只想在某个特定栏目(网站公告”)的列表页显示该栏目的置顶文章,可以使用 typeid 参数。

{dede:arclist typeid='5' flag='h' titlelen='50' row='5'}
    <li>
        <strong>[field:title/]</strong>
        <small>[field:pubdate function="MyDate('Y-m-d', @me)"/]</small>
    </li>
{/dede:arclist}

标签解析:

  • typeid='5': 指定栏目ID为5的栏目,请将 5 替换为你自己的栏目ID。
  • flag='h': 仍然保留,表示只调用该栏目下的置顶文章。

调用带图标的置顶文章

为了更直观地展示置顶文章,我们可以在标题前加上一个小图标(如“置顶”或“📌”)。

{dede:arclist flag='h' titlelen='50' row='10'}
    <li>
        <span style="color:red;">【置顶】</span>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:arclist}

这里我们直接在模板中写入了 【置顶】 文字,你也可以使用 <img> 标签来引入一个图标文件。

调用全站置顶文章(使用SQL标签)

arclist 标签无法满足复杂需求时,可以使用更灵活的 sql 标签。sql 标签允许你直接书写SQL语句。

{dede:sql sql='Select arc.id, arc.title, arc.pubdate, arc.typeid, tp.typedir 
    From dede_archives arc 
    left join dede_arctype tp on arc.typeid = tp.id 
    where arc.ismake = 1 
    order by arc.pubdate desc 
    limit 0, 10'}
    <li>
        <a href="[field:typedir function='str_replace("{cmspath}", "", @me)']/[field:id].html">[field:title/]</a>
    </li>
{/dede:sql}

标签解析:

  • sql='...': 书写完整的SQL查询语句。
  • From dede_archives arc: dede_archives 是存储文章主表的表名(dede_是你的表前缀,可能不同)。
  • left join dede_arctype tp ...: 为了获取栏目路径,需要关联 dede_arctype 表。
  • where arc.ismake = 1: 这是核心条件,明确指定查询置顶文章。
  • order by arc.pubdate desc: 按发布日期倒序排列,最新的在最前面。
  • limit 0, 10: 限制查询结果,从第0条开始,共10条。
  • [field:typedir ...]: 在SQL标签中,获取文章链接的方式与 arclist 不同,需要手动拼接。

常见问题与解决方案

问题1:为什么我勾选了置顶,文章没有置顶效果?

原因分析: 最常见的原因是 没有调用正确的置顶标签,你可能正在使用一个普通的列表标签,它默认不会过滤出置顶文章。

解决方案:

  1. 检查模板文件:找到你首页或列表页的模板文件(通常是 index.htmlist_article.htm)。
  2. 找到调用文章的标签:定位到类似 {dede:arclist ...} 的部分。
  3. 添加 flag='h' 参数:确保调用的标签中包含了 flag='h',从:
    {dede:arclist row='10'...}

    修改为:

    {dede:arclist flag='h' row='10'...}

问题2:我想把置顶文章放在最上面,普通文章在下面,怎么实现?

这需要分两步调用:先调用置顶文章,再调用普通文章。

<!-- 第一部分:调用置顶文章 -->
<h3>网站公告</h3>
<ul class="top-news">
    {dede:arclist flag='h' row='5' titlelen='40'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
</ul>
<!-- 第二部分:调用普通文章(排除置顶) -->
<h3>最新文章</h3>
<ul class="latest-news">
    {dede:arclist flag='' row='10' titlelen='40'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
</ul>

注意,普通文章标签里 flag 参数为空 或直接不写 flag 属性。

问题3:ismake 字段是什么时候添加的?

ismake 字段是DedeCMS一个非常基础和核心的字段,自早期版本就一直存在,上述所有方法在绝大多数DedeCMS版本(如5.7、5.8等)中都是通用的。


功能需求 推荐标签 关键参数/条件
调用全站置顶文章 {dede:arclist} flag='h'
调用指定栏目置顶文章 {dede:arclist} typeid='栏目ID'flag='h'
自定义复杂置顶查询 {dede:sql} where arc.ismake = 1
实现置顶+普通混合列表 两个 {dede:arclist} 一个用 flag='h',一个不用

希望这份详细的指南能帮助你完全掌握DedeCMS的文章置顶功能!

-- 展开阅读全文 --
头像
C语言region是什么?作用与用法解析
« 上一篇 04-16
如何批量获取织梦站关键字?
下一篇 » 04-16

相关文章

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

目录[+]