业务经理

微信扫描以上二维码

028-61286886

技术咨询

如何实现文章内链(关键词自定义URL版)

迅睿框架 更新 2024-08-24 14:19:22 小黄人 18html


如何实现给文章内链自定义关键词(关键词自定义URL版)

官方内链 是直接输出 搜索地址或者是  tag库地址

https://www.xunruicms.com/doc/405.html



但是很多人希望是自定义URL,那就参考下面去写


将下面代码放在   config/custom.php  里

调用方法:{tag_link($content,$neilian)}


这里的 $kws 是一个数组

格式为:  ['关键词'=>URL,'关键词'=>URL,'关键词'=>URL]

我们可以通过全局表单实现这个关键词库,

新建一个表单,

内链库/nlk 

默认字段有  title

自定义一个字段  url


下面是 show.html 调用 ,首先用 form 循环输出一个关键词数组,然后填到 tag_link 函数里进行匹配

{form form=nlk num=10}
{php 
    $neilian = [];
    $neilian[$t.title] = $t.url;
}
{/form}

{tag_link($content,$neilian)}


//
// 将下面代码放在   config/custom.php  里
//
// 调用方法:
// {tag_link($content,$neilian)}
//
function tag_link($content,$posttags,$match_num_from = 1,$match_num_to = 1){

 //$match_num_from = 1; 一篇文章中同一个标签少于几次不自动链接
 //$match_num_to = 1; 一篇文章中同一个标签最多自动链接几次

 if ($posttags) {

  $new = [];
  foreach($posttags as $k => $v) {
   $new[] = ['link'=>$v,'name'=>$k];
  }
  $posttags = $new;

  usort($posttags, "tag_sort");
  foreach($posttags as $tag) {
   $link = $tag['link'];
   $keyword = $tag['name'];  
   $cleankeyword = stripslashes($keyword);
   $url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),('点击了解更多关于[%s]的文章'))."\"";
   $url .= ' target="_blank"';
   $url .= ">".addcslashes($cleankeyword, '$')."</a>";
   $limit = rand($match_num_from,$match_num_to);
   $content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
   $content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
   $cleankeyword = preg_quote($cleankeyword,'\'');
   $regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword . ')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
   $content = preg_replace($regEx,$url,$content,$limit);
   $content = str_replace( '%&&&&&%', stripslashes($ex_word), $content);
  }
 }
 return $content;
}

function tag_sort($a, $b){
 if ( $a->name == $b->name ) return 0;
 return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}


方案

  • 小黄人 18html #1 · 2022-06-24 14:47:02
    哈哈,多余了,官方版的也是可以自定义URL的
    下面是 show.html 调用 ,首先用 form 循环输出一个关键词数组,然后填到 tag_link 函数里进行匹配
    
    {form form=nlk num=10}
    {php 
        $neilian = [];
        $neilian[$t.title] = $t.url;
    }
    {/form}
    
    {de_content_link($neilian,$content,1)}
  • 小黄人 18html #2 · 2022-06-24 15:03:16
    {dr_content_link($neilian,$content,1)}
  • 李齐恩 #3 · 2022-06-24 15:07:30
    👍
  • 小黄人 18html #4 · 2022-06-24 15:53:32
    看一楼和二楼就可以了,打赏部分的代码不需要看了,没意义!因为官方的标签可以实现,所以不需要去看它!
  • qijifuwu #5 · 2022-11-13 00:26:32
    学习了 感谢分享
  • wangxuanyou #6 · 2023-12-30 15:57:32
    放在 config/custom.php 的格式是怎么样的?
  • 天河 #7 · 2024-08-24 14:19:22
    学习了 感谢分享

迅睿系统漏洞

GeoSeo收录宝
GeoSeo收录宝(2026-09-16)
ai发布增强: 1 新增Cron 心跳记录,任务列表实时显示。 ...
导入微信文章
导入微信文章(2026-09-15)
优化排版缺少文字情况
GEO系统
GEO系统(2026-09-15)
运营客户端,防止误触阴影处关闭对话框
独立站群系统
独立站群系统(2026-09-14)
子站独立部署时修复同步附件失败问题
在线客服
在线客服(2026-09-13)
修复删除会话报错问题 删除会话时联动删除聊天图片
在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题