dede如何调用当前子栏目名称?

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

在自由列表/文章列表页调用

这是最常见的情况,比如你在 list_articled.htm 模板文件中,想获取当前栏目(即列表页面对应的栏目)的名称。

dede调用当前子栏目名称
(图片来源网络,侵删)

方法 1.1:使用顶级栏目名称 {dede:field.typename/}

这是最简单、最常用的方法。{dede:field.typename/} 标签可以直接获取当前栏目的名称。

示例代码:

<h1>您正在浏览的栏目是:{dede:field.typename/}</h1>

说明: 这个标签在列表页和内容页都可以使用,它会直接输出当前栏目的名称。

方法 1.2:使用栏目别名 {dede:field.typedir/}

如果你想获取的是栏目在后台设置的“栏目别名”(而不是“栏目名称”),可以使用 {dede:field.typedir/},注意,这个标签输出的是栏目的目录路径,但路径的最后一部分就是别名。

dede调用当前子栏目名称
(图片来源网络,侵删)

示例代码:

<h1>栏目别名是:{dede:field.typedir/}</h1>

假设你在后台设置的栏目别名为 news,栏目目录为 /a/news,那么这段代码会输出:

<h1>栏目别名是:/a/news</h1>

如果你只需要 news 这个部分,可以结合PHP代码来处理。


调用当前栏目的顶级栏目名称

一个栏目下面还有子栏目,而你希望在子栏目列表页显示的是“顶级父栏目”的名称,这时就需要用到更复杂的标签。

dede调用当前子栏目名称
(图片来源网络,侵删)

方法 2.1:使用 {dede:field name='typename' function='GetTopTypename(@me)'/}

这个方法非常实用,它通过一个自定义的PHP函数 GetTopTypename 来获取当前栏目的顶级栏目名称。

使用步骤:

  1. 打开 /include/common.func.php 文件,在文件末尾 ?> 之前,添加以下函数代码:

    /**
     * 获取当前栏目的顶级栏目名称
     * @param string $typeid 当前栏目ID
     * @return string 顶级栏目名称
     */
    function GetTopTypename($typeid)
    {
        global $dsql;
        $row = $dsql->GetOne("SELECT typename,reid,topid FROM `dede_arctype` WHERE id='$typeid'");
        if ($row['reid'] == '0')
        {
            return $row['typename'];
        }
        else
        {
            $topid = $row['topid'];
            $row2 = $dsql->GetOne("SELECT typename FROM `dede_arctype` WHERE id='$topid'");
            return $row2['typename'];
        }
    }
  2. 在模板文件中使用: 在你的列表模板(如 list_articled.htm)中,使用如下标签:

    <h1>本栏目隶属于顶级栏目:{dede:field name='typename' function='GetTopTypename(@me)'/}</h1>

    注意:这里的 @me 是DedeCMS模板引擎中的一个特殊变量,代表当前标签的原始值,在这里就是当前栏目的ID。


页(文章页)调用

页(如 article_article.htm),调用当前栏目(即文章所属栏目)的名称,和方法一完全一样。

方法 3.1:直接调用栏目名称 {dede:field.typename/}

示例代码:

<p>文章发布于:{dede:field.typename/}</p>

这会直接输出文章所在栏目的名称。

方法 3.2:调用顶级栏目名称

同样,如果你想在内容页显示顶级栏目名称,也需要先在 common.func.php 中添加 GetTopTypename 函数(参考方法二),然后在模板中使用。

示例代码:

<p>文章隶属于顶级栏目:{dede:field name='typename' function='GetTopTypename(@me)'/}</p>

注意页,{dede:field.typename/} 输出的是文章所在栏目的名称,而 function='GetTopTypename(@me)' 会向上追溯并输出顶级栏目的名称。


总结与对比

使用场景 推荐标签 说明
列表页/内容页 {dede:field.typename/} 当前栏目名称 最常用,直接输出。
列表页/内容页 {dede:field.typedir/} 栏目目录路径 输出的是 /a/别名 的形式。
列表页/内容页 (需修改common.func.php) {dede:field name='typename' function='GetTopTypename(@me)'/} 顶级栏目名称 功能强大,适用于有层级结构的栏目。

推荐做法:

  • 如果只需要当前栏目的名字,直接用 {dede:field.typename/} 即可,最简单高效。
  • 如果你的网站栏目结构复杂,并且需要在子栏目页显示其父级栏目名,那么请使用方法二,虽然需要修改PHP文件,但一劳永逸,非常实用。
-- 展开阅读全文 --
头像
织梦网$message是什么?
« 上一篇 02-13
dede文章标题如何添加随机值?
下一篇 » 02-13
取消
微信二维码
支付宝二维码

目录[+]