使用织梦默认的 keywords 标签(最常用、最直接)
这是最简单直接的方法,适用于大多数情况,织梦系统会自动获取当前栏目的“关键词”字段内容。

(图片来源网络,侵删)
适用场景:
- 在栏目列表页 (
list_*.php) 中调用当前栏目的关键词。 - 页 (
article_*.php) 中调用当前栏目的关键词。
代码示例:
将以下代码直接放置在你需要显示关键词的HTML模板文件中即可。
<meta name="keywords" content="{dede:field name='keywords'/}" />
代码解释:
{dede:field name='keywords'/}是织梦的一个基本字段调用标签。name='keywords'指定了要调用的是“关键词”这个字段。- 在不同页面,它调用的内容是不同的:
- 在栏目列表页:它会调用当前栏目的“关键词”。
- 页:它会调用当前文章的“关键词”,如果文章没有设置关键词,并且开启了“自动获取关键词”功能,它会尝试从文章内容中提取。
调用父级栏目的关键词(用于SEO层级优化)
我们希望在子栏目页面上同时显示父级栏目的关键词,以增强主题相关性。
适用场景:
- 在一个子栏目的列表页,希望显示“父栏目关键词, 子栏目关键词”这样的组合。
代码示例:
这个方法需要用到织梦的SQL查询标签 {dede:sql}。

(图片来源网络,侵删)
{dede:sql sql="SELECT keywords FROM dede_arctype WHERE id=~typeid~"}
{dede:field name='keywords'/}
{/dede:sql}
代码解释:
{dede:sql sql="..."}:执行自定义SQL语句。SELECT keywords FROM dede_arctype WHERE id=~typeid~:dede_arctype是织梦存放栏目的数据表(如果你的表前缀不是dede_,请修改)。id=~typeid~:~typeid~是织梦的一个特殊变量,代表当前栏目的ID,这句SQL的作用就是“查询当前栏目ID对应的栏目的关键词”。
{dede:field name='keywords'/}:在{dede:sql}标签内部,使用{dede:field}来输出查询结果。
如何组合父级和当前栏目关键词?
如果你想将它们组合在一起,可以这样写:
<!-- 先获取父级栏目关键词 -->
{dede:sql sql="SELECT keywords FROM dede_arctype WHERE id=~topid~"}
{dede:field name='keywords'/},
{/dede:sql}
<!-- 再获取当前栏目关键词 -->
{dede:field name='keywords'/}
~topid~是另一个特殊变量,代表当前栏目的顶级栏目ID,如果你只想获取直接父级,需要更复杂的逻辑,通常使用~typeid~并通过parentid字段来查找父级,但不如直接用~topid~常用。
调用顶级栏目的关键词(最常用且推荐的多级栏目SEO方法)
这是强烈推荐的方法,尤其对于有三级或更多层级的网站,它能确保所有页面都关联到网站的核心主题。

(图片来源网络,侵删)
适用场景:
- 网站结构:首页 -> 产品中心 -> 手机 -> iPhone 15
- 在“iPhone 15”的文章页或列表页,我们希望关键词能带上“产品中心”和“手机”这两个核心层级词。
代码示例:
结合使用 {dede:sql} 和 ~topid~ 变量。
{dede:sql sql="SELECT keywords FROM dede_arctype WHERE id=~topid~"}
{dede:field name='keywords'/},
{/dede:sql}
{dede:field name='keywords'/}
代码解释:
~topid~会自动获取当前栏目所属的顶级栏目的ID。SELECT keywords FROM dede_arctype WHERE id=~topid~就是去查询顶级栏目的关键词。- 最后再加上当前栏目的关键词。
示例输出:
假设“产品中心”的关键词是“智能手机, 5G手机”,“手机”的关键词是“苹果手机, iPhone”,当前“iPhone 15”的关键词是“iPhone15, 苹果新款手机”。
那么最终输出的关键词将是:
智能手机, 5G手机, 苹果手机, iPhone, iPhone15, 苹果新款手机
这对于SEO非常有利,关键词覆盖面广且相关性强。
调用多个同级或相关栏目的关键词
在某些特殊布局下,你可能想在当前页面调用其他兄弟栏目的关键词。
适用场景:
- 在一个“公司新闻”列表页,旁边有一个“行业动态”列表,你可能想在“公司新闻”页面的keywords里也带上“行业动态”的关键词。
代码示例:
这个需要知道兄弟栏目的ID,或者通过 parentid 来查询。
<!-- 假设我们要调用ID为 5 的兄弟栏目的关键词 -->
{dede:sql sql="SELECT keywords FROM dede_arctype WHERE id=5"}
{dede:field name='keywords'/},
{/dede:sql}
{dede:field name='keywords'/}
更灵活的写法(获取同一父级下的所有兄弟栏目关键词):
{dede:sql sql="SELECT GROUP_CONCAT(keywords) as all_keywords FROM dede_arctype WHERE parentid=~typeid~ AND id != ~typeid~"}
{dede:field name='all_keywords'/},
{/dede:sql}
{dede:field name='keywords'/}
GROUP_CONCAT(keywords)是一个MySQL函数,可以将多行的keywords字段合并成一个字符串,用逗号分隔。parentid=~typeid~查找与当前栏目同属一个父级的栏目。AND id != ~typeid~排除掉当前栏目本身。
总结与最佳实践
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
方法一 {dede:field name='keywords'} |
基础SEO,调用当前页面/栏目的关键词 | 简单、直接、高效 | 关键词范围较窄,层级关系不强 |
| 方法二 调用父级关键词 | 二级栏目结构,希望突出上级主题 | 增加了上级主题的相关性 | 逻辑稍复杂,对多级栏目支持不佳 |
| 方法三 调用顶级关键词 | (强烈推荐)多级栏目结构,强化网站核心主题 | SEO效果最好,关键词覆盖广,逻辑清晰 | 需要理解 ~topid~ 变量 |
| 方法四 调用兄弟栏目关键词 | 特殊页面布局,希望关联同级内容 | 增加页面间的关键词关联 | 使用场景较少,需要明确指定栏目ID |
最佳实践建议:
对于绝大多数网站,特别是超过两级的栏目结构,方法三(调用顶级栏目关键词 + 当前栏目关键词) 是最优选择,它既能保证页面的独特性,又能牢牢锚定网站的核心主题,对搜索引擎非常友好。
使用提示:
- 在后台设置栏目关键词时,请使用简洁、相关、热门的词,用英文逗号 隔开。
- 不要堆砌过多无关的关键词,每个页面的关键词数量建议控制在3-5个核心词或短语组合。
- 确保你的模板文件(如
list_article.htm,article_article.htm)中已经包含了<head>标签,并将{dede:field name='keywords'/}放置在<meta name="keywords" content="...">标签内。
