dede导航标签调用怎么用?

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

核心标签:{dede:channel}

{dede:channel} 是专门用来调用栏目(频道)列表的标签,是制作主导航、侧边栏导航、子栏目导航等的首选。

dede导航标签调用
(图片来源网络,侵删)

基本语法

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

核心属性解析

  1. type (最重要): 指定调用的栏目类型。

    • top (默认值): 调用顶级栏目,这是制作网站主导航最常用的属性。
    • son: 调用当前栏目的子栏目,通常用于在文章列表页或内容页显示其下的子栏目。
    • self: 调用包括当前栏目及其子栏目的所有栏目。
    • sun: 调用指定栏目的子栏目,需要配合 typeid 属性使用。
    • global: 调用全局栏目,即所有层级的栏目。
  2. typeid: 指定调用的栏目ID。

    • type='son'type='sun' 时,typeid 是必须的,用来指定父栏目的ID。
    • 在其他情况下,可以留空。
  3. row: 调用栏目的数量。

    • row='8' 表示调用8个栏目。
  4. currentstyle: (非常实用) 为当前栏目所在的链接设置一个特殊的样式。

    dede导航标签调用
    (图片来源网络,侵删)
    • 这个属性可以让你轻松实现“高亮当前导航项”的效果。
    • 语法:currentstyle='<li class="active"><a href="~typelink~">~typename~</a></li>'
    • ~typelink~ 会被替换为 [field:typeurl/]
    • ~typename~ 会被替换为 [field:typename/]
  5. typeid: 指定栏目ID,通常与 type='son' 配合使用。

{dede:channel} 的常用字段(用[field:xxx/]调用)

  • [field:typename/]: 栏目名称。
  • [field:typeurl/]: 栏目链接地址。
  • [field:id/]: 栏目ID。
  • [field:seotitle/]: 栏目SEO标题。
  • [field:typenamess/]: 栏目简略名称。

常用导航调用场景与示例

场景1:网站主导航(调用顶级栏目)

这是最常见的用法,通常在网站的头部 header.htm 模板文件中使用。

示例代码:

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

效果解释:

dede导航标签调用
(图片来源网络,侵删)
  • type='top' 确保只调用顶级栏目。
  • row='8' 限制显示8个栏目。
  • currentstyle 实现了魔法效果:当用户访问某个栏目时,该栏目对应的 <li> 会自动加上 class="active" 属性,方便你用CSS来高亮显示(例如改变背景色或文字颜色)。

场景2:当前栏目的子栏目导航

常用于文章列表页(list_article.htm页(article_article.htm),显示当前栏目下的所有子栏目。

示例代码(在列表页模板中):

<div class="subnav">
    <h3>子栏目导航</h3>
    <ul>
        {dede:channel type='son' typeid=''}
            <li><a href="[field:typeurl/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
</div>

效果解释:

  • type='son' 表示调用子栏目。
  • typeid='' 这里留空,DedeCMS会自动获取当前页面的栏目ID作为父ID,非常智能。

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

面包屑导航通常显示为“首页 > 栏目A > 栏目B > 当前页面”,DedeCMS有专门的面包屑标签。

示例代码:

<div class="breadcrumb">
    <a href="{dede:global.cfg_cmsurl/}/">首页</a>
    {dede:field name='position'/}
</div>

效果解释:

  • {dede:global.cfg_cmsurl/} 调用网站根目录URL。
  • {dede:field name='position'/} 是DedeCMS的内置字段,它会自动根据当前页面的层级生成类似 > <a href='栏目A链接'>栏目A</a> > <a href='栏目B链接'>栏目B</a> 这样的HTML代码。

场景4:带栏目图片的导航

如果栏目设置了“栏目图片”,可以这样调用。

示例代码:

{dede:channel type='top' row='6'}
    <a href="[field:typeurl/]">
        <img src="[field:typedir function='str_replace("{cmspath}", "", "@me")'/]/images/logo.jpg" alt="[field:typename/]">
        <span>[field:typename/]</span>
    </a>
{/dede:channel}

注意: [field:typedir/] 是栏目的目录路径,你需要根据实际情况拼接出图片的完整路径,上面的 str_replace 是为了移除路径中的 {cmspath} 变量,使其成为相对路径,更稳妥的方式是在后台栏目管理中直接填写完整的图片URL。


场景5:调用指定栏目的同级栏目

你想在“产品中心”栏目页,显示“产品中心”的所有兄弟栏目(即同级的其他栏目)。

示例代码:

思路是先获取当前栏目的父栏目ID,然后调用该父栏目的子栏目。

{dede:channel type='son' typeid=''}
    {dede:global name='typeid' runphp='yes'}
        $dsql = new DedeSql(false);
        $reid = $dsql->GetOne("SELECT reid FROM `dede_arctype` WHERE id=@me");
        @me = $reid['reid'];
    {/dede:global}
    <ul>
        {dede:channel type='son' typeid='[field:global name='typeid'/]'}
            <li><a href="[field:typeurl/]">[field:typename/]</a></li>
        {/dede:channel}
    </ul>
{/dede:channel}

解释:

  1. 内层的 {dede:global name='typeid' runphp='yes'} 是一段PHP代码,它获取当前栏目的ID,然后查询数据库找到其父栏目的ID(reid),并将这个父ID赋值给全局变量。
  2. 外层的 {dede:channel type='son' typeid='...'} 使用这个获取到的父ID来调用其所有子栏目,也就是同级栏目。

补充:使用 {dede:arclist} 调用单页或外部链接

有些栏目可能不是文章列表,而是“单页内容”或“外部链接”。{dede:channel} 也能调用它们,但如果你想调用单页的内容,则需要使用 {dede:arclist}

示例:调用指定ID的单页内容

假设你有一个ID为1的单页栏目“关于我们”,想在首页显示其内容。

<h2>关于我们</h2>
{dede:arclist typeid='1' row='1'}
    [field:content/]
{/dede:arclist}
  • typeid='1' 指定栏目ID。
  • row='1' 只调用一篇文章(单页也只有一篇文章)。
  • [field:content/] 调用文章的内容。

总结与最佳实践

  1. 主导航/一级导航:优先使用 {dede:channel type='top' currentstyle='...'}
  2. 子栏目导航:优先使用 {dede:channel type='son'},在列表页和内容页中无需指定 typeid
  3. 面包屑导航:直接使用 {dede:field name='position'/}
  4. 高亮效果:务必掌握 currentstyle 属性,这是实现导航交互体验的关键。
  5. 灵活性:理解 typeidtype 的组合使用,可以调用出任何你想要的栏目结构。
  6. :如果需要显示栏目内容而非链接,请使用 {dede:arclist}

希望这份详细的指南能帮助你完全掌握DedeCMS的导航标签调用!如果还有更具体的需求,可以随时提出。

-- 展开阅读全文 --
头像
织梦5.7如何彻底去掉织梦链?
« 上一篇 04-05
dede多图上传错误怎么办?
下一篇 » 04-05

相关文章

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