织梦CMS如何调用栏目?

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

下面我将从基础到高级,详细讲解各种调用栏目的方法,并提供清晰的示例。

织梦cms 调用栏目
(图片来源网络,侵删)

最常用的标签:{dede:channel}

{dede:channel} 是专门用于调用栏目的标签,功能强大,参数丰富。

基础调用:获取所有顶级栏目

这是最简单的用法,会列出系统中所有的顶级栏目。

语法:

{dede:channel type='top'}
    <a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}

参数说明:

织梦cms 调用栏目
(图片来源网络,侵删)
  • type='top': 指定只调用顶级栏目,这是最常用的参数。

示例: 假设你的网站有“首页”、“公司简介”、“产品中心”、“新闻中心”、“联系我们”这几个顶级栏目,上面的代码会输出:

<a href="/plus/list.php?tid=1">公司简介</a>
<a href="/plus/list.php?tid=2">产品中心</a>
<a href="/plus/list.php?tid=3">新闻中心</a>
<a href="/plus/list.php?tid=4">联系我们</a>

(注意:首页通常不通过 channel 标签调用,而是直接写 <a href="/">首页</a>

调用指定层级的栏目

如果你想调用顶级栏目下的子栏目,可以使用 sonself 参数。

调用顶级栏目下的所有子栏目 (type='son') son 表示调用指定栏目的直接子栏目,你需要通过 typeid 参数指定父栏目的ID。

织梦cms 调用栏目
(图片来源网络,侵删)

语法:

{dede:channel type='son' typeid='2'}
    <a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
  • typeid='2': 这里假设“产品中心”栏目的ID是2,这段代码会调用出“产品中心”下的所有子栏目。

调用与指定栏目同级的栏目 (type='self') self 表示调用与指定栏目同级的所有栏目,包括它自己。

语法:

{dede:channel type='self' typeid='2'}
    <a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
  • typeid='2': 假设当前在“产品中心”栏目,这段代码会列出“产品中心”以及它同级的其他所有顶级栏目。

带样式的调用与当前栏目高亮

在实际开发中,我们经常需要给栏目添加样式,并且让当前所在的栏目高亮显示。

语法:

{dede:channel type='top' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
    <li><a href="[field:typeurl/]">[field:typename/]</a></li>
{/dede:channel}

参数说明:

  • currentstyle: 这个参数非常实用,当循环到的栏目是当前页面所在栏目时,会使用 currentstyle 里的内容来渲染,而不是使用默认的 <li>
  • ~typename~~typelink~: 在 currentstyle 中,使用 包裹的字段名会被替换成对应的值,~typename~ 会被替换成栏目名称,~typelink~ 会被替换成栏目链接。

示例输出:

  • 如果当前页面在“新闻中心”(假设ID=3),那么输出会是:
    <li><a href="/plus/list.php?tid=1">公司简介</a></li>
    <li><a href="/plus/list.php?tid=2">产品中心</a></li>
    <li class="active"><a href="/plus/list.php?tid=3">新闻中心</a></li>
    <li><a href="/plus/list.php?tid=4">联系我们</a></li>

递归调用子栏目:{dede:channelartlist}

这个标签用于递归调用栏目及其所有层级的子栏目,非常适合用来生成多级导航菜单。

语法:

{dede:channelartlist}
    <dl>
        <dt><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></dt>
        <dd>
            {dede:channel type='son'}
                <a href="[field:typeurl/]">[field:typename/]</a>
            {/dede:channel}
        </dd>
    </dl>
{/dede:channelartlist}

工作原理:

  1. {dede:channelartlist} 会循环遍历所有顶级栏目。
  2. 对于每一个顶级栏目,它会输出 <dt> 中的内容(即顶级栏目名称和链接)。
  3. <dd> 中,嵌套使用了 {dede:channel type='son'} 来调用当前顶级栏目下的直接子栏目。

示例输出(假设“产品中心”有“产品A”和“产品B”两个子栏目):

<dl>
    <dt><a href="/plus/list.php?tid=1">公司简介</a></dt>
    <dd>
        <!-- 没有子栏目,此处为空 -->
    </dd>
</dl>
<dl>
    <dt><a href="/plus/list.php?tid=2">产品中心</a></dt>
    <dd>
        <a href="/plus/list.php?tid=5">产品A</a>
        <a href="/plus/list.php?tid=6">产品B</a>
    </dd>
</dl>
<dl>
    <dt><a href="/plus/list.php?tid=3">新闻中心</a></dt>
    <dd>
        <!-- 没有子栏目,此处为空 -->
    </dd>
</dl>

注意{dede:channelartlist} 默认只调用顶级栏目,如果你需要调用所有层级的栏目(无限级),可以配合 channel 标签的 son 属性,并在后台栏目设置中开启“支持多级目录”选项。


调用指定栏目(常用于首页调用某个栏目内容)

有时候我们想在首页或某个页面调用特定栏目,而不是所有栏目,这时可以使用 typeid 参数。

调用指定栏目(及其子栏目)的文章列表

使用 {dede:arclist} 标签,并通过 typeid 指定栏目ID。

语法:

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

参数说明:

  • typeid='3': 指定调用ID为3的栏目下的文章,如果调用该栏目及其所有子栏目的文章,需要设置 typeid='3,5,6' 或者使用 typeid='3' 并在后台栏目设置中开启“包含子栏目”,len='30'`: 标题长度,截取30个字符。
  • row='5': 调用5条文章。

调用指定栏目(及其子栏目)的子栏目列表

使用 {dede:channel} 标签,并通过 typeid 指定父栏目ID。

语法:

{dede:channel typeid='2' type='son'}
    <a href="[field:typeurl/]">[field:typename/]</a> |
{/dede:channel}
  • typeid='2': 指定调用ID为2的栏目下的子栏目。

调用栏目相关信息(如栏目名称、简介等)

在模板中,你可能需要获取当前栏目的名称、描述、关键词等信息,可以使用 {dede:field}

语法:

<h1>{dede:field name='typename'/}</h1>
<p>{dede:field name='description' function='htmlspecialchars(@me)'/}</p>
<meta name="keywords" content="{dede:field name='keywords'/}">

常用 field 字段:

  • typename: 栏目名称
  • description: 栏目描述
  • keywords: 栏目关键词
  • id: 栏目ID
  • typedir: 栏目目录
  • seotitle: 栏目SEO标题

总结与速查表

主要用途 常用参数 示例
{dede:channel} 调用栏目列表(最常用) type='top' (顶级), type='son' (子栏目), typeid='x' (指定栏目), currentstyle='...' (当前样式高亮) {dede:channel type='top' currentstyle...}
{dede:channelartlist} 递归调用多级栏目,适合制作多级导航 {dede:channelartlist}<dt>...{dede:channel type='son'}...{/dede:channel}</dt>...{/dede:channelartlist}
{dede:arclist} 调用文章列表,但可通过 typeid 指定栏目 typeid='x' (指定栏目), row='x' (条数), titlelen='x' (标题长度) {dede:arclist typeid='3' row='5'}
{dede:field} 调用当前栏目的单个信息 name='typename', name='description' <h1>{dede:field name='typename'/}</h1>

希望这份详细的指南能帮助你熟练掌握织梦CMS的栏目调用!如果遇到具体问题,可以提供你的模板代码和需求,我可以帮你进一步分析。

-- 展开阅读全文 --
头像
dede禁词设置入口在哪?
« 上一篇 04-12
C语言中isspace函数如何判断空白字符?
下一篇 » 04-12

相关文章

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