织梦spacename字段如何使用?

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

这个标签主要用于调用当前栏目的上级栏目名称

织梦field:spacename
(图片来源网络,侵删)

field:spacename 的核心作用

field:spacename 就是用来获取“当前栏目”的“父栏目”或“上级栏目”的名称。

它的主要应用场景包括:

  1. 面包屑导航:这是最常见的用法,在面包屑中,你通常会显示 首页 > 父栏目名 > 当前栏目名field:spacename 就可以用来获取这个“父栏目名”。
  2. 或描述:在列表页或内容页,你可能想在页面标题或描述中包含上级栏目的信息,以增加SEO友好性。
  3. 特定样式展示:根据上级栏目的不同,为当前栏目应用不同的样式或布局。

基本语法和使用方法

field:spacename 通常在循环标签 {dede:channel}{dede:arclist} 等内部使用,用于循环调用栏目信息。

语法格式:

{dede:channel type='top' /}  <!-- 调用顶级栏目 -->
{dede:channel type='son' /}  <!-- 调用当前栏目的子栏目 -->
{dede:channel type='self' /} <!-- 调用当前栏目本身 -->

在这些循环标签内部,你可以使用 field:spacename 来获取特定栏目的上级栏目名。

织梦field:spacename
(图片来源网络,侵删)

示例1:在面包屑导航中使用

假设你的栏目结构是:首页 > 科技 > 手机 > 苹果手机

当你在“苹果手机”这个栏目页时,你希望面包屑显示为 首页 > 科技 > 手机 > 苹果手机

你的模板代码可以这样写:

<div class="breadcrumb">
    <a href="{dede:global.cfg_cmsurl/}/">首页</a>
    {dede:field name='position' runphp='yes'}
        // 这里的PHP代码是为了处理栏目路径,去掉最后一个(即当前栏目)
        $tc = @me;
        $tf = split('<a href=', $tc);
        $tnum = count($tf) - 1;
        $tfmt = '';
        for($i=1;$i<$tnum;$i++){
            $tfmt .= "<a href=".$tf[$i];
        }
        $tfmt = preg_replace('/\/ target="_blank">/','>',$tfmt);
        @me = $tfmt;
    {/dede:field}
    <span>{dede:field.title/}</span> <!-- 当前栏目名 -->
</div>

上面的代码使用了 {dede:field name='position'},它本身会生成一个包含所有上级栏目的链接,而 field:spacename 在这里不太适合直接用在面包屑中,因为它只返回一个名字,不带链接。

field:spacename 在哪里最方便呢?

示例2:在列表页调用上级栏目名

假设你在“手机”这个列表页,你想在页面标题上方显示“本栏目属于:科技”。

list_栏目ID.htm 模板文件中:

<h1>{dede:field.title/}</h1> <!-- 输出:手机 -->
<p>本栏目属于:<strong>{dede:field.spacename/}</strong></p> <!-- 输出:科技 -->

这里的 {dede:field.spacename/} 就会自动获取到“手机”这个栏目的父栏目“科技”的名称。

示例3:在内容页调用上级栏目名

article_articleid.htm 中,你可能想在文章标题旁加上所属的顶级栏目名。

<div class="article-header">
    <h1>{dede:field.title/}</h1>
    <div class="article-info">
        <span>来源:{dede:field.source/}</span>
        <span>栏目:<a href="{dede:field.typeurl/}">{dede:field.typename/}</a></span> <!-- 当前栏目 -->
        <span>上级栏目:<a href="{dede:field.spacetypeurl/}">{dede:field.spacename/}</a></span> <!-- 上级栏目 -->
    </div>
</div>

在这个例子中,{dede:field.spacename/} 获取的是文章所在栏目的父栏目名,为了能点击跳转,织梦还提供了对应的URL标签:

  • {dede:field.spacename/}: 上级栏目名
  • {dede:field.spacetypeurl/}: 上级栏目链接

注意事项和常见问题

  1. 顶级栏目:如果当前栏目本身就是顶级栏目(科技”),那么它没有父栏目。{dede:field.spacename/} 将返回空值。
  2. 栏目类型field:spacename 主要用于“栏目频道”(外部栏目),对于“独立页面”(内部栏目),其上级栏目逻辑可能不同,使用时需注意。
  3. 模板位置:确保 {dede:field.spacename/} 被放置在正确的模板文件中,它只能在列表页模板(list_xxx.htm页模板(article_xxx.htm)中生效,而不能在首页模板(index.htm)中直接使用。
  4. typename 的区别
    • {dede:field.typename/}:获取当前栏目的名称。
    • {dede:field.spacename/}:获取当前栏目的父栏目的名称。

作用 适用场景 示例输出
{dede:field.typename/} 获取当前栏目的名称 列表页、内容页显示当前栏目名 手机
{dede:field.spacename/} 获取当前栏目的父栏目的名称 列表页、内容页显示上级栏目名 科技
{dede:field.position/} 获取从首页到当前栏目的完整路径(带链接) 面包屑导航 首页 > 科技 > 手机

field:spacename 是一个功能明确且非常实用的标签,能帮助你轻松构建出层级清晰、信息丰富的网站页面,在使用时,只需记住它的核心功能——“获取父栏目名”,并注意其在顶级栏目下的空值情况即可。

-- 展开阅读全文 --
头像
YouCompleteme C语言配置失败怎么办?
« 上一篇 12-10
dede killer v2.php是什么?有何危害?
下一篇 » 12-10

相关文章

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

目录[+]