织梦channel标签如何正确使用?

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

{dede:channel} 标签的基本语法

{dede:channel}标签有两种主要使用方式:单级栏目调用多级栏目调用(带子栏目)

单级栏目调用

这是最基本的形式,用于调用指定层级的栏目列表。

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

多级栏目调用(带子栏目)

这种形式可以调用出栏目及其下的所有子栏目,非常适合制作多级导航菜单。

{dede:channel type='son' typeid='top'}
    <li>
        <a href="[field:typelink/]">[field:typename/]</a>
        {dede:son row='5'}
            <a href="[field:typelink/]">[field:typename/]</a>
        {dede:son}
    </li>
{/dede:channel}

注意{dede:son} 标签必须放在 {dede:channel} 标签内部使用,用来获取当前栏目的子栏目。


常用属性解析

{dede:channel}标签的强大之处在于其丰富的属性,可以精确控制调用哪些栏目以及如何显示。

属性名 含义 可用值 示例
typeid 指定栏目ID 栏目的数字ID typeid='1' (调用ID为1的栏目及其子栏目)
type 指定栏目类型 top (顶级栏目), son (子栏目), self (同级栏目) type='top' (只调用顶级栏目)
row 调用栏目数量 正整数 row='10' (调用10个栏目)
currentstyle 当前栏目样式 HTML代码 currentstyle='<a href="[field:typelink/]" class="active">[field:typename/]</a>'
reid 指定父栏目ID 栏目的数字ID reid='5' (调用ID为5的栏目的所有子栏目)
col 分多少列显示 正整数 col='3' (将调用的栏目分3列显示)
tablespace 调用附加表前缀 字符串 tablespace='#@__arctype' (不常用,默认即可)
noself 是否包含本栏目 yesno noself='yes' (在调用子栏目时,不包含本栏目)

常用字段(变量)

在标签内部,使用[field:xxx/]来输出栏目的具体信息。

字段名 含义 示例
typename 栏目名称 [field:typename/]
typelink 栏目链接 [field:typelink/]
id 栏目ID [field:id/]
reid 父栏目ID [field:reid/]
topid 顶级栏目ID [field:topid/]
description 栏目描述 [field:description/]
seotitle [field:seotitle/]
litpic 栏目缩略图 <img src="[field:litpic/]" alt="[field:typename/]">

常见应用场景示例

场景1:制作网站主导航(只显示顶级栏目)

这是最常见的用法,通常放在网站的头部。

<!-- 默认首页 -->
<a href="{dede:global.cfg_cmsurl/}/" {dede:field name='typeid' runphp='yes'}(@me=='')? @me=" class='current' " : @me="";{/dede:field}>首页</a>
<!-- 调用顶级栏目,高亮显示当前栏目 -->
{dede:channel type='top' currentstyle="<a href='[field:typelink/]' class='active'>[field:typename/]</a>"}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}

说明

  • type='top' 确保只调用顶级栏目。
  • currentstyle 属性会自动判断当前页面所属的栏目,并将其链接替换为currentstyle中定义的HTML,并填充[field:typelink/][field:typename/],这是实现导航高亮的关键。

场景2:制作侧边栏“栏目推荐”

假设你想在侧边栏推荐“网站建设”这个栏目及其下的5个子栏目。

<h3>网站建设</h3>
<ul>
    {dede:channel typeid='1' type='son' noself='yes' row='5'}
        <li><a href="[field:typelink/]">[field:typename/]</a></li>
    {/dede:channel}
</ul>

说明

  • typeid='1' 假设“网站建设”栏目的ID是1。
  • type='son' 表示调用ID为1的栏目的子栏目。
  • noself='yes' 表示不显示“网站建设”这个父栏目本身,只显示子栏目。

场景3:制作面包屑导航(当前位置)

面包屑导航通常使用{dede:field name='position'/}标签,但它内部也是通过{dede:channel}的逻辑来实现的,你不需要手动写{dede:channel},直接使用官方提供的标签即可。

{dede:field name='position'/}

输出效果首页 > 技术文章 > 织梦教程

场景4:制作带缩略图的多级栏目列表

调用顶级栏目,并在每个栏目下显示其子栏目和子栏目的缩略图。

{dede:channel type='top' row='4'}
    <div class="category-box">
        <h2><a href="[field:typelink/]">[field:typename/]</a></h2>
        <div class="sub-category">
            {dede:son row='6'}
                <dl>
                    <dt><a href="[field:typelink/]"><img src="[field:litpic/]" alt="[field:typename/]"></a></dt>
                    <dd><a href="[field:typelink/]">[field:typename/]</a></dd>
                </dl>
            {dede:son}
        </div>
    </div>
{/dede:channel}

常见问题与注意事项

  1. 栏目ID在哪里找? 登录织梦后台,【栏目管理】 -> 选择一个栏目 -> 查看,URL中的 cid= 后面的数字就是ID。

  2. 为什么调不出栏目?

    • 检查typeidreid的ID是否正确。
    • 检查type属性是否符合你的需求(top, son, self)。
    • 检查栏目是否被隐藏(在后台栏目编辑中,有“隐藏”选项)。
    • 检查模板标签是否拼写错误,特别是{dede:channel}{/dede:channel}要成对出现。
  3. currentstyle不生效怎么办?

    • 确保你正在访问的是一个属于该栏目的页面(比如文章列表页或内容页)。
    • 检查currentstyle的语法是否正确,它是一个完整的<a>
    • 有时JS或CSS的权重问题会覆盖currentstyle添加的类名,需要检查CSS样式。
  4. {dede:son}{dede:channel type='son' ...}有什么区别?

    • {dede:son}{dede:channel}的内部标签,必须嵌套在{dede:channel}内部,它只负责获取当前父栏目的子栏目。
    • {dede:channel type='son' ...}是一个独立的标签,它可以通过typeidreid直接指定任何一个父栏目来调用其子栏目。

希望这份详细的解析能帮助你完全掌握织梦的{dede:channel}

-- 展开阅读全文 --
头像
织梦安装ueditor
« 上一篇 02-12
dede搜索框模板文件在哪
下一篇 » 02-12
取消
微信二维码
支付宝二维码