织梦dede typeid如何正确调用栏目ID?

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

typeid 是织梦模板标签中最核心、最常用的参数之一,它的作用是指定要获取内容的数据栏目(或频道)的ID

织梦dede typeid
(图片来源网络,侵删)

几乎所有需要调用文章、列表、栏目信息的地方,都需要用到 typeid 来告诉系统:“我要从哪个栏目里拿数据”。


typeid 的基本概念

  • 全称: typeid (type ID 的缩写)
  • 含义: 栏目ID,每个在后台创建的栏目,都有一个唯一的ID编号。
  • 作用域: 广泛应用于织梦的列表页模板、首页模板、文章页模板等,用于限定数据查询的范围。

如何获取 typeid 的值?

在制作模板时,你需要先知道目标栏目的ID,获取方法非常简单:

  1. 登录织梦DedeCMS后台。
  2. 进入「核心」 -> 「栏目管理」。
  3. 找到你想要调用的那个栏目,将鼠标光标悬停在该栏目名称上。
  4. 浏览器左下角的状态栏会显示该栏目的编辑链接,.../dede/editype.php?id=2
  5. 这个链接中的 id=2 就是该栏目的 typeid,这里的值就是 2

typeid 在常用标签中的使用

typeid 的使用方式会根据不同的标签而略有不同。

a. 在列表页模板中使用 ({dede:list})

这是 typeid 最经典的应用场景,在栏目列表页(如 list_article.htm),你需要用 typeid 来指定当前栏目应该显示哪些文章。

织梦dede typeid
(图片来源网络,侵删)

语法:

{dede:list typeid='栏目ID' pagesize='20'}
    <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}

示例: 假设你要调用ID为 3 的“技术分享”栏目的文章列表,typeid 的写法如下:

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

重要提示: 在列表页模板中,typeid 参数通常是可选的,如果你不填写 typeid,织梦会自动获取当前页面对应的栏目ID,但在实际开发中,显式地写上 typeid 是一个非常好的习惯,它能让你的模板逻辑更清晰,避免因模板嵌套等原因产生的错误。

b. 在首页模板中使用 ({dede:arclist})

在首页模板中,你可能需要调用不同栏目的文章,这时 typeid 就变得至关重要。

织梦dede typeid
(图片来源网络,侵删)

语法:

{dede:arclist typeid='栏目ID1,栏目ID2' titlelen='30' row='10'}
    <a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}

示例: 假设首页需要同时显示ID为 2 的“行业动态”和ID为 3 的“技术分享”两个栏目的最新文章,可以用逗号隔开:

<h3>最新资讯</h3>
<ul>
    {dede:arclist typeid='2,3' titlelen='40' row='8'}
        <li><span class='date'>[field:pubdate function='MyDate('m-d',@me)'/]</span><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
</ul>

高级用法:

  • 排除某个栏目: 如果你想调用除了某个栏目外的所有栏目,可以使用 notypeid
    {dede:arclist notypeid='5' row='10'}
        ...
    {/dede:arclist}

    上述代码会调用除了ID为 5 的栏目以外的所有栏目的文章。

c. 在文章页模板中使用 ({dede:field})

页(如 article_article.htm),你可能需要获取当前文章所属的栏目名称栏目链接,这时 typeid 就是当前文章所在栏目的ID。

语法:

{dede:field name='typeid' /}

这个标签会直接输出当前文章的栏目ID(数字),但通常我们更需要的是栏目名称和链接。

常用组合: 获取当前栏目的名称:

{dede:field name='typename' /}

获取当前栏目的链接:

<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>

这里的 {dede:field name='typeid'} 是由系统自动赋值的,你无需手动指定。

d. 在栏目导航标签中使用 ({dede:channel})

{dede:channel} 用于生成栏目导航。typeid 用于指定从哪个栏目开始显示其子栏目。

语法:

{dede:channel typeid='上级栏目ID' type='son' currentstyle='<li class='thisclass'><a href='~typelink~'>~typename~</a></li>'}
    <li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}

示例: 假设网站的“产品中心”栏目ID为 6,它下面有多个子栏目,要在首页显示“产品中心”下的所有子栏目,可以这样写:

<div class="product-nav">
    <ul>
        {dede:channel typeid='6' type='son'}
            <li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
</div>
  • typeid='6': 指定从ID为 6 的栏目开始查找。
  • type='son': 表示只查找其子栏目,如果用 type='self',则包含自己和子栏目。

特殊值和技巧

  • typeid='0':

    • {dede:arclist} 中,typeid='0' 表示调用所有频道(包括所有顶级栏目和普通栏目)下的内容。
    • {dede:list} 中,通常不使用 typeid='0',因为没有实际意义。
  • typeid='top':

    • {dede:arclist} 中,typeid='top' 表示调用所有顶级栏目(一级栏目)下的内容。
    • 这是一个非常实用的技巧,用于调用全站所有主栏目的最新内容。
  • 动态获取栏目ID: 在某些复杂场景下,你可能需要通过PHP代码来动态获取 typeid,尤其是在制作自定义页面时。

    <?php
    $typeid = isset($typeid) ? $typeid : 0;
    // 或者
    $typeid = $GLOBALS['typeid'];
    ?>

    然后在标签中使用这个PHP变量:

    {dede:list typeid='<?php echo $typeid; ?>'}
        ...
    {/dede:list}

使用场景 标签名 typeid 作用 示例
列表页 {dede:list} 指定当前列表页要显示的文章所属栏目(可省略,但建议写明) {dede:list typeid='3'}
首页/其他页 {dede:arclist} 指定要调用的文章来自哪些栏目,可多个 {dede:arclist typeid='2,3'}
文章页 {dede:field} 代表当前文章所在的栏目ID(系统自动赋值) {dede:field name='typeid'}
子栏目列表 {dede:channel} 指定从哪个栏目开始获取其子栏目 {dede:channel typeid='6' type='son'}

掌握 typeid 的用法是织梦模板开发的基石,理解它能让你精准地控制内容的显示范围,从而构建出结构清晰、内容丰富的网站。

-- 展开阅读全文 --
头像
dede分页如何改成ajax实现?
« 上一篇 今天
dede tag英文路径如何设置?
下一篇 » 今天

相关文章

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

目录[+]