分享的是dedecms一个非常实用的技巧,用过dede的人都知道,dede文章内链生成需要在后台添加文章的时候在关键词处填上想被链接的词,同时还要在关键词维护中有该关键词。
由于一篇文章关键词数量有限,且文章包含的词众多,除了该篇文章主要的关键词之外,对于其他页面有所关系的词最好也能链上,这点,盗贼的做得比较好。
那修改一个地方,可以实现当文章中出现关键词维护中的词的时候,生成的时候就会自动链接。
修改方式如下:
找到include/arc.archives.class 文件下的:ReplaceKeyword 函数。
将这部分改成以下代码:
- function ReplaceKeyword($kw,&$body)
- {
- global $cfg_cmspath;
- $maxkey = 5; //替换次数
- $kws = explode(”,”,trim($kw)); //以分好为间隔符
- $i=0;
- $karr = $kaarr = $GLOBALS['replaced'] = array();
- //暂时屏蔽超链接
- $body = preg_replace(”/()(.*)(<)(\/a>)/isU”, ‘\\1-]-\\4-[-\\6', $body);
- foreach($kws as $k)
- {
- $k = trim($k);
- if($k!="")
- {
- /* if($i > $maxkey)
- {
- break;
- }
- $myrow = $this->dsql->GetOne("select * from dede_keywords where keyword='$k' And rpurl<>'' ");
- if(is_array($myrow))*/
- $dsql = new DedeSql(false);
- $query="select * from dede_keywords where rpurl<>'' ";
- $dsql->SetQuery($query);
- $dsql->Execute();
- while($row = $dsql->GetArray())
- {
- $key = trim($row['keyword']);
- $rul=trim($row['rpurl']);
- if($rul!=”")
- if(!in_array($key, $kw))
- if(!in_array($kw,$key))
- if(substr_count($body,$key)<5)
- {
- $karr[] = $key;
- $kaarr[] = “<a rel="nofollow noopener noreferrer" href=’$rul’><u>$key</u></a>”;
- }
- }
- {
- $karr[] = $k;
- $GLOBALS['replaced'][$k] = 0;
- $kaarr[] = “<a target=\&;_blank\&; rel="nofollow noopener noreferrer" href=\&;{$myrow['rpurl']}\&;>$k</a>”;
- }
- $i++;
- }
- }
- $body = preg_replace(”/(^|>)([^<]+)(?=<|$)/sUe”, “_highlight(’\\2′, \$karr, \$kaarr, ‘\\1′)”, $body);
- //恢复超链接
- $body = preg_replace(”/()/isU”, ‘\\1>\\3<\\4′, $body);
- return $body;
- }
- }//End Archives
本文dedecms站内链接(描文本)的增强与优化到此结束。成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不需要对别人察颜观色的从容,一种终于停止了向周围申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度。小编再次感谢大家对我们的支持!