使用织梦自带的“自动关键字链接”功能(推荐,最简单)
织梦从某个版本开始就内置了这个功能,这是最安全、最官方的解决方案。
操作步骤:
-
登录织梦后台:使用您的管理员账号登录织梦网站后台。
-
进入“核心设置”:在左侧菜单栏中,找到并点击 【系统】 -> 【系统基本参数】。
-
找到关键字链接设置:在“系统基本参数”页面,切换到 【其他选项】 标签页。
-
配置相关参数:您会看到以下几个关键设置项:
- 关键字替换链接(是/否):
- 选择 “是”,表示开启此功能。
- 连接到关键字(链接到关键字列表/链接自定义链接):
- 链接到关键字列表:选择此项,系统会自动链接到后台已创建的关键词管理页面中的对应关键词链接。
- 链接自定义链接:选择此项,您需要为每个关键词单独指定一个外部或内部链接。
- 同一关键字链接次数(0为全部):
- 设置一个数字,表示每个关键词在一篇文章中最多被链接几次,例如设置为
1,则每个关键词在一篇文章中只会被链接一次,建议设置为1或2,避免过度优化被搜索引擎惩罚。
- 设置一个数字,表示每个关键词在一篇文章中最多被链接几次,例如设置为
- 链接间隔字符数:
- 设置一个数字,表示两个链接之间至少需要相隔多少个字符,例如设置为
100,则系统会确保两个链接之间至少有100个字符的间隔,避免链接过于密集,建议设置为100或以上。
- 设置一个数字,表示两个链接之间至少需要相隔多少个字符,例如设置为
- 关键字替换链接(是/否):
-
保存设置:配置完成后,点击页面底部的 【保存】 按钮。
-
更新文章:此功能只对新发布或新编辑并保存的文章生效,如果您想让旧文章也生效,需要去 【批量维护】 -> 页更新】 中,选择需要更新的文章,然后执行更新操作。
优点:
- 官方功能,稳定可靠。
- 操作简单,无需修改代码。
- 无需安装额外插件。
缺点:
- 功能相对基础,自定义选项较少。
使用第三方插件(功能更强大)
如果您觉得自带功能不够用,可以使用第三方开发者制作的更强大的插件,这些插件通常提供更多自定义选项,
- 忽略大小写。
- 忽略特定标签内的内容(如
<a>、<code>、<pre>等)。 - 智能判断,避免链接到短词或无意义的词。
- 更灵活的链接规则。
操作步骤(以通用插件为例):
- 寻找插件:在织梦官方论坛、DedeCMS官网或其他可靠的DedeCMS资源网站搜索“关键字链接插件”、“自动内链插件”等关键词。
- 下载并上传:下载插件压缩包,解压后,按照插件说明书的指示,将文件上传到网站根目录的对应文件夹中(通常是
/dede/或/include/)。 - 安装插件:登录织梦后台,通常在 【插件】 菜单下可以找到安装新插件的入口,或者直接访问插件包里提供的安装文件(
install.php)。 - 配置插件:安装成功后,在后台的 【插件】 或 【系统】 菜单中找到该插件,进入其设置页面进行详细配置,配置项通常比自带功能更丰富。
- 生效:同样,新配置通常只对后续更新的文章生效,旧文章可能需要手动更新。
优点:
- 功能强大,可定制性高。
- 通常有开发者提供技术支持。
缺点:
- 需要从第三方来源获取,存在一定的安全风险(请务必从可信网站下载)。
- 可能与您的织梦版本不完全兼容。
- 插件本身可能有Bug。
手动修改代码(终极方案,适合有开发能力的用户)
如果您追求极致的性能和完全的控制权,可以手动修改织梦的代码来实现这个功能,核心思路是修改发布文章和更新文章时的处理逻辑。
警告:此方法涉及修改核心文件,操作前务必备份相关文件,以防出错导致网站无法正常运行。
核心修改文件:/include/arc.archives.class.php
这个文件是处理文章发布、编辑和生成时的核心类文件。
修改步骤(示例):
-
备份文件:将
/include/arc.archives.class.php文件复制一份并重命名,arc.archives.class.php.bak。 -
编辑文件:用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开原始的
arc.archives.class.php文件。 -
找到处理正文的函数:在文件中搜索
ReplaceKeyword函数,这个函数就是用来处理文章内容中的关键词的。 -
修改函数逻辑:默认的
ReplaceKeyword函数逻辑可能比较简单,您可以在这里编写更复杂的逻辑来替换关键词。- 获取关键词列表:从数据库中获取您设置的关键词和对应的链接。
- 排序关键词:非常重要,必须将关键词按长度从长到短排序,先处理“织梦CMS”,再处理“织梦”,否则“织梦”会被优先匹配,导致“织梦CMS”无法被正确链接。
- 执行替换:使用
preg_replace函数结合正则表达式,将文章中的关键词替换为带链接的HTML代码。
一个简化的 ReplaceKeyword 函数修改思路:
// 在 arc.archives.class.php 中找到或替换 ReplaceKeyword 函数
function ReplaceKeyword($body)
{
// 1. 获取系统设置
$maxkey = intval($this->Fields['keywords']);
if($maxkey==0) {
$this->Fields['keywords'] = '';
return $body;
}
// 2. 获取关键词列表 (这里需要根据你的实际结构调整)
// 假设你已经从数据库获取了关键词数组,格式为: array('关键词' => '链接地址')
$keywordLinks = $this->GetKeywordLinks(); // 你需要自己实现这个方法来获取数据
if (empty($keywordLinks)) {
return $body;
}
// 3. 按关键词长度从长到短排序,这是关键!
uksort($keywordLinks, function($a, $b) {
return strlen($b) - strlen($a);
});
// 4. 遍历并替换
foreach ($keywordLinks as $keyword => $link) {
// 使用 preg_replace 进行不区分大小写的替换
// 注意:这里的正则表达式可能需要根据你的需求调整,以避免匹配到HTML标签内的内容
$body = preg_replace("/(?!(?!<[^>]*?)".$keyword."(?![^<]*?>))".$keyword."/i", "<a href='".$link."' target='_blank' title='".$keyword."'>".$keyword."</a>", $body);
}
return $body;
}
// 你需要自己编写一个方法来从数据库获取关键词和链接
function GetKeywordLinks() {
global $dsql;
$keywords = array();
// 这里写你的SQL查询逻辑,从 dede_keywords 或你自己的表中获取数据
// $sql = "SELECT keyword, rpurl FROM dede_keywords WHERE rank > 0";
// $dsql->Execute('me',$sql);
// while($row = $dsql->GetArray('me')) {
// $keywords[$row['keyword']] = $row['rpurl'];
// }
return $keywords;
}
优点:
- 完全自定义,可以实现任何复杂逻辑。
- 性能可能优于插件(因为没有额外的加载)。
- 无需依赖第三方。
缺点:
- 风险极高,错误修改可能导致网站崩溃。
- 需要扎实的PHP和正则表达式基础。
- 织梦升级后,修改的代码可能会被覆盖,需要重新修改。
总结与建议
| 方法 | 优点 | 缺点 | 推荐人群 |
|---|---|---|---|
| 自带功能 | 安全、简单、稳定 | 功能基础 | 绝大多数用户,特别是新手 |
| 第三方插件 | 功能强大、可定制性高 | 可能有安全风险、兼容性问题 | 需要更高级功能,且能找到可靠插件的用户 |
| 手动修改代码 | 完全控制、性能高、灵活 | 风险极高、需要开发能力 | 专业开发者,对网站有极致要求的人 |
给您的最终建议:
- 首先尝试方法一,织梦自带的功能已经能满足大部分SEO需求,且最安全。
- 如果自带功能确实无法满足您的需求(您需要忽略特定标签或更智能的匹配),再考虑方法二,并从信誉良好的来源下载插件。
- 除非您是开发者,否则不推荐轻易尝试方法三,如果选择此方法,请务必做好文件备份,并在测试环境上充分验证后再部署到生产环境。
