织梦自动内链utf

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

织梦自带的自动内链功能比较简单,且在UTF-8环境下容易出现乱码或无法匹配的问题,我们通常会采用更强大的自定义函数插件来实现。

下面我将提供两种最常用且稳定的方法:

  1. 使用自定义函数(推荐,最稳定、最灵活)
  2. 使用现成的插件(适合不想写代码的用户)

使用自定义函数(推荐)

这种方法的核心思想是:在文章内容被最终输出到浏览器之前,我们通过一个自定义的PHP函数来处理文章内容,将我们预设的关键词替换为对应的链接。

第1步:创建自定义函数文件

  1. 在你的织梦网站根目录下,找到 include/ 文件夹。
  2. include/ 文件夹中,新建一个名为 autokeyword.func.php 的文件。
  3. 将以下代码复制并粘贴到 autokeyword.func.php 文件中,然后保存。
<?php
/**
 * 织梦UTF-8自动内链函数
 * @param string $body  需要处理的文章内容
 * @param int $maxnum  最多替换次数,防止过度SEO
 * @param string $parseStr  关键词和链接的配置字符串,格式为 "关键词1|链接1,关键词2|链接2,..."
 * @return string       处理后的文章内容
 */
function DedeAutoLink($body, $maxnum = 1, $parseStr = '')
{
    // 如果没有配置关键词,则直接返回原文
    if (empty($parseStr)) {
        return $body;
    }
    // 将配置字符串解析成数组
    $kws = explode(',', $parseStr);
    $query = array();
    foreach ($kws as $kw) {
        // 使用 explode 分割关键词和链接,并过滤掉空值
        $kw = trim($kw);
        if (empty($kw)) continue;
        $arr = explode('|', $kw);
        if (count($arr) == 2) {
            $keyword = trim($arr[0]);
            $url = trim($arr[1]);
            // 确保URL是完整的
            if (strpos($url, 'http') !== 0) {
                $url = $GLOBALS['cfg_basehost'] . $url; // 自动补全域名
            }
            $query[] = array('keyword' => $keyword, 'url' => $url);
        }
    }
    // 如果没有有效的关键词,则返回原文
    if (empty($query)) {
        return $body;
    }
    // 对关键词按长度降序排序,优先匹配长词,避免短词截断长词(先匹配“织梦CMS”,再匹配“织梦”)
    usort($query, function ($a, $b) {
        return mb_strlen($b['keyword'], 'UTF-8') - mb_strlen($a['keyword'], 'UTF-8');
    });
    $replaceCount = 0; // 记录已替换次数
    $encoding = 'UTF-8'; // 指定编码为UTF-8,这是关键!
    // 遍历所有关键词进行替换
    foreach ($query as $kw) {
        if ($replaceCount >= $maxnum) break; // 达到最大替换次数则停止
        $keyword = $kw['keyword'];
        $url = $kw['url'];
        // 使用 preg_replace 进行替换,并限制替换次数
        // '/u' 修饰符表示模式字符串是UTF-8编码的
        // '/i' 修饰符表示不区分大小写(可选)
        $body = preg_replace(
            '/(' . preg_quote($keyword, '/') . ')/ui', 
            '<a href="' . $url . '" target="_blank" title="' . htmlspecialchars($keyword, ENT_QUOTES, $encoding) . '">' . $keyword . '</a>', 
            $body, 
            $maxnum - $replaceCount // 剩余可替换次数
        );
        // 计算本次替换了多少次,以便下次循环时调整
        // 这里简化处理,每次只替换一个关键词,所以直接增加 $maxnum
        // 如果一个词在文章中出现多次,我们只替换第一个,然后break,让下一个词有机会替换
        // 更精确的做法是统计替换次数,但为了简单,我们每次只替换每个关键词的第一次出现
        $replaceCount++; 
    }
    return $body;
}

代码要点解释:

  • UTF-8编码处理mb_strlen()preg_replace 中的 /u 修饰符是确保正确处理中文字符的关键。
  • 关键词排序usort 将关键词按长度从长到短排序,避免“织梦”先被替换,导致“织梦CMS”无法再被替换的问题。
  • 安全处理htmlspecialchars() 对链接的 title 属性进行转义,防止XSS攻击。
  • URL补全:如果链接是相对路径(如 /a/123.html),会自动补上网站域名。

第2步:在后台配置关键词

  1. 登录织梦后台,进入【系统】->【系统基本参数】->【核心设置】。
  2. 找到 “自动内链” 这个设置项。
  3. 在文本框中按照以下格式填写你的关键词和链接,多个关键词之间用英文逗号 分隔每个关键词和其链接之间用英文竖线 分隔

格式示例:

织梦CMS|/cms/,织梦模板|/moban/,DedeCMS|https://www.dedecms.com/
  • 织梦CMS 是要替换的关键词。
  • /cms/ 是链接到站内频道页的URL(会自动补全域名)。
  • https://www.dedecms.com/ 是链接到外部网站的URL。

第3步:修改文章页模板文件

这是最关键的一步,你需要让织梦在调用文章内容时,使用我们刚刚创建的函数进行处理。

  1. 进入【模板】->【模板管理】。
  2. 找到你当前使用的文章内容页模板(通常是 article_article.htm)。
  3. 打开这个模板文件,找到调用文章正文的代码,它通常是这样的:
    {dede:field.body/}
  4. 将其修改为:
    {dede:field.body function='DedeAutoLink(@me, 1, "这里填写你的关键词配置")'/}

代码解释:

  • function='DedeAutoLink(@me, 1, "...")':这是织梦模板的自定义函数调用语法。
  • @me:代表当前字段的原始值,也就是 {dede:field.body/} 的原始内容。
  • 1:代表每个关键词最多替换的次数,你可以根据需要修改,23
  • "这里填写你的关键词配置"注意,这里的配置字符串需要和你在后台【系统基本参数】中填写的内容完全一致,或者你也可以直接在这里填写,跳过后台配置,为了方便管理,建议使用后台配置。

第4步:更新文章缓存

  1. 修改完模板后,进入【系统】-> 【一键更新网站】
  2. 在更新选项中,勾选 “更新HTML” -> “选择所有文档”
  3. 点击“开始更新”,织梦会重新生成所有文章的静态页面,此时自动内链功能就会生效。

使用现成的插件

如果你不想手动修改代码,可以搜索使用第三方开发的自动内链插件,这些插件通常已经封装好了所有功能,你只需要上传安装并简单配置即可。

操作步骤(通用流程):

  1. 搜索插件:在织梦官方论坛、DedeCMS官网或其他CMS资源网站搜索“织梦 自动内链 插件 UTF-8”。
  2. 下载插件:选择一个评价好、下载量高的插件,并下载压缩包。
  3. 上传安装:按照插件的说明文档,将文件上传到网站对应目录,然后访问后台的“模块”或“插件”管理页面进行安装。
  4. 配置插件:在插件管理页面,找到自动内链的设置项,按照格式添加关键词和链接。
  5. 启用功能:确保插件已启用,并按照说明是否需要修改模板(有些插件是钩子机制,无需修改模板)。
  6. 更新缓存:同样,最后需要执行【一键更新网站】来使新内容生效。

优点:操作简单,可视化配置。 缺点:可能存在兼容性问题(与你的织梦版本或其它插件冲突),且不如自定义函数灵活。


总结与注意事项

特性 方法一 (自定义函数) 方法二 (第三方插件)
灵活性 极高,完全可控代码逻辑 一般,取决于插件功能
稳定性 极高,代码无冗余,不易出错 一般,依赖插件作者的维护水平
易用性 需要修改代码,对新手有门槛 ,通常后台点几下即可配置
性能 ,代码精简,效率高 取决于插件实现,可能存在性能损耗
推荐度 ★★★★★ (强烈推荐) ★★★☆☆ (作为备选方案)

重要注意事项:

  1. 替换次数:不要将 maxnum 设置得过高,否则一篇文章里同一个关键词被反复链接,会影响用户体验,也可能被搜索引擎认为是过度优化。
  2. 关键词选择:选择与文章内容高度相关、有实际价值的词作为内链关键词,避免堆砌无意义的热词。
  3. 链接数量:一篇文章的内链总数不宜过多,保持自然。
  4. 备份:在修改模板文件和核心函数文件之前,务必备份原始文件,以防出错。
  5. 测试:配置完成后,务必先在几篇测试文章上检查效果,确认内链生成正确且没有乱码后,再全站更新。

希望这个详细的教程能帮助你成功在UTF-8编码的织梦网站上实现自动内链功能!

-- 展开阅读全文 --
头像
dede密码忘了怎么重置?
« 上一篇 前天
dede 后台 标题
下一篇 » 前天

相关文章

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

目录[+]