织梦channelartlist如何调用与显示?

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

这个标签主要用于首页或频道封面页,用于获取一个或多个栏目的列表,并支持在这些栏目的列表中再调用其子栏目的文章。

织梦channelartlist
(图片来源网络,侵删)

channelartlist 是什么?

channelartlist 是一个“栏目+文章”的组合列表标签,它和 channel(仅获取栏目)以及 arclist(仅获取文章)是并列的,但功能更强大。

它的典型应用场景是: 网站首页的“栏目推荐”区域,首页有“新闻中心”、“产品中心”、“关于我们”等几个主要栏目,你希望在“新闻中心”下面显示几条最新的新闻,在“产品中心”下面显示几款最新产品。

channelartlist 会先遍历你指定的父栏目,然后在每一个父栏目循环内部,再通过 type 属性来获取该栏目下的文章列表。


基本语法

{channelartlist typeid='' row=''}
    <h2><a href="[field:typelink/]">[field:typename/]</a></h2>
    <ul>
        {dede:arclist titlelen='40' row='5'}
            <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </ul>
{/channelartlist}

常用属性

channelartlist 标签本身有一些属性,用来控制它获取哪些栏目以及如何获取。

织梦channelartlist
(图片来源网络,侵删)
属性名 含义 示例 说明
typeid 指定栏目ID typeid='1,3,5' 最核心的属性,用于指定要获取的栏目列表,可以是单个ID,也可以是多个ID用逗号隔开,如果为空,则获取顶级栏目。
row 获取栏目数量 row='4' 表示只获取 typeid 中指定的前4个栏目。typeid 为空,则表示获取前4个顶级栏目。
cacheid 缓存ID cacheid='home' 用于开启缓存,提高首页加载速度,建议首页使用。

内置字段(循环变量)

channelartlist 标签的循环体内,可以使用以下字段来获取当前栏目的信息。

字段名 含义 示例
[field:typename/] 栏目名称 <h2>[field:typename/]</h2>
[field:typelink/] 栏目链接 <a href="[field:typelink/]">更多...</a>
[field:id/] 栏目ID 用于判断或JS调用

实战示例:首页“栏目推荐”区

假设我们的网站首页布局如下,有几个主要栏目,每个栏目下都要显示文章列表。

目标效果:

  • 公司新闻 (栏目ID=1),显示5条新闻。
  • 产品中心 (栏目ID=3),显示4条产品。
  • 行业资讯 (栏目ID=5),显示6条资讯。

实现步骤:

织梦channelartlist
(图片来源网络,侵删)

在后台确定栏目ID 登录织梦后台,在“频道模型” -> “栏目管理”中找到“公司新闻”、“产品中心”、“行业资讯”这三个栏目的ID,假设它们分别是 1, 3, 5。

在首页模板文件 (index.htm) 中添加代码 打开你的首页模板文件,在合适的位置(<div class="main-content"> 内)添加如下代码:

<!-- 使用 channelartlist 调用三个指定栏目的文章列表 -->
{channelartlist typeid='1,3,5' row='3'}
    <div class="channel-box">
        <!-- 循环开始,每循环一次,代表一个栏目 -->
        <!-- 栏目标题和链接 -->
        <div class="channel-title">
            <h2><a href="[field:typelink/]">[field:typename/]</a></h2>
            <a href="[field:typelink/]" class="more">更多 &gt;</a>
        </div>
        <!-- 文章列表 -->
        <div class="article-list">
            <ul>
                <!-- 在 channelartlist 内部,使用 arclist 来调用文章 -->
                {dede:arclist titlelen='30' row='5' orderby='pubdate' typeid=''}
                    <!-- 注意:这里的 typeid='' 可以留空,默认就是获取当前 channelartlist 循环到的栏目的文章 -->
                    <li>
                        <span class="date">[field:pubdate function="MyDate('m-d',@me)"/]</span>
                        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
                    </li>
                {/dede:arclist}
            </ul>
        </div>
        <!-- 循环结束 -->
    </div>
{/channelartlist}

代码解析:

  1. {channelartlist typeid='1,3,5' row='3'}:

    • typeid='1,3,5':告诉织梦,我们只获取ID为1、3、5的这三个栏目。
    • row='3':虽然 typeid 里只有3个,但这里写上 row='3' 可以确保即使后台有新增同级别的栏目,也不会被错误调用,代码更严谨。
  2. [field:typename/][field:typelink/]:

    • channelartlist 的每一次循环中,这两个字段会分别代表当前栏目的名称和链接,第一次循环时是“公司新闻”和其链接,第二次循环时就是“产品中心”和其链接。
  3. {dede:arclist ...}:

    • 这是嵌套在 channelartlist 内部的文章列表标签。
    • 关键点:这里的 arclist 不需要再指定 typeid,因为 channelartlist 已经将“当前栏目”的上下文传递给了它。arclist 会自动获取其父级 channelartlist 循环到的那个栏目的文章。
    • titlelen='30'长度限制为30个字符。
    • row='5':显示5条文章。
    • orderby='pubdate':按发布时间降序排列(最新的在前)。

注意事项与常见问题

  1. 嵌套关系channelartlist 必须和 arclist(或 listartlist)一起使用,单独使用 channelartlist 是没有意义的,因为它本身不直接输出文章。

  2. typeid 的作用域

    • channelartlist 上,typeid获取父栏目
    • 在内部的 arclist 上,typeid获取指定栏目的文章,如果留空,则获取当前父栏目下的文章,如果填写,则获取指定栏目的文章,这会覆盖父栏目的上下文。
  3. 缓存问题:首页模板建议开启缓存,如果修改了模板但首页没有更新,可以进入“后台” -> “系统” -> “系统基本参数” -> “性能选项”,清空一下所有缓存,或者勾选“启用gzip压缩”并保存,系统会自动更新首页。

  4. channel + arclist 组合的区别

    • channelartlist 是一个标签完成“栏目循环”和“文章调用”,代码结构更清晰,推荐使用。
    • channel + arclist 组合需要手动写循环,代码量稍多,但逻辑上更容易理解。
    • 示例(不推荐的方式):
      {dede:channel type='top' row='3'}
          {dede:arclist row='5' typeid='[field:id/]'}
              ...
          {/dede:arclist}
      {/dede:channel}
  5. 栏目排序channelartlist 获取的栏目顺序是后台“栏目管理”中的排序,如果需要自定义,可以在后台调整栏目的“排序”值。

希望这份详细的解析能帮助你完全掌握 channelartlist 的使用!

-- 展开阅读全文 --
头像
dede自定义表单内容如何彻底删除?
« 上一篇 2025-12-14
extern与static在C语言中作用有何区别?
下一篇 » 2025-12-14
取消
微信二维码
支付宝二维码

目录[+]