使用织梦内置的 GetTags 函数(最常用、最简单)
这是织梦官方提供的、最直接的获取文章关键词的方法,它主要用于获取文章在后台字段中手动填写的关键词。

(图片来源网络,侵删)
适用场景
- 在文章详情页调用当前文章的关键词。
- 在列表页调用某篇文章的关键词。
代码示例
页 (article_article.htm) 中调用
在文章详情页模板中,你可以直接使用 {dede:field.keywords/} 标签来获取关键词,但如果你需要对关键词进行二次处理(如加上链接),使用 GetTags 函数会更灵活。
{dede:field name='keywords' runphp='yes'}
// 获取关键词,并用逗号分割成数组
$kw = explode(',', @me);
// 初始化一个空字符串,用于存放处理后的关键词
$result = '';
// 遍历关键词数组
foreach($kw as $k){
// 去除关键词两端的空格
$k = trim($k);
// 如果关键词不为空
if($k != ''){
// 为每个关键词加上一个链接(链接到搜索页面)
// 这里用 {dede:global.cfg_cmsurl/} 来获取网站根目录
$result .= "<a href='{dede:global.cfg_cmsurl/}/search.php?kw=".urlencode($k)."' target='_blank'>".$k."</a> ";
}
}
// 将最终结果赋值给 @me,输出到模板
@me = $result;
{/dede:field}
在列表页 (list_article.htm) 中调用
在列表页,你需要通过 arc.archives 对象来获取每篇文章的关键词。

(图片来源网络,侵删)
{dede:list pagesize='10'}
<li>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>
<!-- 调用当前文章的关键词 -->
{dede:field name='keywords' runphp='yes'}
$kw = explode(',', @me);
$result = '';
foreach($kw as $k){
$k = trim($k);
if($k != ''){
$result .= "<a href='{dede:global.cfg_cmsurl/}/search.php?kw=".urlencode($k)."' target='_blank'>".$k."</a> ";
}
}
@me = $result;
{/dede:field}
</p>
</li>
{/dede:list}
代码解析:
explode(',', @me): 将用逗号分隔的关键词字符串分割成一个数组。foreach($kw as $k): 循环遍历这个数组。trim($k): 去除每个关键词前后的空格。urlencode($k): 对关键词进行URL编码,以确保在URL中传递的安全性。@me = $result;: 将处理后的HTML代码字符串赋值给@me变量,@me代表当前标签的原始值,在这里就是关键词列表,处理后的结果会输出到模板中。
使用 autokeyword 函数(自动提取关键词)
如果你的文章关键词是自动提取的,或者你想从文章内容中动态提取关键词,那么使用 GetTags 函数是无效的,因为它只读取 keywords 字段,这时,你需要使用 autokeyword 函数。
这个函数通常用于调用文章自动生成的标签。
适用场景
- 调用文章自动生成的标签。
- 在没有手动填写关键词的情况下,从文章内容中提取关键词。
代码示例
这个函数的用法和 GetTags 类似,但通常需要传入文章ID。

(图片来源网络,侵删)
{dede:field name='id' runphp='yes'}
// 获取当前文章的ID
$aid = @me;
// 引入关键词处理类文件(如果需要)
// require_once(DEDEINC.'/arc.archives.class.php');
// $arc = new Archives($aid);
// $keywords = $arc->GetTags();
// 更简单的方法是直接调用系统函数(织梦版本不同,函数名可能略有差异)
// 在很多版本中,可以直接这样用:
$keywords = GetTags($aid);
// 将关键词数组用逗号连接成字符串,或者像方法一一样处理成链接
if(is_array($keywords)){
$result = implode(',', $keywords);
} else {
$result = '暂无关键词';
}
@me = $result;
{/dede:field}
注意:
autokeyword或GetTags函数的可用性取决于你的织梦版本和是否开启了自动关联网键词的功能。- 如果直接调用不成功,可能需要先实例化
Archives类,然后调用其方法来获取。
通过修改织梦核心文件实现全局关键词调用(高级)
如果你想在网站的任何地方(比如首页、频道页)都能根据当前环境获取关键词,就需要修改织梦的核心文件,这种方法比较复杂,不推荐新手操作。
思路:
- 在
include/extend.func.php文件中(如果没有就自己创建一个)添加一个自定义函数,这个函数可以根据当前环境(是列表页还是文章页)来获取关键词。 - 在模板中调用这个自定义函数。
示例步骤:
修改 extend.func.php
在文件末尾添加如下函数:
/**
* 获取当前页面的关键词
* @return string 关键词字符串
*/
function GetCurrentKeywords()
{
global $dsql;
$keywords = '';
// 判断当前是否为文章页
if(defined('ARTICLE_ID'))
{
$aid = ARTICLE_ID;
$row = $dsql->GetOne("SELECT keywords FROM `#@__archives` WHERE id = $aid");
if($row)
{
$keywords = $row['keywords'];
}
}
// 判断当前是否为列表页(可以扩展更多判断条件)
// else if(defined('TYPEID') || defined('CATALOG_ID'))
// {
// // 可以在这里添加获取栏目关键词的逻辑
// $tid = isset($GLOBALS['typeid']) ? $GLOBALS['typeid'] : $GLOBALS['catalog'];
// $row = $dsql->GetOne("SELECT keywords FROM `#@__arctype` WHERE id = $tid");
// if($row)
// {
// $keywords = $row['keywords'];
// }
// }
// 如果没有获取到关键词,可以返回网站默认关键词
if(empty($keywords))
{
$keywords = '你的网站默认关键词';
}
return $keywords;
}
在模板中调用
在需要的地方调用这个函数:
<!-- 在首页或任何页面调用 -->
当前页面的关键词是:{dede:function name='GetCurrentKeywords'/}
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:field.keywords/} |
最简单、最直接,官方支持 | 功能单一,难以二次处理(如加链接) | 只需在模板中直接显示关键词文本 |
GetTags 函数 |
灵活强大,可对关键词进行任意处理(如加链接、分割) | 需要基本的PHP知识,代码稍复杂 | 强烈推荐,绝大多数需要调用关键词的场景 |
autokeyword 函数 |
能获取自动提取的标签,不依赖手动输入 | 兼容性可能因版本而异,需要传入文章ID | 调用文章自动生成的标签或从内容提取关键词 |
| 修改核心文件 | 全局可用,可在任何模板中调用 | 风险较高,升级织梦时可能被覆盖,不适合新手 | 需要在首页、频道页等非文章/列表页获取关键词 |
对于绝大多数用户来说,方法一(使用 GetTags 函数) 是最佳选择,它既简单又灵活,能满足绝大多数关于“获取文章关键词”的需求。
