dede list如何修改typeid实现栏目调用?

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

下面我将从基础用法高级用法常见问题三个方面,详细讲解如何修改和使用 typeid

dede list修改typeid
(图片来源网络,侵删)

基础用法:指定单一栏目

这是最简单的用法,直接在 list 标签中指定一个栏目ID。

在模板文件中直接修改

打开你需要修改的列表页模板文件(通常位于 /templets/你的模板目录/ 目录下,list_article.htm)。

找到 list 标签,它通常是这样的:

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

修改方法:{dede:list} 标签中直接加上 typeid='栏目ID' 属性。

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

说明:

  • typeid='1':这里的 1 是你要调用栏目的ID,你需要登录DedeCMS后台,在【栏目管理】中找到你想要调用的栏目,查看其ID。
  • pagesize='10':表示每页显示10条文章,这个属性保持不变。

效果: 修改后,这个列表页将只显示栏目ID为1的所有文章,不再遵循系统默认的根据当前栏目ID来调用的规则。


高级用法:调用多个栏目或子栏目

在实际应用中,我们经常需要一次性调用多个栏目或某个栏目的所有子栏目的文章,这时就需要用到一些特殊的 typeid 值。

调用多个指定栏目(用逗号隔开)

如果你想同时显示栏目ID为1、3、5的文章,可以将ID用英文逗号隔开。

dede list修改typeid
(图片来源网络,侵删)
{dede:list typeid='1,3,5' pagesize='15'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
    </li>
{/dede:list}

效果: 列表页将同时显示栏目1、栏目3和栏目5下的文章。

调用指定栏目的所有子栏目(使用特殊值)

如果你想调用某个顶级栏目下的所有子栏目(包括所有层级的子栏目),而不是仅仅下一级子栏目,可以使用 typeid 的特殊值。

  • 调用所有子栏目(包括孙栏目):typeid 后面加上 @metypeid='1@me'

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

    说明: 假设栏目ID为1是一个顶级栏目,typeid='1@me' 会调用栏目1以及它所有下级栏目(ID为2、3、4...等)下的文章。

  • 只调用下一级子栏目(不包含孙栏目): 这种情况比较特殊,list 标签本身不直接支持,通常需要先通过 channel 标签获取子栏目ID,然后再传给 list 标签,但这比较复杂,一个更简单的方法是使用 arclist 标签来实现。

    {dede:arclist typeid='1' channelid='1' addfields='typeid'}
        <li>
            <!-- [field:typename/] 可以显示文章所属的栏目名 -->
            <span>[field:typename/]</span>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </li>
    {/dede:arclist}

    说明:

    • typeid='1':指定顶级栏目ID。
    • channelid='1':指定要查询的模型ID(通常文章模型为1)。
    • addfields='typeid':额外获取文章的 typeid 字段,以便用 [field:typename/] 显示栏目名。

常见问题与解决方案

问题1:为什么我修改了 typeid,页面没有变化?

可能的原因及解决方法:

  1. 开启了“仅动态列表”:在后台【系统】-> 系统基本参数 -> 核心设置 中,检查“列表命名规则”是否设置为 list_{tid}_{page}.html 这样的静态规则,如果设置了静态规则,DedeCMS会生成静态页面,你修改模板后,需要删除后台已生成的静态HTML文件,然后重新生成列表页才能看到效果。

    • 解决方法:进入【生成】-> HTML更新 -> 选择指定目录,找到对应的栏目,点击“开始生成”,或者直接删除 /html/ 目录下对应的静态文件。
  2. 缓存问题:DedeCMS有模板缓存机制。

    • 解决方法:在后台右上角点击【清空缓存】。
  3. 栏目ID错误:检查你填写的 typeid 值是否正确,去后台【栏目管理】里仔细核对一下目标栏目的ID。

  4. 权限问题:确保你调用的栏目是公开的,并且你当前登录的管理员账号有权限查看该栏目内容。

问题2:我想在首页调用指定栏目的文章,应该怎么做?

首页通常没有关联的栏目ID,所以直接使用 {dede:list} 是无效的,这时应该使用 {dede:arclist} 标签,它可以在任何地方调用文章列表。

{dede:arclist typeid='1' titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
    </li>
{/dede:arclist}

说明:

  • typeid='1':指定要调用的栏目ID,len='30'`:标题长度限制为30个字符。
  • row='10':调用10条文章。

问题3:typeidchannel 有什么区别?

  • typeid (栏目ID):用于指定所属的栏目。{dede:list}{dede:arclist} 都有这个属性,用来过滤出特定栏目下的文章。
  • channel (频道/模型ID):用于指定内容模型channelid='1' 通常表示调用“文章”模型,channelid='2' 表示调用“图集”模型,它是在模型层面进行筛选。

两者可以结合使用,例如调用“文章”模型中“栏目ID为1”的内容。


需求 typeid 写法 示例
调用单一栏目 typeid='栏目ID' {dede:list typeid='5'}
调用多个栏目 typeid='ID1,ID2,ID3' {dede:list typeid='2,7,9'}
调用顶级栏目及其所有子栏目 typeid='顶级栏目ID@me' {dede:list typeid='3@me'}
在首页调用指定栏目 使用 arclist {dede:arclist typeid='4'}

修改模板后,如果网站开启了静态生成,一定要重新生成对应的页面才能看到效果,希望这份详细的指南能帮助你解决 typeid 修改的问题!

-- 展开阅读全文 --
头像
typedef void是什么意思?
« 上一篇 2025-12-18
dede plus view静态如何生成与配置?
下一篇 » 2025-12-18

相关文章

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

目录[+]