dede list如何调用其他栏目列表?

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

使用 channelartlist 标签(最推荐,最灵活)

这是最标准、最织梦官方的嵌套循环方法,它的核心思想是先用 channelartlist 循环出你想要显示列表的栏目,然后在每个栏目内部再使用 {dede:list} 来调用该栏目的文章。

dede list 调用其他栏目列表
(图片来源网络,侵删)

适用场景:需要在页面上并列显示多个不同栏目的列表,行业新闻”、“产品中心”、“技术文章”等。

示例代码:

{dede:channelartlist typeid='1,2,3'}
  <h2>{dede:field name='typename'/}</h2>
  <ul>
    {dede:list pagesize='8'}
      <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
      </li>
    {/dede:list}
  </ul>
{/dede:channelartlist}

代码详解:

  1. {dede:channelartlist typeid='1,2,3'}:

    dede list 调用其他栏目列表
    (图片来源网络,侵删)
    • typeid='1,2,3':这是关键参数,你需要在这里填写你想要调用列表的栏目ID,多个ID用英文逗号隔开,你可以去 DedeCMS 后台的【栏目管理】中找到对应栏目的ID。
    • 这个标签会循环遍历 ID 为 1, 2, 3 的这三个栏目。
  2. {dede:field name='typename'/}:

    • channelartlist 循环内部,这个标签用于获取当前循环栏目的名称(行业新闻”)。
  3. {dede:list pagesize='8'}:

    • 这个标签被嵌套在 channelartlist 内部,它会自动继承父级栏目的上下文,因此这里调用的就是当前栏目(即 channelartlist 正在循环的那个栏目)的文章列表。
    • pagesize='8':表示每个栏目列表调用 8 篇文章。

使用 arclist 标签(最常用,最简单)

arclist 是一个功能极其强大的标签,可以用来调用任意指定栏目的文章列表,而无需嵌套循环,对于只需要调用一个其他栏目列表的场景,arclist 是最简单直接的选择。

适用场景:只需要在页面的某个位置(如侧边栏、底部)调用一个指定栏目的文章列表。

dede list 调用其他栏目列表
(图片来源网络,侵删)

示例代码:

<h2>公司新闻</h2>
<ul>
  {dede:arclist typeid='5' titlelen='30' orderby='pubdate' orderway='desc' pagesize='10'}
    <li>
      <a href="[field:arcurl/]">[field:title/]</a>
      <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
  {dede:arclist}
</ul>

代码详解:

  • typeid='5':这是核心参数,指定要调用哪个栏目ID下的文章,len='30'`:标题长度,截取 30 个字符。
  • orderby='pubdate':按发布时间排序。
  • orderway='desc':降序排列(最新的在前)。
  • pagesize='10':调用 10 篇文章。

arclist 的参数非常多,你可以查阅官方文档或使用 DedeCMS 的标签向导来设置你需要的参数。


修改 list 标签的底层 SQL(高级用法)

如果你对织梦的底层机制比较熟悉,并且希望在不改变模板结构的情况下,直接修改 list 标签的行为,可以修改其底层查询的 SQL 语句。

适用场景:比较特殊的需求,例如在列表页本身,但希望显示另一个关联栏目的内容,此方法有一定风险,请谨慎操作。

操作步骤:

  1. 打开 DedeCMS 的核心文件:include/arc.listview.class.php
  2. 在这个文件中搜索 GetSqlList 函数。
  3. 找到生成 SQL 查询语句的地方,通常在函数的末尾,类似 $this->dsql->SetQuery("SELECT ..."); 之前。
  4. 修改 WHERE 条件,将固定的 typeid = '当前栏目ID' 修改为你想要的栏目ID。

示例修改:

假设你想在默认的列表页(ID 为 10 的栏目页)里,显示 ID 为 20 的栏目的内容。

原始 SQL 大致是: SELECT ... WHERE arc.typeid IN (10) AND ...

你需要将其修改为: SELECT ... WHERE arc.typeid IN (20) AND ...

⚠️ 重要警告: 直接修改核心文件不是一个好习惯,因为当你升级 DedeCMS 时,这些修改会被覆盖,如果必须使用此方法,请做好备份,并可以考虑将修改逻辑封装到自定义函数中。


总结与推荐

方法 优点 缺点 推荐场景
channelartlist 最规范、最灵活,官方支持,可循环多个栏目。 代码结构稍复杂,需要嵌套。 需要在同一页面上展示多个不同栏目的并列列表。
arclist 最简单、最直接,功能强大,参数丰富。 不能像 channelartlist 那样自动循环栏目名称。 只需调用一个特定栏目的列表,如侧边栏、推荐区等。
修改 SQL 功能最强大,可以改变底层逻辑。 风险高,修改核心文件,升级会丢失。 特殊的、非标准的业务需求。

给你的建议:

  • 99% 的情况下,使用 arclistchannelartlist 就足够了。
  • 如果你要调用一个其他栏目的列表,直接用 arclist,最简单。
  • 如果你要调用多个其他栏目的列表,并且希望每个列表都带上自己的标题,就用 channelartlist

希望这些方法能帮助你解决问题!

-- 展开阅读全文 --
头像
C语言CommonFunction有哪些常用函数?
« 上一篇 2025-12-10
dede手机m search.htm如何实现移动端搜索?
下一篇 » 2025-12-10

相关文章

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

目录[+]