dede list标签typeid参数如何正确使用?

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

{dede:list} 标签是什么?

{dede:list} 是 DedeCMS 中最常用、最核心的列表标签之一,它的主要作用是获取并循环输出指定栏目(或频道)下的文章列表

dede list标签 typeid
(图片来源网络,侵删)

在网站的前端模板中,几乎所有需要展示文章列表的地方,比如首页、栏目页、搜索结果页等,都会用到这个标签。

它的基本语法结构如下:

{dede:list typeid='栏目ID' titlelen='标题长度' row='显示条数' ...}
    <!-- 循环体内的内容,通常用来显示单篇文章的信息 -->
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}

typeid 属性详解

typeid{dede:list} 标签中最关键、最常用的一个属性。

typeid 的作用

typeid 用于指定要获取文章列表的栏目 ID,DedeCMS 会从你指定的栏目中,提取其所有子栏目(包括自身)的文章,然后进行列表输出。

dede list标签 typeid
(图片来源网络,侵删)

typeid='栏目ID' 的意思就是:“请显示这个栏目及其所有下级栏目的文章列表”。

typeid 的用法

a) 指定单个栏目

这是最常见的用法,直接填入目标栏目的 ID 即可。

示例: 假设“公司新闻”栏目的 ID 是 2,你想在模板中显示该栏目下的文章列表。

dede list标签 typeid
(图片来源网络,侵删)
{dede:list typeid='2' row='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me, 30)'/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}

效果: 这段代码会从 ID 为 2 的“公司新闻”栏目中,获取最新的 10 篇文章,并以列表形式展示出来。

b) 指定多个栏目

如果你想同时从多个不同的栏目中获取文章列表,可以将栏目 ID 用英文逗号 隔开。

示例: 同时显示 ID 为 2 的“公司新闻”和 ID 为 3 的“行业动态”下的文章。

{dede:list typeid='2,3' row='15'}
    <!-- 循环内容同上 -->
{/dede:list}

效果: 这段代码会从“公司新闻”和“行业动态”这两个栏目中混合获取最新的 15 篇文章。

c) 不指定 typeid (默认行为)

如果你在 {dede:list} 标签中不写 typeid 属性,DedeCMS 会根据当前页面的上下文环境来决定显示哪个栏目的列表。

  • 在栏目页: 如果这个标签被用在栏目模板(如 list_article.htm)中,不写 typeid 默认就是显示当前栏目的文章列表。
  • 在首页: 如果在首页使用,不写 typeid 默认会显示网站首页所设定的“频道页”或“首页推荐”等栏目的文章列表(具体取决于后台的“首页调用”设置),为了明确,建议在首页调用时也显式指定 typeid

{dede:list} 的其他常用属性

除了 typeid{dede:list} 还有很多实用的属性,它们共同控制列表的显示效果。

属性名 作用 示例
typeid 指定栏目ID,核心属性。 typeid='2,3'
row 列表显示条数,即获取多少篇文章。 row='10' (显示10条)
infolen 摘要长度,截取文章摘要(description)的字符数。 infolen='200' (摘要最多显示200个字符)
orderby 排序方式,按什么字段排序,常用值:
sortrank (默认,按发布时间排序)
id (按文章ID排序)
click (按点击量排序)
orderby='click'
orderway 排序方向,升序或降序,常用值:
desc (默认,降序,最新的/点击量高的在前)
asc (升序,最旧的/点击量低的在前)
orderway='asc'
channelid 频道ID,用于指定特定模型的文章,默认为 1 (普通文章)。 channelid='1'
subday 天数筛选,只显示指定天数内发布的文章。 subday='30' (只显示30天内发布的文章)
limit 分页范围,用于自定义分页的起始和结束,格式为 '起始条数,结束条数' limit='0,10' (从第0条开始,取10条,等同于row='10')

综合实例

假设我们要做一个“产品中心”页面,这个页面属于 ID 为 5 的栏目,并且要显示该栏目及其所有下级栏目的产品,要求:

  1. 显示 12 条产品,最多显示 20 个字符。
  2. 按发布时间倒序排列。

模板代码如下:

<h2>产品中心</h2>
<ul class="product-list">
    {dede:list typeid='5' row='12' titlelen='20' orderby='sortrank' orderway='desc'}
        <li>
            <!-- 如果使用了缩略图模型,可以调用缩略图 -->
            <a href="[field:arcurl/]" title="[field:title/]">
                <img src="[field:litpic/]" alt="[field:title/]">
                <h3>[field:title/]</h3>
            </a>
            <p class="summary">[field:description function='cn_substr(@me, 100)'/]</p>
            <span class="date">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
        </li>
    {/dede:list}
</ul>
<!-- 如果列表分页,通常在 {dede:list} 标签后加上分页标签 -->
<div class="page-nav">
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    </div>

重要注意事项

  1. 栏目ID在哪里找? 在 DedeCMS 后台,进入【栏目管理】,将鼠标移动到你想要调用的栏目名称上,浏览器左下角状态栏会显示该栏目的链接,链接中的 cid= 后面的数字就是该栏目的 ID。

  2. {dede:list} vs {dede:arclist}

    • {dede:list}:主要用于栏目页,其核心是 typeid,必须指定栏目,它的底层逻辑是 GetList
    • {dede:arclist}:功能更强大、更灵活,可以用在任何地方,包括首页、栏目页等,它可以通过 typeid 指定栏目,也可以通过 channelid 指定模型,还可以通过 typeidson='true' 来实现类似 {dede:list} 的子栏目调用效果,在很多时候,两者可以互换,但 {dede:arclist} 的功能更全面。
  3. 性能考虑 在调用大量数据或层级很深的栏目时,typeid 的使用可能会对数据库造成一定压力,请确保你的 row 值设置合理,并配合 DedeCMS 的缓存功能使用,以保证网站速度。

希望这份详细的解析能帮助你完全掌握 dede list 标签的 typeid 属性!

-- 展开阅读全文 --
头像
dedecms织梦内容管理系统是什么?
« 上一篇 2025-12-12
织梦网址后加index.html有何作用?
下一篇 » 2025-12-12

相关文章

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

目录[+]