dede列表页如何调用专题?

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

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

{dede:arclist} 是DedeCMS最核心、最强大的列表标签,不仅可以调用文章,还可以通过特定属性来调用专题。

dede列表页调用专题
(图片来源网络,侵删)

核心思路:

通过指定 channelid 为专题的频道ID,来筛选出所有属于该频道的文档(也就是专题)。

代码示例:

假设您的专题频道ID是 19(您可以在后台“频道模型” -> “内容频道管理”中查看),您想在列表页的某个位置调用这些专题。

<h3>相关专题</h3>
<ul class="special-list">
  {dede:arclist 
    channelid='19' 
    row='6' len='30' 
    orderby='pubdate' 
    typeid='0' 
    }
    <li>
      <a href="[field:arcurl/]">
        <img src="[field:litpic/]" alt="[field:title/]" />
        <span>[field:title/]</span>
      </a>
    </li>
  {/dede:arclist}
</ul>

代码详解:

  • channelid='19': 这是最关键的一步,它告诉系统只调用ID为19的频道内容,您需要将 19 替换为您自己网站上“专题”频道的实际ID。
  • row='6': 调用6个专题,len='30'`: 标题最多显示30个字符。
  • orderby='pubdate': 按发布时间排序,您也可以使用 click(按点击量)或 id(按ID)。
  • typeid='0': 调用所有分类下的专题,如果您只想调用某个专题分类下的专题,可以将这里的 0 替换为对应的分类ID。
  • [field:arcurl/]: 专题的链接地址。
  • [field:litpic/]: 专题的缩略图。
  • [field:title/]: 专题的标题。

使用 {dede:sql} 标签(直接数据库查询,最灵活)

如果您需要更复杂的查询条件,或者 {dede:arclist} 无法满足您的需求,可以直接使用SQL语句从数据库中查询专题信息。

核心思路:

直接编写SQL语句,查询 dede_archives (文档主表) 和 dede_channeltype (频道类型表) 中 channeltype 字段为专题类型的记录。

dede列表页调用专题
(图片来源网络,侵删)

代码示例:

<h3>热门专题</h3>
<ul class="special-list-sql">
  {dede:sql sql="SELECT a.id, a.title, a.litpic, a.pubdate 
                 FROM dede_archives a 
                 LEFT JOIN dede_channeltype c ON a.channel = c.id 
                 WHERE c.tempindex > 0 AND a.channel = 19 
                 ORDER BY a.click DESC 
                 LIMIT 0, 5"}
    <li>
      <a href="/special/show.php?specialid=[field:id/]">
        <img src="[field:litpic/]" alt="[field:title/]" />
        <span>[field:title/]</span>
      </a>
    </li>
  {/dede:sql}
</ul>

代码详解:

  • sql="...": 这里是完整的SQL查询语句。
    • FROM dede_archives a: 查询文档主表,并给它一个别名 a
    • LEFT JOIN dede_channeltype c ON a.channel = c.id: 关联频道类型表,以判断是否为专题。
    • WHERE c.tempindex > 0 AND a.channel = 19: 这是核心筛选条件
      • a.channel = 19: 同样,19 是专题频道的ID,确保只查专题。
      • c.tempindex > 0: 这个条件可以确保查询到的是启用了首页模板的频道,通常专题都满足这个条件,可以过滤掉一些无效数据。
    • ORDER BY a.click DESC: 按点击量降序排列,显示热门专题。
    • LIMIT 0, 5: 从第0条开始,取5条记录。
  • /special/show.php?specialid=[field:id/]: 这是专题页面的默认链接规则,[field:id/] 是专题的ID。

使用 {dede:sonchannel} 标签(调用专题分类)

如果您想先列出“专题”下的所有分类,然后让用户点击分类查看该分类下的专题,可以使用 {dede:sonchannel}

核心思路:

调用指定分类(即专题频道)下的所有子分类。

代码示例:

假设您的“专题”一级分类ID是 18

<h3>专题分类</h3>
<div class="special-category">
  {dede:sonchannel typeid='18'}
    <a href="[field:typelink/]">[field:typename/]</a>
  {/dede:sonchannel}
</div>

代码详解:

  • typeid='18': 指定要调用其子分类的父级分类ID,这里就是“专题”这个顶级分类的ID。
  • [field:typelink/]: 分类链接地址。
  • [field:typename/]: 分类名称。

总结与建议

方法 优点 缺点 适用场景
{dede:arclist} 代码简洁、性能较好、官方推荐 灵活性相对SQL稍差 绝大多数情况下的首选,直接调用专题列表。
{dede:sql} 极度灵活,可写任意复杂查询 代码稍复杂,需要懂一点SQL,有数据库安全风险(需注意防注入) 需要特殊排序、特殊条件筛选时,例如调用与当前文章相关的专题。
{dede:sonchannel} 专门用于调用分类 不能直接调用专题内容 需要先展示专题分类,再让用户进入的场景。

给您的最终建议:

dede列表页调用专题
(图片来源网络,侵删)
  1. 首选方法一 ({dede:arclist}):它是最简单、最安全、最高效的方式,能够满足90%以上的列表页调用专题的需求。
  2. 确认频道ID:在使用任何方法之前,请务必先登录DedeCMS后台,进入“频道模型” -> “内容频道管理”,找到“专题”频道,记下它的ID。
  3. 结合使用:您可以将方法三和方法一结合起来,先显示专题分类,再在下方显示某个分类下的专题列表,实现更丰富的页面效果。

希望这些详细的解释和示例能帮助您成功在列表页调用专题!

-- 展开阅读全文 --
头像
dede频道页调用方法有哪些?
« 上一篇 今天
织梦图片浏览插件下载哪里找?
下一篇 » 今天

相关文章

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

目录[+]