dede arclist 如何调用当前栏目内容?

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

这是一个非常常见的需求,尤其是在制作网站首页、列表页或者自定义模型页面时。

dede arclist 当前栏目
(图片来源网络,侵删)

核心标签:typeid

要调用当前栏目的文章,关键在于 {dede:arclist} 标签中的 typeid 属性。

  • typeid: 指定要获取文章的栏目ID,如果你把它留空或者不写,DedeCMS 会自动获取当前页面的栏目ID。

最简单、最常用的方法就是直接省略 typeid 属性。


最简单的方法(省略 typeid

这是最直接的方式,适用于所有需要调用当前栏目文章的场景,如首页、列表页等。

代码示例:

dede arclist 当前栏目
(图片来源网络,侵删)
{dede:arclist titlelen='40' 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='40'`: 限制标题长度为40个字符(一个汉字算2个字符)。
  • row='10': 调用10篇文章。
  • [field:arcurl/]: 输出文章的链接地址。
  • [field:title/]: 输出文章的标题。
  • [field:pubdate ...]: 输出文章的发布日期,并用 function="MyDate('Y-m-d',@me)" 格式化为 年-月-日 的格式。
  • 调用文章列表的结束标签。

因为这里没有指定 typeid,所以系统会自动判断当前所在的栏目,并调用该栏目下的文章。


明确指定当前栏目ID(适用于特定场景)

在某些复杂模板中,你可能希望代码更具可读性,或者明确地传递栏目ID,这时,你可以使用 {dede:global} 标签来获取当前栏目的ID,然后赋值给 typeid

代码示例:

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

代码解析:

  • typeid='{dede:global.typeid/}': 这里我们使用了全局变量 typeid,它会自动获取当前页面的栏目ID,并将其作为 typeid 的值传递给 arclist
  • 这种写法和方法一的效果完全一样,但有时在逻辑上更清晰。

常用属性补充

在实际使用中,你可能会用到更多的属性来控制输出内容,以下是一些最常用的属性:

属性名 说明 示例
typeid 核心属性:指定栏目ID,多个ID用英文逗号隔开,如 typeid='1,2' typeid='' (自动获取) 或 typeid='1'
row 调用文章的数量。 row='5' (调用5篇)
infolen 简介(长度。 infolen='200'
orderby 排序方式,常用值:pubdate (发布日期)、click (点击量)、id (文章ID)、sortrank (文章排序级别)。 orderby='pubdate'
orderway 排序方式。desc (降序,默认)、asc (升序)。 orderway='desc'
channelid 指定模型ID。1代表文章,2代表图集,以此类推。 channelid='1'
subday 调用指定天数内发布的文章。 subday='7' (调用7天内发布的文章)
idlist 调用指定ID的文章,多个ID用英文逗号隔开。 idlist='1,3,5'
noflag 排除特定标记的文章,如 noflag='h' 则不调用带有 h 标记的文章。 noflag='h'
flag 只调用带有特定标记的文章,如 flag='c' 则只调用推荐文章。 flag='c'

高级用法:调用当前栏目及其子栏目的文章

我们不仅需要当前栏目的文章,还需要它所有子栏目下的文章,这时就需要用到 son 属性。

场景: 在一个顶级栏目(如“新闻中心”)的列表页,我们希望同时显示“新闻中心”本身以及其下所有子栏目(如“国内新闻”、“国际新闻”)的文章。

代码示例:

{dede:arclist typeid='' row='20' orderby='pubdate' orderway='desc' noflag='h'}
    <li>
        <span class="category">[field:typename/]</span>
        <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}

关键点:

  • typeid='':保持为空,系统会自动获取当前栏目ID。
  • son='0':这是默认值,表示不包含子栏目,但我们不写这个属性,就默认是只调用当前栏目。
  • son='1':如果写成这样,则会调用当前栏目ID为顶级栏目下的所有子栏目文章,但这个用法比较局限,更推荐使用自定义SQL来实现更灵活的调用。

更灵活的调用方法(推荐):

{dede:arclist row='20' orderby='pubdate'}
    <li>
        <span class="category">[field:typename/]</span>
        <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}

当你在一个列表页(list_*.htm)使用这段代码时,它会自动调用当前栏目及其所有下级栏目的文章,这是 DedeCMS arclist 标签一个非常智能的特性。

需求 推荐代码 说明
仅调用当前栏目的文章 {dede:arclist row='10'}...{/dede:arclist} 最常用,直接省略 typeid 即可。
明确指定当前栏目 {dede:arclist typeid='{dede:global.typeid/}'}...{/dede:arclist} 逻辑更清晰,与方法一效果相同。
调用当前栏目及子栏目的文章 {dede:arclist row='10'}...{/dede:arclist} 在列表页使用时,会自动包含子栏目。

希望这份详细的解释能帮助你完全掌握在 DedeCMS 中使用 {dede:arclist} 调用当前栏目文章的方法!

-- 展开阅读全文 --
头像
织梦checklogin如何实现安全登录验证?
« 上一篇 2025-12-18
dede arclist标题长度如何设置?
下一篇 » 2025-12-18

相关文章

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