typecho实现文章内容替换为内链,有助于SEO优化
其实可以发布文章的时候,去添加外链,但是个人觉得很麻烦,而且文章数量多的话,维护起来更加麻烦了,添加内链可以引导蜘蛛爬行走向,对网站:首页-栏目-文章的分层权重是很有帮助的
其实也可以借助插件实现这个功能,插件地址:http://www.yzmb.me/archives/net/keywords-for-typecho
如果不喜欢插件,可以按教材实现到主题里面
$Keywordspress = new Typecho_Widget_Helper_Form_Element_Textarea('Keywordspress', NULL, NULL, _t('关键字内链'), _t('每行1组以"关键词<strong style="color:#467B96;">|</strong>(半角竖线)链接"形式填写)'));
$form->addInput($Keywordspress);
/**
* 文章内容替换为内链
*/
function get_glo_keywords($content)
{
$settings = Helper::options()->Keywordspress;
$keywords_list = array();
if (strpos($settings,'|')) {
//解析关键词数组
$kwsets = array_filter(preg_split("/(\r|\n|\r\n)/",$settings));
foreach ($kwsets as $kwset) {
$keywords_list[] = explode('|',$kwset);
}
}
ksort($keywords_list); //对关键词排序,短词排在前面
if($keywords_list){
$readnum = 0;
$i = 0;
$j = 1;
foreach ($keywords_list as $key => $val) {
$title = $val[$i];
$len = strlen($title);
$str = '<a href="'.$val[$j].'" target="_blank">@'.$title.'</a>';
$str_index = mb_strpos($content, $title);
$content = preg_replace('/(?!<[^>]*)'.$title.'(?![^<]*>)/',$str,$content,1);
if(is_numeric($str_index)){
$readnum += 1;
//$content = substr_replace($content,$str,$str_index,$len);
//$content = $this->str_replace_limit($title,$str,$content,$this->limit);
}
if($readnum == 8) {
return $content; //匹配到8个关键词就退出
$i += 2;
$j += 2;
}
}
}
return $content;
}
主要是涉及到3个问题,获取到主题里面的字符串,解析到数值里面,然后循环赋值到正则替换文章内容,则实现了
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/88
0 评论
4.8k
发表评论
热门文章
自媒体博客Spimes主题33w 阅读
Spimes主题专为博客、自媒体、资讯类的网站设计....
vCard主题个人简历主题13w 阅读
一款个人简历主题,可以简单搭建一下,具体也比较简单....
Splity博客双栏主题11w 阅读
仿制主题,Typecho博客主题,昼夜双版设计,可....
Spzac个人资讯下载类主题11w 阅读
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
自媒体博客Spimes主题416 评论
Splity博客双栏主题187 评论
Spzac个人资讯下载类主题89 评论
Splinx博客图片主题35 评论
Spzhi知识付费社区主题34 评论
三栏清新博客S_blog主题30 评论
vCard主题个人简历主题29 评论
Pure轻简主题28 评论
54447454
10月31日
[已回复]
能重复在发一下吗,无法下载了