dede如何调用当前栏目下的文章?

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

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

这是最灵活、最常用的方法,可以完美实现你的需求。{dede:arclist} 本身就可以根据当前栏目自动获取文章列表。

dede 调用当前栏目文章
(图片来源网络,侵删)

基础代码

{dede:arclist titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:arclist}

代码详解

  • {dede:arclist ...}: 这是调用文章列表的起始标签,len='30'`: 设置文章标题的长度,最多显示30个字符,如果标题过长,会被截断。
  • row='10': 设置调用文章的数量,这里调用10篇。
  • [field:arcurl/]: 文章的完整链接。
  • [field:title/]: 文章的标题。
  • [field:pubdate ...]: 文章的发布日期。
    • function="MyDate('Y-m-d', @me)": 这是一个自定义函数,用于格式化日期。@me 代表原始的时间戳,'Y-m-d' 是你想要的日期格式(2025-10-27)。
  • </li></a> 等: 是你自己的 HTML 结构,用于美化列表显示。

核心技巧:如何确保只调用“当前栏目”的文章?

默认情况下,{dede:arclist} 在一个栏目页(如 plus/list.php?cid=XX)中使用时,会自动只调用该栏目的文章,你不需要做任何额外的设置。

示例:在栏目列表页模板 list_article.htm 中使用

假设你的栏目列表页模板是 list_article.htm,你只需要将上面的代码放入这个模板文件的循环部分即可。

<ul class="article-list">
    {dede:arclist titlelen='30' row='10'}
        <li>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
            <span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </li>
    {/dede:arclist}
</ul>

使用 {dede:list} 标签(仅用于栏目列表页)

{dede:list} 是一个专门为“栏目列表页”设计的标签,功能比 {dede:arclist} 更简单,但限制也更多。

dede 调用当前栏目文章
(图片来源网络,侵删)

基础代码

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:list}

代码详解

  • {dede:list ...}: 调用当前栏目文章列表的起始标签。
  • pagesize='10': 设置每页显示的文章数量,相当于 {dede:arclist}row 属性。
  • [field:arcurl/], [field:title/], [field:pubdate/]: 与 arclist 中的用法完全相同。

{dede:list}{dede:arclist} 的关键区别

特性 {dede:list} {dede:arclist}
使用场景 仅限于栏目列表页 (list_*.htm) 非常灵活,可用在首页、栏目页、文章页、自定义页面等任何地方
分页 自动生成,无需手动调用 需要手动调用 {dede:pagelist listitem='index pre pageno next end '/}
功能 较少,主要用于列表 非常多,支持按时间、点击量、ID等多种排序,支持指定栏目等
性能 稍快 稍慢,但功能强大

如果你只在栏目列表页调用文章,使用 {dede:list} 更简单,如果你需要在其他地方(如首页、文章内容页)调用当前栏目的文章,或者需要更复杂的排序和筛选,必须使用 {dede:arclist}


在首页或内容页调用当前栏目的文章

这是一个非常经典的需求,比如在文章页的侧边栏显示“本栏目最新文章”,这时,你需要明确告诉 {dede:arclist} 要调用哪个栏目的文章。

关键属性:typeid

typeid 属性用于指定要调用的栏目ID。

场景:在文章内容页 (article_article.htm) 调用当前文章所在栏目的最新文章

dede 调用当前栏目文章
(图片来源网络,侵删)
<h3>本栏目最新文章</h3>
<ul>
    {dede:arclist titlelen='26' row='8' typeid=''}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {dede:arclist}
</ul>

核心技巧:如何获取当前栏目的ID? 页,当前栏目的ID可以通过全局变量 typeid 获取,我们需要在 typeid 属性中使用这个变量。

正确的写法:

<h3>本栏目最新文章</h3>
<ul>
    {dede:arclist titlelen='26' row='8' typeid='~typeid~'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {dede:arclist}
</ul>

为什么是 ~typeid~

  • typeid 是 DedeCMS 模板引擎的一个特殊语法,它会自动将变量值解析后填入。
  • {dede:arclist} 等列表标签中,使用 typeid='~typeid~' 就相当于告诉系统:“这里的栏目ID,请使用当前页面环境中的 typeid 变量值”。
  • typeid 变量在文章页和栏目页都是自动定义好的,包含了当前栏目的ID。

高级技巧:{dede:arclist} 常用属性总结

属性名 说明 示例
typeid 指定栏目ID,多个ID用逗号隔开,不指定或为空时,表示当前栏目。 typeid='1,3,5'
row 调用文章数量 row='10'
infolen 内容简介长度 infolen='120'
orderby 排序方式,可以是 pubdate (发布时间), click (点击量), id (ID), arcrank (文档排序级别) 等 orderby='click' (按点击量从高到低)
orderway 排序方式。desc (降序) 或 asc (升序) orderway='desc'
channelid 指定模型ID,默认为1(文章) channelid='1'
subday 调用N天内的文章 subday='7' (调用一周内发布的文章)
keyword 关键词调用,多个关键词用逗号隔开 keyword='DedeCMS,教程'

总结与最佳实践

  1. *在栏目列表页 (`list_.htm`)**:

    • 首选 {dede:list}:代码最简洁,专为列表页设计。
    • 次选 {dede:arclist}:功能更强大,如果需要复杂排序或额外功能,用它。
  2. 在首页或其他页面

    • 必须使用 {dede:arclist}
    • 如果要调用指定栏目的文章,务必使用 typeid='栏目ID' 属性。
  3. *页 (`article_.htm`) 调用“本栏目”文章**:

    • 必须使用 {dede:arclist}
    • 使用 typeid='~typeid~' 来获取当前文章所在的栏目ID。

希望这份详细的指南能帮助你轻松掌握在 DedeCMS 中调用当前栏目文章的各种方法!

-- 展开阅读全文 --
头像
len参数如何设置标题长度?
« 上一篇 今天
dede如何获取当前栏目id?
下一篇 » 今天

相关文章

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

目录[+]