织梦channelartlist标签如何正确调用?

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

这个标签是织梦实现聚合频道式布局的关键,通常用于制作网站首页的栏目推荐区、图片新闻区等。

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

channelartlist 是什么?

channelartlist 的作用是从一个或多个指定的顶级栏目(频道)中,分别获取每个栏目的下属内容列表

它能帮你实现这样的效果:

  • 循环遍历 "公司新闻"、"产品中心"、"关于我们" 这几个顶级栏目。
  • 对于 "公司新闻" 这个栏目,获取它最新的5条新闻列表。
  • 对于 "产品中心" 这个栏目,获取它最新的5个产品列表。
  • 最后将这些数据和HTML模板结合,渲染成一个完整的页面区块。

语法结构

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

核心属性说明

channelartlist 标签本身只有一个核心属性,但它决定了数据的来源。

typeid (必须)

这个属性用来指定要获取哪些栏目的列表,它的值可以是栏目ID,也可以是栏目ID的逗号分隔列表

织梦 channelartlist
(图片来源网络,侵删)
  • 指定单个栏目typeid='1',只获取栏目ID为1的及其子栏目的列表。
  • 指定多个栏目typeid='1,3,5',获取栏目ID为1、3、5的及其子栏目的列表。
  • 获取所有顶级栏目typeid='0',这是最常用的用法,它会获取网站所有顶级(一级)栏目。

重要提示typeid指定的栏目必须是顶级栏目(即没有上级栏目的栏目),如果指定了一个二级栏目,channelartlist会将其视为顶级栏目来处理,但其下不会再有子栏目数据。


底层变量(字段)

{channelartlist}{/channelartlist} 之间,可以使用一些特殊的变量来获取当前循环到的栏目的信息。

变量名 说明 示例
{field:typename/} 当前循环栏目的名称 <h2>{field:typename/}</h2>
{field:typeurl/} 当前循环栏目的链接地址 <a href="{field:typeurl/}">查看更多</a>

嵌套标签 {dede:arclist}

channelartlist 的核心价值在于它可以嵌套 {dede:arclist} 标签。{arclist} 会在 {channelartlist} 所限定的当前栏目内获取文章列表。

{arclist} 在此处的特点:

  1. 作用域限定{arclist} 默认只在 {channelartlist} 当前循环的栏目内查找文章,而不会去全站查找,这是它与独立使用 {arclist} 的最大区别。
  2. 常用属性
    • row='数字':获取的文章数量,如 row='5' 表示获取5条。
    • titlelen='数字'的字符长度,如 titlelen='30' 表示标题最多显示30个字符。
    • infolen='数字':文章简介(的字符长度。
    • imgwidth='数字'imgheight='数字':缩略图的宽度和高度。
    • orderby='pubdate':按发布时间排序。orderby='hot' 按点击量排序。
    • channelid='数字':指定频道模型ID,通常用于获取特定类型的内容(如文章、图集等)。

完整示例:制作首页推荐栏目区

假设我们要制作一个首页,显示“公司新闻”、“产品中心”、“客户案例”这三个栏目的最新内容。

步骤1:在后台获取栏目ID

登录织梦后台 -> “核心” -> “栏目管理”,找到这三个顶级栏目,记下它们的ID,假设分别是:

  • 公司新闻 -> ID: 1
  • 产品中心 -> ID: 2
  • 客户案例 -> ID: 3

步骤2:修改首页模板文件

打开你的首页模板文件(通常是 /templets/default/index.htm),在你想显示推荐栏目的位置,添加如下代码:

<!-- 推荐栏目区开始 -->
<div class="recommend-section">
    <div class="container">
        <div class="row">
            {channelartlist typeid='1,2,3'}
                <div class="col-md-4">
                    <!-- 栏目标题 -->
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h3 class="panel-title">
                                <a href="{field:typeurl/}">{field:typename/}</a>
                                <a href="{field:typeurl/}" class="pull-right">更多 &gt;</a>
                            </h3>
                        </div>
                        <div class="panel-body">
                            <!-- 使用arclist获取该栏目下的文章列表 -->
                            <ul class="list-unstyled">
                                {dede:arclist row='5' titlelen='30'}
                                    <li class="media">
                                        <a href="[field:arcurl/]">
                                            <img class="mr-3" src="[field:litpic/]" alt="[field:title/]" width="50" height="50">
                                        </a>
                                        <div class="media-body">
                                            <a href="[field:arcurl/]" class="text-dark">[field:title/]</a>
                                            <p class="small text-muted">[field:pubdate function="MyDate('Y-m-d', @me)"/]</p>
                                        </div>
                                    </li>
                                {/dede:arclist}
                            </ul>
                        </div>
                    </div>
                </div>
            {/channelartlist}
        </div>
    </div>
</div>
<!-- 推荐栏目区结束 -->

代码解析:

  1. {channelartlist typeid='1,2,3'}:循环ID为1、2、3的三个顶级栏目。
  2. <div class="col-md-4">:假设你使用了Bootstrap框架,这会让每个栏目占据1/3的宽度。
  3. {field:typeurl/}{field:typename/}:分别显示栏目的链接和名称。
  4. {dede:arclist row='5' titlelen='30'}:在当前栏目循环中,获取最新的5条文章,标题长度限制为30个字符。
  5. [field:arcurl/][field:title/][field:litpic/]:这些都是 {arclist} 标签的标准底层变量,用于获取单篇文章的链接、标题和缩略图。

常见问题与注意事项

  1. Q: 为什么我的栏目列表显示不出来?

    • A1: 检查 typeid:确保填写的ID是正确的顶级栏目ID,并且ID之间用英文逗号隔开。
    • A2: 检查栏目内容:确保指定的栏目下已经有发布了的文章内容。
    • A3: 检查模板标签:确保 {channelartlist}{/channelartlist} 成对出现,{arclist} 正确嵌套在其中。
  2. Q: {arclist} 获取的文章不是我想要的,怎么指定频道模型?

    • A:{arclist} 中添加 channelid 属性,如果你的“产品中心”使用的是“产品模型”(ID可能是5),你可以这样写:
      {channelartlist typeid='2'}
          {dede:arclist row='5' channelid='5'}
              ...
          {/dede:arclist}
      {/channelartlist}
  3. Q: 如何给每个栏目循环块添加不同的CSS类?

    • A: 可以使用 @me 变量和 runphp 属性来实现,给第一个栏目加一个特殊的类 first
      {channelartlist typeid='1,2,3'}
          {php @me = ($GLOBALS['item__index'] == 1) ? 'panel-primary' : 'panel-default';}
          <div class="col-md-4">
              <div class="panel <?php echo @me; ?>">
                  ...
              </div>
          </div>
          {/channelartlist}

      这个技巧比较高级,通常更简单的方法是在前端通过CSS的 nth-child() 选择器来控制。

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

-- 展开阅读全文 --
头像
织梦关键词文章,如何高效优化与布局?
« 上一篇 2025-12-10
C语言中int、float、double有何区别?
下一篇 » 2025-12-10
取消
微信二维码
支付宝二维码

目录[+]