dede如何自动为关键词添加链接?

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

使用 DedeCMS 自带的“关键词替换”功能 (最简单)

这是系统内置的功能,无需修改代码,适合新手和只需要简单替换的场景。

dede获取关键词链接
(图片来源网络,侵删)

优点:

  • 无需编程,纯后台操作。
  • 操作简单直观。

缺点:

  • 功能有限,只能替换文章内容,不能替换摘要等。
  • 无法精确控制链接样式和目标。
  • 每次添加新关键词都需要手动在后台配置。

操作步骤:

  1. 登录后台:进入你的 DedeCMS 后台管理。
  2. 进入系统设置:在左侧菜单中找到 系统 -> 系统基本参数
  3. 开启关键词替换
    • 系统基本参数 页面,切换到 核心设置 标签页。
    • 找到 关键字替换 (或类似名称,如 启用关键字替换) 的选项,将其值设置为
    • 重要:找到 关键字链接 的选项,在这里输入你想要链接到的目标页面 URL,通常这里是一个频道页或列表页的地址,/plus/search.php?keyword=,这样,当关键词被替换时,系统会自动拼接成 /plus/search.php?keyword=你的关键词
  4. 添加关键词
    • 在后台,进入 核心 -> 关键字管理
    • 点击 增加关键字,输入你的关键词,然后点击保存。
    • 你可以在这里为不同的关键词设置不同的权重和链接(如果高级设置支持)。

完成! 之后,你发布或更新文章时,系统会自动将文章内容中与后台关键词匹配的文字,替换成带有链接的格式。

dede获取关键词链接
(图片来源网络,侵删)

修改 article_article.htm 模板文件 (推荐,最常用)

这种方法通过修改文章内容页的模板文件,实现自动添加链接,它比方法一更灵活,可以控制链接的样式(如 rel="nofollow"),并且链接是动态生成的,无需在后台维护。

核心原理: 利用 DedeCMS 的 str_replace 函数,在文章内容输出到页面的最后一刻,将关键词替换为带链接的格式。

操作步骤:

  1. 找到模板文件

    dede获取关键词链接
    (图片来源网络,侵删)
    • 通过 FTP 或你的主机文件管理器,进入 DedeCMS 的 /templets/ 目录。
    • 找到你当前使用的文章内容页模板文件,通常是 default/article_article.htm,如果你修改过模板,请找到你自己的对应文件。
  2. 修改模板文件

    • 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开 article_article.htm 文件。
    • 找到文章内容输出的代码,它通常是这样的:
      {dede:field.body/}
    • 在这行代码的下面,添加以下 PHP 代码块:
      {dede:php}
          // 获取文章内容
          $body = $this->Fields['body'];
          // 获取文章关键词
          $keywords = $this->Fields['keywords'];
          // 如果关键词存在
          if($keywords){
              // 将关键词数组化
              $keyword_array = explode(',', $keywords);
              // 遍历关键词数组
              foreach($keyword_array as $keyword){
                  // 如果关键词不为空
                  if($keyword){
                      // 定义链接URL,这里使用站内搜索,你也可以换成其他URL,如 '/tags.php?/'.$keyword.'/'
                      $link_url = '/plus/search.php?keyword='.urlencode($keyword);
                      // 定义链接样式,rel="nofollow" 告诉搜索引擎不要传递权重
                      $link_tag = '<a href="'.$link_url.'" target="_blank" rel="nofollow">'.$keyword.'</a>';
                      // 在文章内容中替换关键词
                      // @me 是模板中一个特殊变量,代表当前字段的值
                      $body = str_replace($keyword, $link_tag, $body);
                  }
              }
          }
          // 将处理后的内容重新赋值给 body 字段
          @me = $body;
      {/dede:php}
  3. 保存并更新

    • 保存修改后的 article_article.htm 文件。
    • 登录 DedeCMS 后台,进入 生成 -> 更新HTML,选择 所有栏目 或重新生成你修改过的文章页面。

代码解释:

  • {dede:php}...{/dede:php}:允许在模板中直接执行 PHP 代码。
  • $this->Fields['body']$this->Fields['keywords']:分别获取当前文章的 body)和 keywords(关键词)字段。
  • explode(',', $keywords):将用逗号分隔的关键词字符串转换成一个数组。
  • urlencode($keyword):对关键词进行 URL 编码,确保中文等特殊字符在 URL 中能正确显示。
  • str_replace():核心函数,用于在文章内容中查找并替换关键词。
  • @me = $body:将处理后的最终内容赋值给 @me 变量,@me 代表当前标签的输出值,这里就是 {dede:field.body/} 的输出。

修改 include/arc.archives.class.php 文件 (最灵活,影响全局)

这种方法通过修改 DedeCMS 的核心类文件,让系统在调用文章内容时就自动完成关键词替换,这样做的好处是,不仅文章页,其他调用文章内容的地方(如首页、列表页摘要)也会自动加上链接。

⚠️ 警告:

  • 这是修改核心文件,在 DedeCMS 升级时,这些修改会被覆盖,需要重新操作。
  • 操作前务必备份原文件!

操作步骤:

  1. 备份文件:非常重要!先备份 /include/arc.archives.class.php 文件。

  2. 找到并修改函数

    • 用代码编辑器打开 /include/arc.archives.class.php 文件。
    • 按快捷键 Ctrl + F 搜索 GetMKUrl 函数,这个函数就是处理关键词链接的核心。
    • 找到类似这样的代码段(不同版本 DedeCMS 可能略有差异):
      // 在函数内部找到下面这几行
      if($this->Fields['keywords'])
      {
        $kws = explode(' ', $this->Fields['keywords']);
        $kws = array_slice($kws,0,5);
        foreach($kws as $k)
        {
            $this->Fields['body'] = str_replace($k, "<a href='".$this->GetMKUrl($k)."'>".$k."</a>", $this->Fields['body']);
        }
      }
  3. 优化代码:上面的默认代码比较简单,我们可以把它修改得更健壮、更灵活,与方法二的逻辑类似。

    • 将上述代码块替换为以下优化后的代码:
      // 在 if($this->Fields['keywords']) 内部替换为如下代码
      if($this->Fields['keywords'])
      {
          // 使用逗号作为分隔符,更符合DedeCMS的关键词输入习惯
          $kws = explode(',', $this->Fields['keywords']);
          // 去除数组中的空值
          $kws = array_filter($kws);
          // 遍历关键词数组
          foreach($kws as $k)
          {
              // 去除关键词前后的空格
              $k = trim($k);
              // 如果关键词不为空
              if($k)
              {
                  // 定义链接URL,这里使用站内搜索
                  $link_url = '/plus/search.php?keyword='.urlencode($k);
                  // 定义链接标签,可以自定义样式
                  $link_tag = "<a href='".$link_url."' target='_blank' rel='nofollow'>".$k."</a>";
                  // 在文章内容中替换关键词
                  // 注意:这里替换的是全词,避免部分匹配,可以使用 preg_replace 加上 \b 边界符更精确
                  // $this->Fields['body'] = preg_replace('/\b'.preg_quote($k, '/').'\b/i', $link_tag, $this->Fields['body']);
                  // 为了简单和兼容性,先用 str_replace
                  $this->Fields['body'] = str_replace($k, $link_tag, $this->Fields['body']);
              }
          }
      }
  4. 保存文件:保存修改后的 arc.archives.class.php 文件。

  5. 更新缓存:登录后台,进入 系统 -> 一键更新网站,更新所有文档即可。


总结与建议

方法 优点 缺点 适用场景
后台设置 简单、无代码、安全 功能弱、需手动维护、不灵活 简单的个人博客,对SEO要求不高。
修改模板 灵活、安全(不改核心)、可控性强 只影响文章内容页 强烈推荐! 99% 的用户需求都适用。
修改核心 影响全局、一劳永逸 升级会覆盖、有风险、需备份 需要在所有页面(如摘要)都加链接的资深用户。

对于绝大多数用户来说,方法二 是最佳选择,它在功能、灵活性和安全性之间取得了最好的平衡,如果你对代码不熟悉,可以先从 方法一 开始尝试。

-- 展开阅读全文 --
头像
织梦自定义表单如何兼顾美观与实用?
« 上一篇 03-04
织梦文章列表数量怎么设置?
下一篇 » 03-04

相关文章

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

目录[+]