由于我的站点是自己基于thinkphp开发的,之前并没有考虑到关键词自动内链的功能,关键词自动内链的功能是很多网站CMS自带的,比如dedecms、pbootcms、帝国cms等等。虽然之前用的时候感觉没什么,可是真要自己开发还是有一点担心影响网站整体加载速度的。看了网上的一些说明,发现跟我自己想的也差不多,那么暂时忽略到性能的问题,把功能先做出来吧。
1、数据表的准备
大概有以下几个字段
id | word | url | repeat | addtime |
ID | 关键词 | 链接网址 | 重复次数 | 添加时间 |
2、后台的需要
管理页面、添加页面、编辑页面、删除功能
功能开发其实也不复杂,主要是写一个方法,传递过去我们的内容主体,通过循环匹配我们的内链设置,实现自动插入锚文本链接。
PHP实现网站关键词自动内链的方法有两种:
1、加载内容时嵌入。
在读取内容数据时插入锚链接,但是这样可能会牺牲掉用户访问时的加载速度。
2、发布文章时直接把内链嵌入到文章内容字段。
这样也有弊端,当我们换域名了就需要替换掉文章内容字段理的url,有些删除掉的关键词或者是修改了的关键词,也无法兼顾。
两种方法各有弊端,但是鉴于我们网站以后很可能会有比较长时间的运营,内链的关键词也会不断变化,因此我决定采用第一种方式:加载内容时替换的模式。
PHP实现关键词内链插入代码
写一个方法,通用
//关键词自动内链 function autoLinkKeywords($body,$datas){ foreach ($datas as $data){ $word = $data['link_word']; $repeat = $data['link_repeat']; $link = '<a href="'.$data['link_url'].'" target="_blank">'.$word.'</a>'; $body = str_replace($word, $link, $body, $repeat); } return $body; }
替换掉文章主体的内容,使用上面的的方法
//关键词内链 //内链集合 $datas= [ ['link_word'=>'seo优化','link_url'=>'http://www.xalmi.com/','link_repeat'=>3], ['link_word'=>'seo','link_url'=>'http://www.xalmi.com/','link_repeat'=>2], ]; //关键词数组排序,优先短词链接,防止长短词重复替换 usort($datas, function($a, $b) { return strlen($a['link_word']) - strlen($b['link_word']); }); $body = autoLinkKeywords($body,$datas);
效果呈现如下:
本文网址:http://www.xalmi.com/article/74.html转载请注明出处!文章内容为作者原创或者采编,不代表本站立场,如有侵犯,请联系a5b5_su@163.com。