织梦如何调用当前位置

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

最常用、最标准的方法(推荐)

这是织梦官方提供的标准标签,适用于99%的场景,包括首页、列表页和内容页。

织梦如何调用当前位置
(图片来源网络,侵删)

标签代码

{dede:field name='position'/}

代码解析

  • {dede:field ...}:这是调用单值字段内容的标签。
  • name='position':指定要调用的字段名称为 position,这个字段在织梦的数据表里存储了当前页面的完整路径。

效果示例

假设你的网站结构是: 首页 -> 技术文章 -> 织梦CMS -> 如何调用当前位置

当你访问这篇“如何调用当前位置”的文章时,使用 {dede:field name='position'/} 会输出:

首页 > 技术文章 > 织梦CMS > 如何调用当前位置

> 是默认的分隔符。


自定义分隔符和链接样式

标准方法虽然方便,但样式比较单一,很多时候我们需要自定义分隔符,或者希望路径中的每个部分都是可点击的链接。

标签代码

{dede:field name='position' runphp='yes'}
    $tc = explode(' > ', @me);
    @me = '';
    for($i=0;$i<count($tc)-1;$i++){
        if($i<count($tc)-2){
            @me .= '<a href="'.GetOneTypeUrlA($tc[$i]).'">'.$tc[$i].'</a> <span> > </span> ';
        }else{
            @me .= '<a href="'.GetOneTypeUrlA($tc[$i]).'">'.$tc[$i].'</a> <span> > </span> ';
        }
    }
    @me .= trim($tc[count($tc)-1]);
{/dede:field}

代码解析

  1. runphp='yes':开启PHP执行功能,允许我们在标签内写PHP代码。
  2. $tc = explode(' > ', @me);:将默认的路径字符串(如“首页 > 技术文章”)按 > 分割成一个数组 $tc
  3. @me = '';:清空原始的 @me 变量,准备重新拼接内容。
  4. for($i=0;$i<count($tc)-1;$i++):循环遍历这个数组,-1 是为了跳过最后一个元素(即当前文章标题,它通常不需要链接)。
  5. GetOneTypeUrlA($tc[$i]):这是一个织梦内置的函数,用于根据栏目名获取其链接地址。
  6. @me .= '<a href='...'>...</a> <span> > </span> ';:将每个栏目名包裹在 <a> 标签中,并加上我们自定义的 <span> 分隔符。
  7. @me .= trim($tc[count($tc)-1]);:将数组的最后一个元素(当前页标题)直接拼接到后面,不加链接。

效果示例

使用上面的代码,输出会是HTML格式,方便你用CSS控制样式:

<a href="/">首页</a> <span> > </span> 
<a href="/ji shu wen zhang/">技术文章</a> <span> > </span> 
<a href="/ji shu wen zhang/zhimengcms/">织梦CMS</a> <span> > </span> 
如何调用当前位置

你可以轻松地通过CSS给 <a><span> 添加样式,

.breadcrumb a {
  color: #007bff;
  text-decoration: none;
}
.breadcrumb a:hover {
  text-decoration: underline;
}
.breadcrumb span {
  color: #999;
  margin: 0 5px;
}

更简洁的PHP循环写法

上面的方法虽然功能强大,但代码略显复杂,这里提供一个更简洁、同样功能强大的版本。

标签代码

{dede:field name='position' runphp='yes'}
    $arr = explode(' > ', @me);
    $result = '';
    for($i=0; $i<count($arr)-1; $i++){
        $result .= "<a href='".GetOneTypeUrlA($arr[$i])."'>".$arr[$i]."</a> <span> » </span> ";
    }
    $result .= end($arr);
    @me = $result;
{/dede:field}

与方法二的区别

  • 使用 $arr = explode(' > ', @me); 定义数组变量名更清晰。
  • 使用 end($arr) 函数来获取数组的最后一个元素,代码更简洁。
  • 分隔符换成了 ,你可以自由修改。

在不同页面中的使用

在首页(index.htm

在首页调用,通常只显示“首页”本身。

{dede:field name='position'/}

输出:首页

在列表页(list_article.htm

在栏目列表页,会显示从首页到当前栏目的路径。

{dede:field name='position'/}

在“技术文章”栏目列表页,输出: 首页 > 技术文章

页(article_article.htm

页,会显示从首页到文章所在栏目再到文章本身的完整路径。

{dede:field name='position'/}

在“如何调用当前位置”这篇文章页,输出: 首页 > 技术文章 > 织梦CMS > 如何调用当前位置


总结与建议

方法 优点 缺点 适用场景
{dede:field name='position'/} 最简单、最标准,无需任何额外代码。 样式固定,无法自定义分隔符和链接。 对样式要求不高的快速开发,或作为后台默认选项。
方法二/三:PHP循环 功能强大、灵活,可完全自定义HTML结构、样式和分隔符。 代码稍复杂,需要一点PHP基础。 强烈推荐,几乎所有商业网站和追求用户体验的项目都应使用此方法。

最佳实践建议:

为了保持网站模板的整洁和可维护性,推荐你:

  1. 在模板中直接使用方法二或方法三,这样一步到位,生成的代码就是最终需要的HTML结构。
  2. 将自定义的分隔符(如 <span> > </span>)提取出来,用CSS类来控制,这样以后想修改样式时,只需修改CSS文件即可,无需改动PHP代码。

将方法三的代码优化一下:

{dede:field name='position' runphp='yes'}
    $arr = explode(' > ', @me);
    $result = '';
    for($i=0; $i<count($arr)-1; $i++){
        $result .= "<a href='".GetOneTypeUrlA($arr[$i])."'>".$arr[$i]."</a><i class='fas fa-angle-right'></i>"; // 使用图标作为分隔符
    }
    $result .= end($arr);
    @me = $result;
{/dede:field}

然后在CSS中定义 .fa-angle-right 图标的样式,这样代码和样式就分离了。

-- 展开阅读全文 --
头像
dede 百度地图插件
« 上一篇 今天
织梦文章模型附件字段如何添加与使用?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]