DedeCMS 实现这个功能主要依赖于两个核心部分:
- 后台设置:在后台配置关键词、目标链接和替换规则。
- 前台调用:在前台模板中通过特定函数调用,让系统在生成页面时自动执行替换。
第一步:在后台设置关键词和链接
这是最关键的一步,你需要在这里定义好哪些词需要被替换,以及它们要链接到哪个页面。
-
登录 DedeCMS 后台。
-
在左侧菜单栏中找到 “核心” -> “批量维护” -> “文档关键词维护”。
-
添加关键词:
- 点击 “增加关键词” 按钮。
- 输入你想要被替换的文字,“织梦CMS”、“PHP教程”。
- 目标链接:输入该关键词要链接到的 URL 地址,
/dedecms/或https://www.example.com/php-tutorial/,建议使用站内相对路径。 - 替换次数:设置该关键词在每篇文章中最多被替换的次数。建议设置为 1,避免过度优化被搜索引擎惩罚,设置为 0 则表示不限制。
- 是否启用:务必勾选此项,让关键词生效。
- 关键词颜色:可以设置链接文字的颜色,可选。
- 关键词大小:可以设置链接文字的大小,可选。
示例:
- 织梦CMS
- 目标链接:/dedecms/
- 替换次数:1
- 是否启用:是
-
保存并添加更多关键词:你可以为每个关键词重复此操作,添加多个你想要优化的词。
第二步:在前台模板中调用替换函数
设置好关键词后,你需要告诉 DedeCMS 在哪里执行替换,这通常是在文章内容页的模板文件中完成。
-
找到文章内容页模板:
- 登录 DedeCMS 后台。
- 进入 “模板” -> “默认模板管理”。
- 在左侧选择你正在使用的模板风格。
- 找到 页模板”,文件名通常是
article_article.htm。
-
修改模板文件:
- 点击
article_article.htm后面的 “修改” 按钮,进入模板编辑器。 - 找到显示文章正文内容的地方,通常是一句类似这样的代码:
{dede:field.body/} - 将
{dede:field.body/}替换为以下代码:{dede:field.body function='ReplaceKeywords(@me)'/}
- 点击
-
保存模板:
- 点击模板编辑器右上角的 “保存” 按钮。
代码解释:
{dede:field.body}:这是调用文章正文的默认标签。function='ReplaceKeywords(@me)':这是一个函数调用。@me:代表{dede:field.body}标签本身输出的原始内容(即文章正文)。ReplaceKeywords:这是 DedeCMS 内置的专门用于执行关键词替换的函数。- 整个代码的意思是:获取文章正文内容 (
@me),然后将其传递给ReplaceKeywords函数进行处理,最后将处理结果(添加了链接的正文)显示在页面上。
第三步:更新文章使替换生效
非常重要! 在你修改了模板或后台关键词后,之前已经发布的文章是不会自动更新的,你需要手动更新这些文章,让系统重新生成页面,替换才会生效。
你有以下几种方式更新文章:
-
更新单个文章(推荐):
- 进入 -> “普通文章”。
- 找到你想要更新的文章,点击后面的 “更新” 按钮。
- 在弹出的页面中,勾选 “仅更新正文文档页”(或者根据需要选择其他选项),然后点击 “确定更新”。
-
批量更新文章:
- 如果文章很多,可以使用批量更新功能。
- 进入 -> “普通文章”。
- 在文章列表页,你可以选择多篇文章,然后点击顶部的 “更新” 按钮。
- 在弹出的页面中,选择更新范围,“仅更新选中文档”,然后点击 “开始执行”。
-
更新栏目:
- 如果一个栏目下的所有文章都需要更新,可以进入 “栏目管理”。
- 找到对应的栏目,点击后面的 “更新” 按钮。
- 选择 “更新所有文档” 或 “更新选中栏目及其子栏目文档”,然后执行。
高级技巧与注意事项
-
排除特定内容(如代码块):
-
DedeCMS 的
ReplaceKeywords函数是简单粗暴地全文替换,如果你的文章中包含代码(如<pre>或<code>标签内的内容),里面的关键词也可能被替换掉,这很不好。 -
解决方案:在调用替换函数之前,先用
preg_replace函数将代码块临时替换成一个特殊标记,替换完成后再标记换回来。 -
修改后的模板代码示例:
{dede:field.body runphp='yes'} // 1. 先将代码块用特殊标记替换掉 $content = @me; $content = preg_replace('/<pre.*?>.*?<\/pre>/is', '[!--code_block--]', $content); $content = preg_replace('/<code.*?>.*?<\/code>/is', '[!--code_block--]', $content); // 2. 执行关键词替换 $content = ReplaceKeywords($content); // 3. 将特殊标记还原为代码块 $content = str_replace('[!--code_block--]', '<pre><code>', $content); // 这里简化处理,实际可能需要更复杂的逻辑来还原原始代码 // 注意:上面的简化还原可能有问题,更稳健的方法是先提取代码块,替换,再放回。 // 但对于大多数情况,DedeCMS 默认的替换已经足够,如果代码不多,可以手动处理。 @me = $content; {/dede:field.body} -
重要提示:上面的代码是一个简化思路,实际操作中如果代码结构复杂,可能会出错,如果对 PHP 不熟悉,建议不要轻易修改,或者使用更专业的 SEO 插件。
-
-
性能考虑:
如果你的关键词非常多,或者文章非常长,每次页面加载都执行替换可能会对服务器造成轻微的性能负担,但对于中小型网站,这个影响几乎可以忽略不计。
-
避免过度优化:
- 替换次数 一定要谨慎设置,通常设置为 1 是最佳实践。
- 不要堆砌关键词,确保文章内容自然流畅,关键词替换是辅助 SEO 的手段,而不是全部。
| 步骤 | 操作 | 说明 |
|---|---|---|
| 后台设置 | 核心 -> 批量维护 -> 文档关键词维护 | 添加关键词、目标链接、设置替换次数和启用状态。 |
| 模板修改 | 修改 article_article.htm |
将 {dede:field.body/} 替换为 {dede:field.body function='ReplaceKeywords(@me)'/}。 |
| 更新文章 | 管理中更新文章 | 必须执行此步,让修改后的模板和关键词在页面上生效。 |
遵循以上步骤,你就可以成功地在 DedeCMS 中实现关键词自动替换功能,有效提升网站的 SEO 效果。
