织梦面包屑导航如何修改

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

下面我将从基础修改高级自定义,为你详细讲解如何修改面包屑导航。

织梦面包屑导航如何修改
(图片来源网络,侵删)

基础理解:面包屑标签是什么?

在织梦的模板文件(通常是 article_article.htm 文件详情页或 list_category.htm 列表页)中,你可能会找到这样一行代码:

{dede:field name='position' /}

这个 {dede:field name='position' /} 标签的作用就是自动生成面包屑导航,它会根据当前内容所在的栏目层级,自动生成类似 “首页 > 栏目A > 栏目B > 文章标题” 这样的链接结构。


修改面包屑的常见方式

直接修改模板标签(最简单)

这是最直接的方法,可以快速改变面包屑的显示样式。

  1. 找到模板文件

    织梦面包屑导航如何修改
    (图片来源网络,侵删)
    • 如果是文章详情页,路径通常是:/templets/你的模板名称/article_article.htm
    • 如果是栏目列表页,路径通常是:/templets/你的模板名称/list_category.htm
    • 如果是首页,路径通常是:/templets/你的模板名称/index.htm
  2. 修改标签代码

    • 默认样式:

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

      这会生成类似 “首页 > 首页 > 科技 > 互联网 > 一篇文章” 的效果(注意“首页”重复了)。

    • 修改分隔符: 默认的分隔符是 >,你可以通过修改标签来更换它。

      织梦面包屑导航如何修改
      (图片来源网络,侵删)
      {dede:field name='position' runphp='yes'}
          @me = str_replace(' > ', ' / ', @me);
      {/dede:field}

      这会将分隔符从 > 改为 ,效果如 “首页 / 科技 / 互联网 / 一篇文章”。

    • 修改样式(添加CSS类): 为了方便用CSS控制样式,可以给面包屑包裹一个 div 并添加类名。

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

      然后你就可以在CSS文件中定义 .breadcrumb 的样式了。


使用PHP代码自定义面包屑(最灵活)

如果你想完全控制面包屑的每一个部分,比如去掉文章标题、只显示栏目路径,或者改变链接的生成方式,就需要使用 runphp='yes' 属性来手动构建。

这是一个非常强大的技巧,下面以“只显示栏目路径,不显示文章标题”为例进行说明。

场景: 你希望面包屑显示为 “首页 > 科技 > 互联网”,而不是 “首页 > 科技 > 互联网 > 文章标题”。

操作步骤:

  1. 打开模板文件,找到 {dede:field name='position' /} 这一行。

  2. 替换为以下PHP代码:

    {dede:field name='position' runphp='yes'}
        // 获取原始的面包屑字符串,"首页 > 科技 > 互联网 > 文章标题"
        $position = @me;
        // 使用 ">" 分割字符串,得到一个数组
        $parts = explode(' > ', $position);
        // 去掉数组的最后一个元素(也就是文章标题)
        // array_pop() 会删除并返回数组的最后一个元素
        array_pop($parts);
        // 用 " > " 重新连接数组元素
        @me = implode(' > ', $parts);
    {/dede:field}

代码解释:

  • runphp='yes':开启PHP执行模式。
  • $position = @me;@me 变量代表了标签 {dede:field name='position' /} 原始输出的值,我们把它赋给一个变量 $position
  • explode(' > ', $position):用 > 作为分隔符,把长字符串拆分成一个数组。
  • array_pop($parts):删除数组的最后一个元素,这正是我们去掉文章标题的关键一步。
  • implode(' > ', $parts):把处理后的数组用 > 重新拼接成字符串。
  • @me = ...:将最终处理好的字符串重新赋值给 @me,标签就会输出这个新值。

其他自定义示例:

  • 在面包屑最后添加“当前页”:

    {dede:field name='position' runphp='yes'}
        $position = @me;
        $parts = explode(' > ', $position);
        array_pop($parts); // 去掉原标题
        @me = implode(' > ', $parts) . ' > <span class="current">当前页面</span>';
    {/dede:field}
  • 自定义首页链接文字:

    {dede:field name='position' runphp='yes'}
        $position = @me;
        // 将首页的文字从 "首页" 替换为 "Home"
        $position = str_replace('首页', 'Home', $position);
        @me = $position;
    {/dede:field}

修改系统函数(不推荐,除非你很熟悉)

如果你想从根源上改变面包屑的生成逻辑,可以修改织梦的核心文件。但强烈不建议新手这么做,因为升级织梦版本时,你的修改会被覆盖,且容易出错。

  1. 找到文件include/typelink.class.php
  2. 找到函数:在文件中找到 GetPosition() 方法,这个方法就是生成面包屑的核心。
  3. 修改逻辑:直接修改这个方法里的PHP代码。

再次强调: 除非你有特殊需求且无法通过模板标签实现,否则请优先使用方式二,它更安全、更灵活,且不会因系统升级而失效。


总结与建议

修改需求 推荐方法 优点 缺点
更换分隔符 方式一(修改标签) 简单快捷 不够灵活
添加CSS类 方式一(修改标签) 简单快捷 不够灵活
去掉文章标题 方式二(PHP自定义) 灵活、强大、安全 需要一点PHP基础
完全自定义结构 方式二(PHP自定义) 完全可控 需要PHP基础
从根本上改变逻辑 方式三(修改核心文件) 一劳永逸 危险,升级后失效,易出错

对于绝大多数用户来说,掌握方式二就足够解决99%的面包屑修改需求了,它既保留了织梦标签的便捷性,又提供了足够的自定义能力,是最佳实践。

-- 展开阅读全文 --
头像
c语言程序设计现代方法 pdf
« 上一篇 01-13
dede免费手机网站模板下载
下一篇 » 01-13

相关文章

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

目录[+]