dede当前位置如何设置与调用?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文
  1. 后台直接修改:最简单,适合新手和快速修改。
  2. 修改模板文件:最灵活,可以自定义样式和内容。
  3. 修改核心函数:一劳永逸,但有一定风险,适合不常更换模板的用户。

下面我将详细介绍这三种方法。

如何去dede当前位置
(图片来源网络,侵删)

在后台直接修改(推荐新手使用)

这是最直接的方法,你可以在后台的“频道模型”中为每个栏目自定义其当前位置的显示名称。

操作步骤:

  1. 登录DedeCMS后台
  2. 进入【核心】 -> 【频道模型】 -> 【内容模型管理】。
  3. 点击你网站主要使用的内容模型,通常是“文章模型”,然后点击【字段管理】。
  4. 在字段列表中,找到名为 typename 的字段,这就是“栏目名称”字段,点击后面的【管理】按钮。
  5. 在字段管理页面,你会看到一个“栏目自定义属性”的设置区域,你可以为每个栏目单独设置。
  6. 关键步骤:找到你想要修改的栏目,在“栏目自定义属性”中,找到 “上级栏目显示名称” 这个选项。
    • 默认值:显示的是栏目的真实名称。
    • 自定义:在这里输入你希望在该栏目下显示的名称。
    • 不显示:如果想让这个栏目在面包屑中不显示,可以选择“不显示”。

优点:

  • 无需修改文件,安全。
  • 操作直观,适合非技术人员。

缺点:

如何去dede当前位置
(图片来源网络,侵删)
  • 每个栏目都需要单独设置,如果栏目很多会很麻烦。
  • 无法实现完全自定义的样式(如加粗、改变颜色等)。

修改模板文件(最常用、最灵活)

这是最推荐的方法,通过修改模板文件,你可以完全控制面包屑的HTML结构、样式和内容。

操作步骤:

  1. 找到模板文件

    • 列表页模板:通常是 /templets/default/list_article.htm (根据你的模板和栏目类型可能不同)。
    • 页模板:通常是 /templets/default/article_article.htm
    • 首页模板:通常是 /templets/default/index.htm
    • 通用模板:很多模板会把公共部分(包括面包屑)放在一个公共文件里,/templets/default/head.htm/templets/default/plus/fulllist.htm,你可以在这些文件中查找 {dede:field name='position' /}{dede:field name='title' function='str_replace("首页","",me)'/} 这样的代码。
  2. 定位面包屑代码: 在你找到的模板文件中,搜索以下代码之一,它们都是用来调用当前位置的:

    如何去dede当前位置
    (图片来源网络,侵删)
    • {dede:field name='position' /}
    • {dede:field name='title' /} (这个通常用在内容页,显示的是文章标题,但有时也会被用来构建面包屑)
    • {dede:global name='position'/} (旧版本或特定模板中可能使用)
  3. 修改或替换代码: 找到代码后,你可以直接修改它,或者用更灵活的标签组合来替换它。

    示例1:简单的修改 如果你只是想把分隔符 > 换成 >>,可以直接修改标签:

    {dede:field name='position' runphp='yes'}
    $tcid = @me;
    $tcid = str_replace(' > ', ' >> ', $tcid);
    @me = $tcid;
    {/dede:field}

    或者更简单的方式,直接在HTML里写死(不推荐,因为不灵活):

    <div class="position">
        {dede:field name='position' function='str_replace(">"," >> ",me)'/}
    </div>

    示例2:完全自定义的面包屑(推荐) 这是更强大、更常用的方法,它让你能控制每个链接和文字的样式。

    将原来的代码:

    {dede:field name='position' /}

    替换为:

    <div class="breadcrumb">
        <a href='{dede:global.cfg_cmsurl/}/'>首页</a>
        {dede:field name='position' runphp='yes'}
            $tcid = @me;
            $tcid = str_replace(' > ', '/', $tcid); //先把 > 替换成 /
            $arr = explode('/', $tcid); //按 / 分割成数组
            foreach($arr as $key => $value){
                if($value){
                    $link = '';
                    for($i=1;$i<=$key;$i++){
                        $link .= $arr[$i-1].'/';
                    }
                    $link = substr($link,0,-1);
                    $link = "/plus/list.php?tid=".GetSonIds($link);
                    if($key!=count($arr)-1){
                        @me .= ' <span class="separator">></span> <a href="'.$link.'">'.$value.'</a> ';
                    }else{
                        @me .= ' <span class="separator">></span> <span class="current">'.$value.'</span> ';
                    }
                }
            }
        {/dede:field}
    </div>

    代码解释:

    • <a href='{dede:global.cfg_cmsurl/}/'>首页</a>:首先输出一个“首页”的链接。
    • runphp='yes':开启PHP运行功能。
    • 代码的核心逻辑是将 位置1 > 位置2 > 位置3 这样的字符串分割成数组,然后循环遍历数组,为每个位置(除了最后一个)生成一个链接。
    • GetSonIds():这是一个DedeCMS内置函数,用于获取栏目的ID,用于构建 list.php?tid= 链接。
    • separatorcurrent:这些是自定义的CSS类名,方便你用CSS来控制分隔符和当前项的样式。

    对应的CSS样式(可以加到你的CSS文件中):

    .breadcrumb {
        font-size: 12px;
        color: #666;
        padding: 10px 0;
    }
    .breadcrumb a {
        color: #0066cc;
        text-decoration: none;
    }
    .breadcrumb a:hover {
        text-decoration: underline;
    }
    .breadcrumb .separator {
        color: #999;
        margin: 0 5px;
    }
    .breadcrumb .current {
        color: #333;
        font-weight: bold; /* 加粗当前项 */
    }

优点:

  • 灵活性极高,可以完全控制HTML结构和CSS样式。
  • 一次修改,全站生效(如果使用了公共模板文件)。

缺点:

  • 需要一定的HTML和CSS基础。

修改核心函数(慎用)

如果你想从根源上修改“当前位置”的生成逻辑,而不需要每次换模板都改代码,可以修改DedeCMS的核心函数。注意:修改核心文件后,升级DedeCMS时你的修改会被覆盖,请务必备份!

操作步骤:

  1. 找到核心文件: 这个函数通常位于 /include/helpers/extend.helper.php 文件中,找到名为 GetPositions() 的函数。

  2. 修改函数: 打开这个文件,找到 function GetPositions($typeid, $string = '') 函数,你可以直接修改这个函数内部的逻辑,比如修改 $string 的拼接方式、修改分隔符等。

    默认的函数里可能会有类似 $string = $row['typename'].$typedir.$string; 这样的代码,你可以在这里加入你的自定义逻辑。

  3. 保存并测试

优点:

  • 一劳永逸,从根源上解决问题。
  • 所有模板都会生效,无需修改模板文件。

缺点:

  • 风险高:修改核心文件可能导致系统不稳定或出现未知错误。
  • 升级困难:每次升级DedeCMS后,都需要重新修改这个文件。

总结与建议

方法 优点 缺点 适用场景
后台修改 简单、安全、无需技术 繁琐、不灵活 快速修改少量栏目的显示名称。
修改模板 灵活、强大、推荐 需要HTML/CSS基础 绝大多数情况下的首选方法,可以实现各种个性化需求。
修改核心 一劳永逸、全局生效 风险高、升级麻烦 不常升级、有技术能力、需要对全站所有模板生效的深度定制。

对于绝大多数用户来说,强烈推荐使用【方法二:修改模板文件】,它既安全又能满足绝大部分的个性化需求。

-- 展开阅读全文 --
头像
dede私服发布网模板如何搭建?
« 上一篇 今天
织梦虚拟主机重启方法是什么?
下一篇 » 今天

相关文章

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

目录[+]