织梦列表页如何调用当前位置?

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

基础用法:直接调用当前位置

在织梦的列表页模板文件(通常是 /templets/default/list_article.htm)中,你只需要在想要显示面包屑导航的地方,插入以下标签即可:

织梦列表页调用当前位置
(图片来源网络,侵删)
{dede:field name='position'/}

示例效果: 如果你的栏目结构是 首页 > 科技 > 互联网 > 前端开发,而你正在访问“前端开发”这个栏目的列表页,{dede:field name='position'/} 会输出: 首页 > 科技 > 互联网 > 前端开发


自定义美化:修改分隔符和样式

默认的 > 分隔符可能不符合你的网站设计风格,我们可以通过修改织梦的核心文件来实现自定义,或者使用更灵活的CSS方法。

修改核心文件(永久性修改)

这种方法会改变你整个网站所有 {dede:field name='position'/} 的显示效果。

  1. 找到核心文件 打开织梦的安装目录,找到文件:/include/helpers/extend.helper.php

    织梦列表页调用当前位置
    (图片来源网络,侵删)
  2. 找到并修改函数 在这个文件中,搜索 GetPosition() 函数,你会找到类似下面的代码:

    if(!function_exists('GetPosition'))
    {
        function GetPosition($nvar, $split = ' > ')
        {
            // ... 函数内部代码 ...
            return $restring;
        }
    }
  3. 修改参数 你可以看到,这个函数的第二个参数 $split 的默认值就是 ' > ',你可以直接在这里修改它。

    • 修改为斜杠 :将 $split = ' > ' 改为 $split = ' / '
    • 修改为竖线 :将 $split = ' > ' 改为 $split = ' | '
    • 修改为 :将 $split = ' > ' 改为 $split = ' » '

    修改后,保存文件并覆盖到服务器上,织梦的缓存机制可能会让你看不到即时效果,可以清空一下缓存再刷新页面。

使用CSS进行美化(推荐,更灵活)

这种方法不修改核心代码,只通过CSS来控制样式,更安全且灵活。

织梦列表页调用当前位置
(图片来源网络,侵删)
  1. 在模板中添加包裹标签 在你的列表页模板中,给 {dede:field name='position'/} 加一个 div 或其他HTML标签,并赋予一个class,方便我们用CSS来控制。

    <div class="breadcrumb">
        {dede:field name='position'/}
    </div>
  2. 编写CSS样式 在你的CSS文件(/templets/default/style.css)中,添加以下样式来美化这个面包屑导航。

    /* 面包屑导航容器样式 */
    .breadcrumb {
        font-size: 12px; /* 调整字体大小 */
        color: #666;    /* 调整文字颜色 */
        padding: 10px 0; /* 上下内边距 */
        margin-bottom: 15px; /* 下外边距,与下方内容隔开 */
    }
    /* 面包屑导航中的链接样式 */
    .breadcrumb a {
        color: #333; /* 链接默认颜色 */
        text-decoration: none; /* 去掉下划线 */
    }
    /* 链接的悬停效果 */
    .breadcrumb a:hover {
        color: #0066cc; /* 鼠标悬停时的颜色 */
        text-decoration: underline; /* 悬停时显示下划线 */
    }
    /* 使用CSS ::after 伪元素来动态添加分隔符,这是现代且推荐的做法 */
    .breadcrumb a:not(:last-child)::after {
        content: "/"; /* 这里可以改成任何你想要的分隔符,如 > | » */
        color: #999;  /* 分隔符的颜色 */
        padding: 0 8px; /* 分隔符左右的间距 */
    }

    使用CSS伪元素的好处:

    • 无需修改核心文件:安全,升级织梦时不会丢失修改。
    • 代码更简洁:HTML部分只需要一个标签,CSS自动处理最后一个链接后面的分隔符问题。
    • 易于维护:所有样式都集中在CSS文件中。

常见问题与解决方案

问题1:首页不想显示链接,只想显示“首页”文字

默认情况下,{dede:field name='position'/} 会把“首页”也变成一个链接,如果你只想让它显示为文字,可以使用 {dede:field name='position' function='str_replace("首页","首页",me)'/} 这种方法,但更推荐使用织梦的另一个标签组合。

推荐方案:使用 {dede:global name='cfg_cmspath'/}{dede:field name='title'/} 组合

<a href="{dede:global name='cfg_cmspath'/}">首页</a>{dede:field name='position' function='str_replace("首页","",me)'/}

工作原理:

  1. {dede:global name='cfg_cmspath'/}:获取你网站首页的URL地址。
  2. <a href="...">首页</a>:手动创建一个指向首页的链接。
  3. {dede:field name='position' function='str_replace("首页","",me)'/}:调用当前位置,但使用 str_replace 函数把字符串中的“首页”替换为空,从而去掉它。

这样就能实现“首页”是链接,而后续的栏目名中不再重复出现“首页”链接的效果。

问题2:当前位置为空,或者显示不正确

请检查以下几点:

  1. 栏目是否正确设置:确保你正在访问的栏目在后台“栏目管理”中已经正确设置,并且属于正确的父栏目。
  2. 模板文件是否正确:确认你修改的是正确的列表页模板文件(list_xxx.htmxxx 是栏目ID)。
  3. 是否有自定义字段冲突:检查你的自定义字段中是否有一个名为 position 的字段,这可能会与系统内置的 position 字段冲突。
  4. 清空缓存:登录织梦后台,点击“系统” -> “一键更新站点” -> “更新缓存”,然后刷新前台页面。

需求 推荐方案 代码示例
基础调用 使用默认标签 {dede:field name='position'/}
修改分隔符 推荐使用CSS伪元素 HTML: <div class="breadcrumb">{dede:field name='position'/}</div>
CSS: .breadcrumb a:not(:last-child)::after { content: "/"; }
首页文字化 组合使用全局变量和函数 <a href="{dede:global name='cfg_cmspath'/}">首页</a>{dede:field name='position' function='str_replace("首页","",me)'/}

对于大多数网站,“方法二:使用CSS进行美化” 结合 “常见问题1:首页文字化” 的方案,是最佳实践,因为它既灵活又安全。

-- 展开阅读全文 --
头像
织梦数据还原后数据去哪了?
« 上一篇 01-30
织梦后台如何更换网站模板?
下一篇 » 01-30

相关文章

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

目录[+]