dede list中typeid如何正确使用?

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

typeid 是什么?

typeiddede:list 标签的一个核心属性,它的作用是指定当前列表页要显示的内容所属的栏目 ID

dede list 中的typeid
(图片来源网络,侵删)

typeid 就像一个“筛选器”,告诉 DedeCMS:“请只从这个指定的栏目里,把文章调出来,生成一个列表。”


typeid 的基本语法

在模板文件(通常是 list_栏目ID.htm)中,typeid 通常这样使用:

{dede:list typeid='栏目ID' pagesize='10'}
    <a href="[field:arcurl/]">[field:title/]</a>
    <p>[field:description function='cn_substr(@me,100)'/]...</p>
    <span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
{/dede:list}

参数说明:

  • typeid='栏目ID': 这是最关键的部分。栏目ID 是你要调用内容的那个栏目的数字 ID。typeid='2' 就表示调用 ID 为 2 的栏目下的文章。
  • pagesize='10': 这个参数与 typeid 并列,表示每页显示的文章数量,不是 typeid 的一部分,但经常一起使用。

typeid 的核心功能与常见用法

基本用法:指定单个栏目

这是最直接、最常见的方式,你明确知道要显示哪个栏目的内容。

dede list 中的typeid
(图片来源网络,侵删)

场景: 你有一个名为“公司新闻”的栏目,其 ID 为 3,你希望创建一个专门展示“公司新闻”的列表页。

操作:

  1. 在后台 -> 栏目管理 -> 找到“公司新闻”栏目,记下其 ID(假设为 3)。
  2. 在模板文件夹中,创建或编辑 list_3.htm 文件。
  3. 在模板文件中,使用 {dede:list typeid='3' ...}

示例代码 (list_3.htm):

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

这样,这个页面就会只显示 ID 为 3 的“公司新闻”栏目下的文章列表。

dede list 中的typeid
(图片来源网络,侵删)

调用子栏目内容(重要功能)

这是 typeid 一个非常强大的功能,当你指定一个栏目的 ID 时,typeid 默认会同时调用该栏目及其所有一级子栏目下的文章。

场景: 你有一个“产品中心”栏目(ID 为 5),它下面有三个子栏目:“手机”(ID 6)、“电脑”(ID 7)、“配件”(ID 8),你希望创建一个页面,能同时展示所有产品的列表。

操作:

  1. 在后台找到“产品中心”栏目的 ID(假设为 5)。
  2. 创建或编辑 list_5.htm 文件。
  3. 在模板文件中,使用 {dede:list typeid='5' ...}

示例代码 (list_5.htm):

<h2>所有产品</h2>
<ul>
    {dede:list typeid='5' pagesize='15'}
        <li>
            <a href="[field:arcurl/]" title="[field:title/]">
                <img src="[field:litpic/]" alt="[field:title/]">
                <h3>[field:title/]</h3>
            </a>
        </li>
    {/dede:list}
</ul>

这样,这个页面会同时显示 ID 为 6、7、8 的子栏目下的所有文章,就好像它们都在一个“产品总览”栏目下一样。

调用多个栏目的内容

如果你需要同时调用不相关的几个栏目的内容(同时调用“新闻”和“公告”),可以在 typeid 中用英文逗号 隔开多个栏目 ID。

场景: 你想在首页的某个位置同时显示“新闻”栏目(ID 2)和“公告”栏目(ID 4)的最新文章。

操作: 在首页模板文件(index.htm)中,使用 {dede:list typeid='2,4' ...}

示例代码 (首页模板片段):

<div class="news-announcements">
    <h3>新闻与公告</h3>
    <ul>
        {dede:list typeid='2,4' pagesize='8'}
            <li><a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function='MyDate("m-d",@me)'/]</span></li>
        {/dede:list}
    </ul>
</div>

这样,这个列表就会混合显示 ID 为 2 和 ID 为 4 的栏目下的文章。


重要注意事项与最佳实践

  1. 栏目 ID 的获取:

    • 最直接的方法是进入 DedeCMS 后台,点击【栏目管理】,鼠标移动到目标栏目名称上,浏览器状态栏或浏览器开发者工具的 Elements 面板中可以看到链接里包含的 cid=数字,这个数字就是 ID。
    • 也可以直接查看数据库 dede_arctype 表,id 字段就是栏目 ID。
  2. typeid 的默认值:

    • 当你在 list_栏目ID.htm 这样的模板文件中使用 {dede:list} 标签时,即使你不写 typeid 参数,DedeCMS 也会默认使用当前页面对应的栏目 ID。
    • list_3.htm 中,{dede:list}{dede:list typeid='3'} 的效果是一样的,但在其他页面(如首页)中调用时,则必须指定 typeid
  3. 性能考虑:

    • 调用子栏目(typeid='5')比调用单个栏目(typeid='6')会产生更多的数据库查询,因为需要查询多个表。
    • 调用过多不相关的栏目(typeid='1,2,3,4,5,6')也会影响页面加载速度,应尽量避免在一个列表中调用过多无关的栏目。
  4. arclist 标签的区别:

    • dede:list 必须在列表页模板(list_xxx.htm)中使用,用于生成分页的列表。
    • dede:arclist 更加灵活,可以在任何页面(首页、列表页、内容页)使用,用于调用文章列表,但它不支持分页
    • typeid 在这两个标签中的含义和用法基本一致,都是用来指定栏目。
用法 typeid 值示例 功能描述
单个栏目 typeid='3' 只显示 ID 为 3 的栏目下的文章。
包含子栏目 typeid='5' 显示 ID 为 5 的栏目及其所有一级子栏目下的文章。
多个栏目 typeid='2,4' 混合显示 ID 为 2 和 4 的两个栏目下的文章。
不指定(在列表页) 默认使用当前列表页面对应的栏目 ID。

掌握 typeid 的用法是灵活运用 DedeCMS list 标签的关键,能够帮助你高效地构建各种复杂的网站布局。

-- 展开阅读全文 --
头像
云织梦2025 PHP教程有何新亮点?
« 上一篇 2025-12-11
织梦CMS列表页数字样式如何修改?
下一篇 » 2025-12-11

相关文章

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

目录[+]