使用 GetOneTypeArt 函数(推荐,最常用)
这是最标准、最推荐的方法,它通过栏目ID获取栏目的详细信息,其中就包含了关键词。

(图片来源网络,侵删)
适用场景:
- 在当前栏目的列表页或文章页,调用当前栏目的关键词。
- 在任何页面,调用任意指定栏目ID的关键词。
调用当前栏目的关键词
这种方法最简单,直接使用织梦的全局变量 $type 即可,它包含了当前栏目的所有信息。
代码示例:
将以下代码放在你想要显示关键词的HTML位置,<head> 标签内或页面底部。
{dede:field name='keywords'/}
代码解释:

(图片来源网络,侵删)
{dede:field name='keywords'/}是一个标准的织梦字段调用标签。name='keywords'指定了要调用的是“关键词”这个字段。- 当这个标签用在栏目页或文章页时,它会自动识别当前栏目的ID并获取其关键词。
调用指定栏目ID的关键词
如果你想在页面的某个固定位置,调用一个特定栏目(比如ID为 5 的栏目)的关键词,就需要使用 GetOneTypeArt 函数。
代码示例:
假设我们要调用栏目ID为 5 的关键词。
{dede:gettypeid typeid='5' function='GetOneTypeArt(@me, "keywords")'/}
代码解释:
{dede:gettypeid ...}是一个用于获取指定栏目信息的标签。typeid='5':这是关键,将5替换成你想要调用的那个栏目的实际ID,你可以在后台“栏目管理”中查看每个栏目的ID。function='GetOneTypeArt(@me, "keywords")':这是核心功能。function='...'表示对获取到的结果进行处理。GetOneTypeArt()是织梦的一个内置函数,它的作用是从一个栏目信息数组中提取指定字段。@me是织梦模板引擎中的变量,代表当前处理的对象(在这里就是typeid=5的栏目信息)。"keywords"是告诉函数,我们只需要提取“关键词”这个字段。
进阶用法:获取多个字段
如果你不仅需要关键词,还需要栏目名称等其他信息,可以修改 function 部分。

(图片来源网络,侵删)
{dede:gettypeid typeid='5' function='GetOneTypeArt(@me, "keywords,typename")'/}
这样会同时获取关键词和栏目名称,并用英文逗号隔开,你可以用其他标签来分别调用它们。
使用 dede:sql 直接查询数据库
如果你对SQL语句比较熟悉,或者需要更复杂的查询逻辑,可以直接使用 dede:sql 标签执行原生SQL语句。
适用场景:
- 当
GetOneTypeArt无法满足需求时。 - 需要同时查询多个栏目信息时。
代码示例:
同样,我们调用栏目ID为 5 的关键词。
{dede:sql sql="SELECT keywords FROM `dede_arctype` WHERE id = 5"}
[field:keywords/]
{/dede:sql}
代码解释:
{dede:sql sql="..."}:执行自定义SQL语句的标签。SELECT keywords FROMdede_arctypeWHERE id = 5:这是标准的SQL查询语句。SELECT keywords:表示我们只想查询keywords这一个字段。FROM dede_arctype:表示从dede_arctype这张表中查询(织梦的栏目信息都存在这张表里)。WHERE id = 5:查询条件,ID为5的栏目。请务必将5替换成你的目标栏目ID。
[field:keywords/]:在dede:sql标签内部,使用[field:字段名/]来循环输出查询结果。
在PHP代码中调用(适用于高级开发者)
如果你正在修改PHP文件(index.php 或自定义的模板文件),可以直接在PHP代码中获取栏目信息。
适用场景:
- 在PHP文件中动态获取关键词并用于逻辑判断或页面生成。
代码示例:
假设你已经知道了栏目ID $target_id = 5;。
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php"); // 引入核心文件
$target_id = 5; // 指定要查询的栏目ID
// 使用 $dsql 全局数据库查询对象执行SQL
$row = $dsql->GetOne("SELECT keywords FROM `#@__arctype` WHERE id = {$target_id}");
if(is_array($row)) {
$keywords = $row['keywords'];
// 现在你可以使用 $keywords 这个变量了
echo "指定栏目的关键词是:" . $keywords;
} else {
echo "未找到ID为 {$target_id} 的栏目";
}
?>
代码解释:
require_once (dirname(__FILE__) . "/include/common.inc.php");:这是织梦程序的入口文件,必须引入才能使用$dsql数据库对象。$dsql->GetOne("..."):这是织梦封装好的方法,用于执行一条SQL并返回第一条结果(一个关联数组)。#@__arctype:这是织梦表前缀的占位符,如果你的表前缀是dede_,它会被自动替换成dede_arctype,使用#@__是最佳实践,可以避免因修改表前缀而出错。$row['keywords']:通过数组键名获取到关键词的值。
总结与最佳实践
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
方法一 GetOneTypeArt |
最简单、最安全、最符合织梦规范,无需关心表名和SQL。 | 灵活性相对较低。 | 绝大多数情况下的首选,尤其是在模板文件中调用。 |
方法二 dede:sql |
非常灵活,可以执行任何复杂的SQL查询。 | 需要了解SQL语句和表名,有一定出错风险。 | 需要复杂查询或 GetOneTypeArt 无法满足时。 |
| 方法三 PHP代码 | 性能最高,直接在PHP逻辑中处理,无需模板引擎解析。 | 需要修改PHP文件,不适合普通模板用户。 | 在PHP文件中进行动态处理或开发功能模块时。 |
给你的建议:
- 如果你只是想在模板里调用某个栏目的关键词,请直接使用方法一,它最简单也最不容易出错。
typeid='5'中的5是栏目ID,不是栏目名称,你可以在织梦后台的“栏目管理” -> “选择所有栏目”中查看每个栏目的ID。- 获取到的关键词默认是用英文逗号 分隔的,如果你想在页面上用其他方式展示,比如用空格隔开,可以使用
str_replace函数:{dede:field name='keywords' function='str_replace(",", " ", @me)'/}
