织梦typeid属性如何正确调用与使用?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

typeid 是织梦模板引擎中用于获取和显示特定栏目内容的核心属性,它的作用就是告诉系统:“我需要获取 IDtypeid 值的那个栏目的信息或列表。”

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

typeid 的基本作用和用途

typeid 主要用在以下几种场景:

  1. 获取指定栏目的基本信息:如栏目名称、栏目描述、栏目链接、栏目封面图等。
  2. 获取指定栏目的文章列表:显示某个特定栏目下的所有文章或子栏目。
  3. 面包屑导航:在页面中生成从首页到当前栏目的导航路径。
  4. 作为列表页和内容页的全局变量:在列表页和文章内容页,系统会自动将当前栏目ID赋值给 typeid 变量。

typeid 的核心语法

typeid 通常与织梦的内置函数一起使用,最常用的函数是 GetTopTypename()GetTypeLink()

获取栏目名称

这是最常见的用法,通常用于面包屑导航或页面标题。

  • 语法:

    织梦typeid属性
    (图片来源网络,侵删)
    {dede:field name='typename'/}
    • 说明: 这个标签会直接输出当前栏目的名称,它不需要 typeid 参数,因为在列表页和内容页,系统已经自动将当前栏目ID赋给了 typeid,但在其他非当前栏目页面,你需要手动指定。
  • 手动指定 typeid 获取栏目名称: 如果你需要在首页或其他页面显示某个特定栏目的名称,你需要结合 typeidGetTopTypename() 函数。

    {dede: typeid='栏目ID', function='GetTopTypename(@me)'/}
    • 示例: 假设“公司新闻”栏目的ID是 3,想在首页显示它。
      <a href="/plus/list.php?tid=3">公司新闻</a>

      用织梦标签可以这样写(虽然直接写链接更简单,但这个方法能获取栏目名称):

      <a href="{dede: typeid='3', function='GetTypeUrl(@me)'/}">{dede: typeid='3', function='GetTopTypename(@me)'/}</a>
    • 更简洁的写法: 我们更常用 {dede:arclist}{dede:channel} 等标签来获取栏目信息,而不是单独用 typeid

获取栏目链接

  • 语法:
    {dede:field name='typeurl'/}
    • 说明: 同样,这个标签在列表页和内容页会自动输出当前栏目的链接,它不需要手动指定 typeid

在列表标签中使用 typeid

这是 typeid 最强大的应用场景之一,你可以使用 typeid 来指定 {dede:arclist}(文章列表)或 {dede:channel}(栏目列表)等标签的数据来源。

  • {dede:arclist} 中使用 typeid:

    • 作用: 只显示指定栏目及其所有子栏目的文章。
    • 语法:
      {dede:arclist typeid='栏目ID' titlelen='30' row='10'}
          <li>
              <a href="[field:arcurl/]">[field:title/]</a>
              <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
          </li>
      {/dede:arclist}
    • 示例: 在首页显示“产品中心”(ID为 5)栏目下的所有文章。
      <h2>产品中心</h2>
      <ul>
          {dede:arclist typeid='5' titlelen='30' row='8'}
              <li>
                  <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
              </li>
          {/dede:arclist}
      </ul>
    • 重要提示: typeid 指定的栏目有子栏目,{dede:arclist} 默认会同时显示该栏目和其所有下级栏目的文章,如果只想显示当前栏目本身的文章,需要添加 channelid 属性,并且其值与 typeid 相同。
      {dede:arclist typeid='5' channelid='5' ...}

      这里的 channelid 用于限定频道模型,与 typeid 结合使用可以精确控制范围。

  • {dede:channel} 中使用 typeid:

    • 作用: 只显示指定栏目及其所有子栏目。
    • 语法:
      {dede:channel typeid='栏目ID' type='son' row='8'}
          <li>
              <a href="[field:typeurl/]">[field:typename/]</a>
          </li>
      {/dede:channel}
    • 参数说明:
      • typeid: 指定父栏目的ID。
      • type='son': 表示只显示子栏目。type='self',则只显示栏目本身(无子栏目)。
    • 示例: 在“关于我们”(ID为 2)页面,显示其所有子栏目(如“公司简介”、“发展历程”等)。
      <h3>更多内容</h3>
      <ul>
          {dede:channel typeid='2' type='son'}
              <li><a href="[field:typeurl/]">[field:typename/]</a></li>
          {/dede:channel}
      </ul>

typeid 在不同页面中的默认值

理解 typeid 的默认行为非常重要:

  • 首页 (index.html):

    • typeid 默认为 0,代表“首页”这个顶级栏目,使用 typeid='0' 通常可以获取全站的顶级栏目。
  • 列表页 (plus/list.php?tid=xxx):

    • typeid 的值就是URL中的 tid 参数值,即当前栏目的ID,所有 {dede:field name='...'} 和不需要指定 typeid 的列表标签,都默认基于这个值工作。
  • 内容页 (plus/view.php?aid=xxx):

    • typeid 的值是当前文章所属的栏目ID,这使得在文章页面包屑导航 {dede:field name='position'/} 和调用相关文章时,系统能准确定位。

typeidtypeid2 的区别

  • typeid: 用于单级栏目分类,它指定一个主栏目ID。
  • typeid2: 用于二级栏目或多级联动分类,它指定的是二级栏目的ID,通常与 typeid 配合使用,表示 typeid 是一级栏目,typeid2 是从属于 typeid 的二级栏目。

示例场景: 一个房产网站,有“区域”(一级栏目)和“房型”(二级栏目)两个联动分类。

  • typeid: 区域ID (如 10 代表“浦东”)
  • typeid2: 房型 ID (如 20 代表“两房”)

在搜索或列表标签中,你可以同时使用它们来筛选数据。


最佳实践与常见问题

如何在首页调用指定栏目及其子栏目的文章?

这是非常常见的需求,结合 typeidchannelid 即可。

<!-- 假设“新闻动态”栏目ID为 4 -->
<h2>新闻动态</h2>
<ul>
    {dede:arclist typeid='4' channelid='4' row='10' titlelen='40'}
        <li>
            <span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
        </li>
    {/dede:arclist}
</ul>
  • typeid='4': 告诉 arclist 从ID为4的栏目及其子栏目取数据。
  • channelid='4': 限定只取“文章”模型(假设4是文章模型栏目)下的数据,避免混入其他模型。

为什么我的 typeid 指定后没有内容?

  • 检查ID是否正确: 确保你填写的 typeid 值是正确的栏目ID,可以去后台“栏目管理”里核对。
  • 检查栏目是否有内容: 确保该栏目下已经发布了文章。
  • 检查标签语法: 确保标签没有拼写错误,如 typeid 写成了 typeid
  • 检查模型是否匹配: 如果使用了 channelid,确保 typeid 指定的栏目模型与 channelid 匹配。

typeid 是织梦CMS中连接模板与数据的核心桥梁,掌握它的用法,是进行织梦二次开发和模板制作的基础,记住以下几点:

  • 核心功能: 指定栏目ID,用于获取栏目信息或文章列表。
  • 自动赋值: 在列表页和内容页,typeid 会自动被设置为当前栏目的ID。
  • 手动指定: 在首页等非栏目页面,需要手动给 typeid 赋值来调用特定栏目的数据。
  • 结合函数: 常与 GetTopTypename(), GetTypeUrl() 等函数配合使用。
  • 精确控制: 在 {dede:arclist} 中使用 channelid 可以精确控制文章的来源范围。
-- 展开阅读全文 --
头像
织梦UTF与GBK编码如何切换?
« 上一篇 04-04
dede模板交易平台可靠吗?
下一篇 » 04-04

相关文章

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

目录[+]