dede5.7关键词链接替换次数如何设置?

99ANYc3cd6
预计阅读时长 10 分钟
位置: 首页 DEDE建站 正文

这个功能的核心是通过修改 dede/archives_do.php 文件来实现的,因为它负责处理文章保存、编辑等操作,并在此过程中调用关键词替换。

dede5.7 关键词链接替换次数
(图片来源网络,侵删)

在 DedeCMS 5.7 中,默认情况下,每个关键词在一篇文章中只被替换(加链接)一次,如果你想让一个关键词被多次替换,就需要修改核心文件。


修改方法:限制单篇文章中每个关键词的替换次数

这个修改可以让你设定每个关键词在单篇文章中最多出现几次链接,设置为3,那么关键词“织梦CMS”在这篇文章中最多只会出现3个链接。

第一步:找到并编辑核心文件

你需要修改的文件是:/dede/archives_do.php

请使用专业的代码编辑器(如 VS Code, Sublime Text, Notepad++ 等)打开这个文件。

dede5.7 关键词链接替换次数
(图片来源网络,侵删)

第二步:定位关键代码

archives_do.php 文件中,找到处理关键词替换的代码段,通常在文件末尾附近,你会看到类似下面这样的代码:

// 2.处理关键词
if($keywords!='')
{
    $kws = explode(',', $keywords);
    $kws = array_filter($kws); // 过滤掉空值
    // 获取要替换的关键词数组
    $dsql->SetQuery("SELECT * FROM `dede_keywords` WHERE rpurl<>''");
    $dsql->Execute();
    $i = 0;
    while($row = $dsql->GetObject())
    {
        $keyname = trim($row->keyword);
        if($i >= count($kws)) break;
        if($kws[$i] == $keyname)
        {
            $keyurl = $row->rpurl;
            // 执行替换
            $body = str_replace($keyname, "<a href='$keyurl' target='_blank'>$keyname</a>", $body);
            $i++;
        }
    }
}

第三步:修改代码以增加替换次数

默认的代码是 str_replace,它只会替换掉所有匹配项的第一个,我们需要用正则表达式来限制替换次数。

  1. 找到 str_replace 这一行

    $body = str_replace($keyname, "<a href='$keyurl' target='_blank'>$keyname</a>", $body);
  2. 将其替换为以下代码: 这里的 3 就是你要设置的替换次数,你可以根据需要修改这个数字。

    dede5.7 关键词链接替换次数
    (图片来源网络,侵删)
    // 使用正则表达式替换,限制每个关键词每篇文章最多替换3次
    $pattern = '/(' . preg_quote($keyname, '/') . ')/i';
    $body = preg_replace($pattern, "<a href='$keyurl' target='_blank'>$0</a>", $body, 3);

代码解释:

  • preg_quote($keyname, '/'): 对关键词中的特殊正则字符进行转义,防止出错。
  • '/(' . ... . ')/i': 构建一个不区分大小写的正则表达式模式,来匹配关键词。
  • $0: 在替换字符串中,$0 代表整个匹配到的文本,也就是 $keyname 本身。
  • , 3: 这是 preg_replace 函数的第四个参数,它限制了最多替换3次

第四步:保存文件并测试

  1. 保存修改后的 archives_do.php 文件。
  2. 登录你的 DedeCMS 后台。
  3. 进入“[核心]-[批量维护]-[文档关键词维护]”,确保你的关键词已经设置好,连接网址”不为空。
  4. 修改一篇文章(或者发布一篇新文章),在文章正文中多次输入你设置的关键词。
  5. 保存文章后,在前台查看这篇文章,你会发现,每个关键词只被加了3次链接,即使它在文章中出现了超过3次。

重要注意事项

  1. 修改前备份:在进行任何核心文件修改之前,务必备份原始的 archives_do.php 文件,这样如果修改出错,你可以快速恢复。
  2. 性能影响:关键词替换是在文章保存时进行的,如果你的关键词列表非常长,或者文章内容非常多,这个替换过程可能会稍微增加服务器处理时间,但对于绝大多数网站来说,影响微乎其微。
  3. SEO 警告不要过度使用关键词链接,如果一篇文章中同一个关键词被链接了太多次(比如超过5-7次),会被搜索引擎认为是“关键词堆砌”或“过度优化”,有被降权的风险,通常设置为 1到3次 是比较安全和合理的范围。
  4. 大小写问题:默认的关键词替换是区分大小写的,如果你想让它不区分大小写(即“织梦”和“织梦cms”都能被匹配),你需要确保你的数据库关键词是统一大小写的,或者在正则表达式中使用 /i 修饰符(上面的代码已经包含)。

相关知识:如何设置每个关键词的总链接数?

有些用户可能会想,能不能设置一个关键词在整个网站内只出现 N 次链接,DedeCMS 5.7 没有提供这样直接的设置功能。

这个功能需要更复杂的逻辑,通常需要修改关键词替换的核心逻辑,并增加一个计数机制(在 dede_keywords 表中增加一个 link_count 字段,每次替换成功后就加1,并在替换前判断是否超过限制),这个修改的难度和风险都比较大,一般不推荐普通用户尝试。

最常用和最安全的做法就是上面介绍的“限制单篇文章替换次数”

-- 展开阅读全文 --
头像
织梦channel limit限制如何突破?
« 上一篇 今天
dede自定义模型字段如何添加链接?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]