dede手机站静态如何调用当前位置?

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

但由于手机站的模板结构通常更独立,你需要确保这个标签被正确地放置在手机站的模板文件中。

dede手机站静态如何调用当前位置
(图片来源网络,侵删)

下面我将为你详细讲解实现步骤、注意事项以及一些进阶用法。


核心原理

DedeCMS 的 position(位置)信息是在内容被读取时,系统根据你设置的栏目结构(顶级栏目 -> 二级栏目 -> ... -> 文档)自动生成的,这个信息被存储在 arc.archives.class.php 文件中,并最终通过 {dede:field name='position'/} 标签渲染出来。

关键点:

  • 标签本身{dede:field name='position'/}
  • 适用页面页、列表页、自定义页面等几乎所有可以获取栏目信息的页面。
  • 模板文件:你需要将此标签放入手机站对应的模板文件里。

基本实现步骤(文章内容页)

这是最常见的需求,即在手机文章详情页显示“首页 > 栏目 > 子栏目 > 文章标题”这样的路径。

dede手机站静态如何调用当前位置
(图片来源网络,侵删)

步骤 1:确认手机站模板文件

手机站的文章内容页模板文件通常位于 /templets/default/ 目录下,文件名可能是 article_article.htm 或者你在后台设置的手机内容页模板。

步骤 2:在模板中插入标签

打开你的手机文章内容页模板文件(article_article.htm),找到你希望显示面包屑导航的位置(通常是标题的上方),然后插入以下标签:

<div class="position">
    <span>当前位置:</span>
    {dede:field name='position'/}
</div>

代码解释:

  • <div class="position">...</div>:这是一个 div 容器,你可以用它来添加 CSS 样式,使其在手机上看起来更美观(例如调整字体大小、颜色、间距等)。
  • <span>当前位置:</span>:这是可选的提示文字,你也可以不要它。
  • {dede:field name='position'/}:这是核心标签,它会自动输出当前位置的路径链接。

步骤 3:更新缓存并测试

  1. 保存模板文件。
  2. 登录 DedeCMS 后台,点击顶部菜单的 “生成” -> “更新主页HTML” -> “更新栏目” -> “更新文档HTML”
    • 为了确保效果,建议执行一次 “更新文档HTML”,这样所有文章页面都会重新生成,应用新的模板代码。
  3. 访问你的手机站文章页面,查看是否正确显示了当前位置。

进阶用法与常见问题解决

自定义分隔符

默认情况下,{dede:field name='position'/} 的分隔符是 >,如果你想修改它,可以使用 separator 属性。

示例:使用 >> 作为分隔符

{dede:field name='position' separator=' >> '/}

示例:使用 作为分隔符

{dede:field name='position' separator=' / '/}

去掉首页链接

有时候你可能不希望路径中包含“首页”的链接,可以通过自定义一个函数来实现。

方法:修改 /include/helpers/extend.helper.php 文件

  1. 打开 /include/helpers/extend.helper.php 文件。
  2. 在文件末尾 ?> 之前,添加如下函数:
if ( ! function_exists('GetPositionNoHome'))
{
    function GetPositionNoHome($aid)
    {
        global $dsql;
        $tags = '';
        $arrQuery = "SELECT tp.topid,tp.reid,tp.id,tp.typename,tp.ispart,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath,tp.corank,tp.description,tp.keywords,tp.seotitle,tp.isdefault,tp.moresite,tp.siteurl,tp.sitepath
                     FROM `dede_arctype` tp
                     LEFT JOIN `dede_arctype` tp2 ON tp.reid = tp2.id
                     WHERE tp.id IN (SELECT typeid FROM `dede_archives` WHERE id='$aid') ORDER BY tp.topid,tp.reid,tp.id";
        $dsql->Execute('me',$arrQuery);
        while($row=$dsql->GetArray('me'))
        {
            $tags .= "<a href='".$row['typeurl']."'>".$row['typename']."</a> ";
        }
        return $tags;
    }
}

注意: dede_ 是你的数据库表前缀,如果你的不是这个,请自行修改。

  1. 在你的手机站模板文件中,调用这个自定义函数:
    {dede:field name='id' function='GetPositionNoHome(@me)'/}

    这段代码会输出类似“栏目A > 栏目B”的路径,不包含首页。

在手机首页或列表页调用

  • 首页 (index.htm):首页通常没有“当前位置”的概念,但如果你想显示“首页”本身,可以手动写死:
    <div class="position">
        <a href='/m/'>首页</a>
    </div>
  • 栏目列表页 (list_article.htm):在列表页调用 position 会显示从首页到当前栏目的路径。
    <div class="position">
        {dede:field name='position'/}
    </div>

    如果你在“科技”栏目下,它会显示“首页 > 科技”。

手机站栏目页面包屑不显示(最常见问题)

问题现象:电脑站文章页正常,但手机站文章页的 {dede:field name='position'/} 不显示任何内容。

原因分析: 这通常是因为你的手机站使用了独立模板,在 DedeCMS 中,手机站和电脑站可以有不同的模板体系,你在电脑站模板里修改了标签,但手机站使用的是另一套独立的模板文件,所以没有生效。

解决方案

  1. 确认模板文件:进入后台的 “模板” -> “手机模板” -> “默认模板设置”
  2. 找到对应的模板:查看“文章内容页模板”设置的是什么文件,它很可能不是 /templets/default/article_article.htm,而是 /templets/mobile/default/article_article.htm 或者其他路径下的文件。
  3. 修改正确的模板:打开后台“手机模板”里指定的那个文章内容页模板文件,将 {dede:field name='position'/} 标签添加进去。
  4. 更新缓存:再次执行生成操作,更新手机站的页面。

需求场景 解决方案
基本文章页面包屑 在手机站文章内容页模板(如 article_article.htm)中添加 <div>{dede:field name='position'/}</div>
修改分隔符 使用 {dede:field name='position' separator='你的符号'/}
去掉首页链接 extend.helper.php 中添加自定义函数 GetPositionNoHome,并在模板中用 {dede:field name='id' function='GetPositionNoHome(@me)'/} 调用。
面包屑不显示 检查并修改后台 “手机模板” 设置中的对应模板文件,而不是电脑站的模板。
列表页面包屑 在手机站列表页模板(如 list_article.htm)中使用 {dede:field name='position'/}

遵循以上步骤,你就可以轻松地在 DedeCMS 手机站中实现并自定义当前位置(面包屑导航)的显示了。

-- 展开阅读全文 --
头像
dede自定义字段如何用js调用?
« 上一篇 2025-12-14
织梦首页图文资讯为何改960px?
下一篇 » 2025-12-14

相关文章

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

目录[+]