在使用DedeCMS构建网站时,面包屑导航是一项非常重要的功能,它能够帮助用户快速了解当前页面在网站中的位置。然而,默认情况下,DedeCMS生成的面包屑导航会在最后面多出一个“>”符号,这不仅影响美观,还可能对用户体验造成一定的困扰。本文将详细介绍如何通过修改底层代码来解决这个问题。

首先,我们有三种常见的解决方法:

第一种解决方法是通过系统参数修改这个符号。虽然这种方法简单易行,但并不总是满足需求。


第二种解决方法是利用截子符和runphp操作。这种方法在网上被广泛讨论,但由于实现复杂度较高,很多用户反馈未能成功实施。


第三种解决方法,也是本文推荐的方式,是直接修改DedeCMS的底层代码。这种方法经过验证,确实可以有效解决问题。


接下来,我们将详细说明如何通过修改底层代码来去除面包屑导航中多余的“>”符号。


第一步,找到 include/typelink.class.php 文件。


第二步,在该文件中定位到 GetPositionLink 方法。此方法负责生成面包屑导航的链接列表,形式如“类目一>>类目二>>”。



// 获得某类目的链接列表 如:类目一>>类目二>> 这样的形式
// islink 表示返回的列表是否带连接
function GetPositionLink($islink=true)
{
    $indexpage = "" . $this->indexName . "";
    if ($this->valuePosition != "" && $islink) {
        return $this->valuePosition;
    } else if ($this->valuePositionName != "" && !$islink) {
        return $this->valuePositionName;
    } else if ($this->TypeID == 0) {
        if ($islink) {
            return $indexpage;
        } else {
            return "没指定分类!";
        }
    } else {
        if ($islink) {
            $this->valuePosition = $this->GetOneTypeLink($this->TypeInfos);
            if ($this->TypeInfos['reid'] != 0) {
                // 调用递归逻辑
                $this->LogicGetPosition($this->TypeInfos['reid'], true);
            }
            $this->valuePosition = $indexpage . $this->SplitSymbol . $this->valuePosition;
            return $this->valuePosition; // 修改这里以移除多余符号
        } else {
            $this->valuePositionName = $this->TypeInfos['typename'];
            if ($this->TypeInfos['reid'] != 0) {
                // 调用递归逻辑
                $this->LogicGetPosition($this->TypeInfos['reid'], false);
            }
            return $this->valuePositionName;
        }
    }
}
    

在上述代码中,需要特别注意的是最后一行的修改。原代码为:return $this->valuePosition . $this->SplitSymbol;,我们需要将其改为:return $this->valuePosition;


完成以上修改后,保存文件并刷新网站页面,你会发现面包屑导航中多余的“>”符号已经被成功移除。


最终,在模板中调用 {dede:field name='position'/} 即可展示优化后的面包屑导航。效果如下图所示:


通过上述步骤,我们可以轻松解决DedeCMS面包屑导航中多余符号的问题,从而提升网站的专业性和用户体验。