dede arclist栏目名称如何调用?

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

{dede:arclist} 是 DedeCMS 最核心、最常用的列表标签,主要用于在首页、列表页等地方调用文章列表,默认情况下,它只显示文章的标题、时间、点击等信息,但通过其强大的属性,我们可以轻松地获取并显示文章所属的栏目名称。

dede arclist 栏目名称
(图片来源网络,侵删)

核心方法:使用 channel 属性

要获取栏目名称,最直接和推荐的方法是使用 channel 属性,这个属性会获取当前文章所属栏目的信息,并以数组的形式赋值给一个你指定的变量。

基本语法

{dede:arclist channel='你的变量名' ...}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 使用[field:变量名/来调用栏目信息] -->
        <span>栏目:[field:你的变量名.name/]</span>
    </li>
{/dede:arclist}

详细示例与解释

假设我们要在文章列表中显示每个文章的标题和它所属的栏目名称。

在模板中添加 channel 属性

我们定义一个变量名为 mychannel

dede arclist 栏目名称
(图片来源网络,侵删)
<ul>
    {dede:arclist 
        typeid='1' 
        row='10' 
        channel='mychannel'
        titlelen='30'
    }
        <li>
            <!-- 文章链接 -->
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
            <!-- 文章发布时间 -->
            <span class="time">([field:pubdate function="MyDate('Y-m-d',@me)"/])</span>
            <!-- 使用 channel 变量获取栏目名称 -->
            <span class="channel">来自栏目:<strong>[field:mychannel.name/]</strong></span>
        </li>
    {/dede:arclist}
</ul>

代码解析:

  • {dede:arclist ...}: 开始标签。
  • typeid='1': 调用 ID 为 1 的栏目及其子栏目下的文章,如果为空,则调用所有栏目的文章。
  • row='10': 显示 10 条文章,len='30'`: 标题长度最多 30 个字符。
  • channel='mychannel': 这是关键! 它告诉 DedeCMS,为当前循环的每一篇文章,获取其所属栏目的完整信息,并存储到名为 mychannel 的变量中。
  • [field:arcurl/]: 文章的链接地址。
  • [field:title/]: 文章的标题。
  • [field:pubdate ... /]: 文章的发布时间,这里用 function 进行了格式化。
  • [field:mychannel.name/]: 这就是获取栏目名称的核心写法,因为 mychannel 是一个栏目信息数组,所以用 .name 来访问它的“栏目名称”这个字段。
  • {/dede:arclist}: 结束标签。

其他常用的栏目字段

channel 属性返回的不仅仅只有 name,你还可以获取栏目的其他很多有用信息,只需要将 .name 换成其他字段名即可。

  • 栏目ID: [field:mychannel.id/]
  • 栏目目录: [field:mychannel.typename/] (注意:在某些版本中,typenamename 效果一样,都指栏目名称,更常用的是 name,而 typedir 才是指栏目在网站上的目录路径,如 /a/)
  • 栏目链接: [field:mychannel.typelink/] (这是最常用的获取栏目链接的方式,它会自动带上网站的根目录)
  • 栏目上级ID: [field:mychannel.reid/]
  • 栏目排序: [field:mychannel.sortrank/]

综合示例:显示文章标题、栏目名称和栏目链接

{dede:arclist channel='mychannel' row='5'}
    <div class="article-item">
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p>
            <a href="[field:mychannel.typelink/]">[field:mychannel.name/]</a> 
            <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        </p>
    </div>
{/dede:arclist}

在这个例子中,文章的标题链接到文章本身,而栏目名称则是一个可以点击的链接,点击后会跳转到该栏目列表页。

dede arclist 栏目名称
(图片来源网络,侵删)

替代方法:使用 typeidgettypename 函数

在某些特殊情况下,或者如果你对 PHP 比较熟悉,也可以使用另一种方法:通过 typeid 获取栏目 ID,然后用 gettypename 函数根据 ID 获取栏目名称。

这种方法效率稍低,因为它在循环内部执行了函数调用,不推荐在大量数据列表中使用,但作为了解是很有帮助的。

{dede:arclist row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 
            field:typeid 是当前文章的栏目ID
            gettypeid 是一个DedeCMS函数,用于根据ID获取栏目名称
        -->
        <span>栏目:[field:typeid function='GetTypeName(@me)'/]</span>
    </li>
{/dede:arclist}

代码解析:

  • [field:typeid/]: 这个标签会输出当前文章所属栏目的 ID 号(2, 5, 8 等)。
  • function='GetTypeName(@me)': 这是一个函数调用。
    • @me 是 DedeCMS 模板中的特殊变量,代表当前标签的原始值,在这里就是 [field:typeid/] 的输出结果,即栏目 ID。
    • GetTypeName() 是 DedeCMS 的一个内置函数,它接收一个栏目 ID 作为参数,并返回该栏目的名称。
    • [field:typeid function='GetTypeName(@me)'/] 的完整意思就是:获取当前文章的栏目 ID,然后用这个 ID 去调用 GetTypeName 函数,最后输出函数返回的栏目名称。

总结与对比

方法 优点 缺点 推荐场景
channel 属性 效率高,一次获取所有栏目信息,可灵活调用 id, name, typelink 等多个字段。 语法稍微复杂一点,需要理解变量概念。 强烈推荐,99% 的场景下都应使用此方法。
typeid + gettypename 语法直观,易于理解。 效率较低,在循环中反复调用函数,对性能有轻微影响。 只需获取栏目名称,且对性能要求不高的简单列表。

在 DedeCMS 中使用 {dede:arclist} 调用栏目名称,channel='变量名' + [field:变量名.name/] 是最标准、最高效的方案

-- 展开阅读全文 --
头像
php5织梦为何无法一键生成文档?
« 上一篇 昨天
织梦v5.7验证码错误怎么解决?
下一篇 » 昨天

相关文章

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

目录[+]