织梦栏目如何调用seotitle?

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

字段在织梦的栏目数据表dede_arctype中是存在的,所以调用起来非常直接,下面我将为你详细介绍在不同场景下的调用方法。

织梦栏目调用seotitle
(图片来源网络,侵删)

核心调用方法

无论在什么位置,调用栏目的seotitle都遵循一个基本语法:

{dede:field.seotitle /}

这个标签会直接输出当前栏目的seotitle字段值。


在列表页(栏目页)中调用

这是最常见的场景,你希望在列表页的<title>标签里显示栏目的seotitle

目标: 让列表页的<title>为“栏目SEO标题 - 网站名”。

织梦栏目调用seotitle
(图片来源网络,侵删)

操作步骤:

  1. 打开你的列表页模板文件,这个文件通常位于 /templets/你的模板目录/ 目录下,文件名可能是 list_article.htm, list_category.htm 等。
  2. 找到 <title> 标签,它通常在 <head> 部分内。
  3. 将其修改为以下代码:
    {dede:field.seotitle runphp='yes'}
        if(@me == '') @me = @me = $GLOBALS['cfg_list_symbol'].$GLOBALS['cfg_webname'];
        else @me = @me.$GLOBALS['cfg_list_symbol'].$GLOBALS['cfg_webname'];
    {/dede:field.seotitle}

代码解释:

  • {dede:field.seotitle runphp='yes'}: 这表示我们要调用seotitle字段,并且开启PHP运行功能。
  • if(@me == ''): @me是织梦模板引擎中代表当前标签值的变量,这句代码的意思是:“如果seotitle为空”。
  • @me = @me = $GLOBALS['cfg_list_symbol'].$GLOBALS['cfg_webname'];: 如果seotitle为空,那么@me(即最终输出的值)就设置为“网站分隔符 + 网站名称”。cfg_list_symbol通常是“-”,cfg_webname是你的网站后台设置的网站名称。
  • else @me = @me.$GLOBALS['cfg_list_symbol'].$GLOBALS['cfg_webname'];: 如果seotitle不为空,那么就在seotitle后面加上“网站分隔符 + 网站名称”。
  • 这样处理后,就能完美实现“有seotitle则显示seotitle,没有则显示栏目名-网站名”的智能效果。

页中调用

你可能想在文章内容页的某个位置(比如面包屑导航下方、文章标题上方)显示该文章所属栏目的seotitle

目标: 在文章内容页显示“所属栏目的SEO标题”。

织梦栏目调用seotitle
(图片来源网络,侵删)

操作步骤:

  1. 打开你的文章内容页模板文件,这个文件通常位于 /templets/你的模板目录/ 目录下,文件名是 article_article.htm
  2. 在你希望显示seotitle的位置,插入以下代码:
<p class="seo-title">栏目SEO标题:{dede:field.typeid function="GetTypeDef(@me, 'seotitle')"/}</p>

代码解释:

  • {dede:field.typeid ...}: typeid是当前文章所属栏目的ID。
  • function="GetTypeDef(@me, 'seotitle')": 这是关键,我们调用了一个自定义函数GetTypeDef
    • @me在这里代表typeid的值(即栏目ID)。
    • 'seotitle'是我们想要从该栏目中获取的字段名。
  • GetTypeDef函数的作用就是根据栏目ID,去dede_arctype表中查找并返回指定字段的值。

更简单的方法(推荐):

织梦的{dede:field}标签本身就支持通过function属性调用任意函数来获取关联数据,你也可以这样写,效果完全一样:

{dede:field.typeid function="getChannelSeoTitle(@me)"/}

你需要将这个getChannelSeoTitle函数添加到织梦的核心函数文件中,以实现复用。

如何添加getChannelSeoTitle函数:

  1. 打开 /include/common.func.php 文件。
  2. 在文件末尾的 ?> 之前,添加以下函数代码:
/**
 * 根据栏目ID获取栏目的seotitle
 * @param int $typeid 栏目ID
 * @return string 栏目的seotitle
 */
function getChannelSeoTitle($typeid) {
    if (empty($typeid)) {
        return '';
    }
    $dsql = new DedeSql(false);
    $row = $dsql->GetOne("SELECT seotitle FROM `#@__arctype` WHERE id = $typeid");
    $dsql->Close();
    return $row['seotitle'];
}

添加后,你就可以在任何模板中通过 {dede:field.typeid function="getChannelSeoTitle(@me)"/} 来调用了,非常方便。


在首页或自定义页面中调用

如果你想调用指定栏目seotitle,而不是当前栏目的,可以使用typeid属性。

目标: 在首页调用ID为“1”的栏目的seotitle

操作步骤:

  1. 打开你的首页模板文件 index.htm
  2. 在需要显示的位置插入以下代码:
首页调用指定栏目(1)的SEO标题:{dede:type typeid='1'}[field:seotitle/]{/dede:type}

代码解释:

  • {dede:type typeid='1'}: typeid='1'指定了我们想要获取的栏目ID。
  • [field:seotitle/]: 在这个标签对内,field:seotitle就代表这个指定栏目的seotitle值。
  • {/dede:type}: 标签闭合。
场景 模板代码 说明
列表页<title> {dede:field.seotitle runphp='yes'}...{/dede:field.seotitle} 智能判断,有seotitle则用,没有则用“栏目名-网站名”。
首页调用指定栏目 {dede:type typeid='1'}[field:seotitle/]{/dede:type} typeid为你想要调用的栏目ID。

希望这些详细的解释和示例能帮助你成功在织梦CMS中调用栏目的seotitle

-- 展开阅读全文 --
头像
织梦转wordpress如何自动实现?
« 上一篇 2025-12-22
页如何调用顶级栏目名称?
下一篇 » 2025-12-22

相关文章

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

目录[+]