dede如何调用栏目名称?

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

{dede:field}{dede:type}

调用栏目名称主要依赖两个核心标签,它们的使用场景略有不同:

dede调用栏目的名称
(图片来源网络,侵删)
  1. {dede:field}:主要用于在内容页(article_article.htm)列表页(article_list.htm)中,调用当前栏目或当前文章所属栏目的信息。
  2. {dede:type}:主要用于在首页(index.htm)其他列表页中,通过指定栏目ID来调用任意栏目的信息。

页(文章详情页)调用栏目名称

这是最简单的情况,因为内容页本身就属于某个栏目,可以直接调用当前栏目的信息。

方法1:使用 {dede:field} (最推荐) 页模板文件 article_article.htm 中,直接使用以下代码:

{dede:field name='typename'/}
  • name='typename':表示获取当前栏目的名称。
  • 这是最简洁、最高效的方式。

方法2:使用 {dede:type} (同样可用)

你也可以使用 {dede:type} 标签,它会获取当前文章所在栏目的信息。

dede调用栏目的名称
(图片来源网络,侵删)
{dede:type}
    <a href="[field:typelink/]">[field:typename/]</a>
{/dede:type}
  • [field:typename/]:获取栏目名称。
  • [field:typelink/]:获取栏目链接。
  • 这种方式的好处是,你可以在标签内部同时获取栏目的名称、链接、ID等多种信息。

在列表页(文章列表页)调用栏目名称

列表页(如 article_list.htm)显示的是某个栏目下的所有文章,所以调用当前栏目名称的方法与内容页完全相同。

方法1:使用 {dede:field} (最推荐)

在列表页模板文件 article_list.htm 中,直接使用:

{dede:field name='typename'/}

这会显示当前列表页所对应的那个栏目的名称。

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

方法2:使用 {dede:type} (同样可用)

{dede:type}
    [field:typename/]
{/dede:type}

在首页或自定义页面调用指定栏目的名称

这是最灵活的情况,比如你想在首页显示“公司简介”这个栏目的名称,你需要知道这个栏目的ID。

步骤1:找到栏目ID

  1. 登录DedeCMS后台。
  2. 进入【栏目管理】。
  3. 找到你想要调用的栏目(公司简介”),将鼠标悬停在该栏目名称的“修改”链接上。
  4. 浏览器左下角会显示链接地址,类似 dede/typedit.php?tid=2,其中的 tid=2 中的 2 就是这个栏目的ID。

步骤2:在首页模板中使用 {dede:type}

在首页模板文件 index.htm 中,使用 {dede:type} 标签并填入你找到的栏目ID。

{dede:type typeid='2'}
    <h2>[field:typename/]</h2>
    <a href="[field:typelink/]">查看更多</a>
{/dede:type}
  • typeid='2':这是关键!typeid 属性用于指定你要调用的栏目的ID,请将 2 替换为你自己的栏目ID。
  • [field:typename/]:输出栏目名称。
  • [field:typelink/]:输出栏目的链接地址。

调用当前顶级栏目名称

一个栏目下面还有子栏目(二级、三级栏目),你可能想在子栏目页调用它“上一级”栏目的名称。

这需要使用 {dede:field} 和PHP结合的方式。

{dede:field name='typename' function='GetTopTypename(@me)'/}
  • function='GetTopTypename(@me)':这是关键。
    • @me:代表 {dede:field} 标签本身的原始值(即当前栏目的名称)。
    • GetTopTypename():这是一个自定义的PHP函数,它会传入当前栏目的名称,然后返回其顶级栏目的名称。

重要提示: GetTopTypename() 这个函数默认可能不存在于你的系统中,你需要将它添加到DedeCMS的核心函数文件中。

如何添加 GetTopTypename 函数:

  1. 打开你的DedeCMS安装目录下的 /include/common.func.php 文件。
  2. 在文件末尾的 ?> 之前,添加以下PHP代码:
/**
 * 获取当前栏目的顶级栏目名称
 * @param string $typename 当前栏目名称
 * @return string 顶级栏目名称
 */
function GetTopTypename($typename)
{
    global $dsql;
    $typeid = $dsql->GetOne("SELECT id FROM `dede_arctype` WHERE typename = '$typename'");
    $topid = GetTopid($typeid['id']);
    $topType = $dsql->GetOne("SELECT typename FROM `dede_arctype` WHERE id = '$topid'");
    return $topType['typename'];
}
/**
 * 获取指定栏目的顶级栏目ID
 * @param int $typeid 当前栏目ID
 * @return int 顶级栏目ID
 */
function GetTopid($typeid)
{
    global $dsql;
    $row = $dsql->GetOne("SELECT reid FROM `dede_arctype` WHERE id = '$typeid'");
    if ($row['reid'] == 0) {
        return $typeid;
    } else {
        return GetTopid($row['reid']);
    }
}

添加完这两个函数后,保存文件,之后你就可以在任何模板中正常使用 {dede:field name='typename' function='GetTopTypename(@me)'/} 了。


| 调用场景 | 推荐代码 | 说明 | | :--- | :--- | :--- |页/列表页 (调用当前栏目) | {dede:field name='typename'/} | 最常用、最简单,直接获取当前栏目的名称。 | | 首页/自定义页 (调用指定栏目) | {dede:type typeid='1'}[field:typename/]{/dede:type} | 需要知道栏目的 ID (typeid='1')。 | | 子栏目页** (调用顶级栏目) | {dede:field name='typename' function='GetTopTypename(@me)'/} | 需要额外在 common.func.php 中添加PHP函数。 |

希望这份详细的指南能帮助你解决在DedeCMS中调用栏目名称的问题!

-- 展开阅读全文 --
头像
C语言中gets函数是什么意思?
« 上一篇 今天
学生信息管理系统C语言代码如何实现核心功能?
下一篇 » 今天
取消
微信二维码
支付宝二维码