分享的是dedecms一个非常实用的技巧,用过dede的人都知道,dede文章内链生成需要在后台添加文章的时候在关键词处填上想被链接的词,同时还要在关键词维护中有该关键词。
由于一篇文章关键词数量有限,且文章包含的词众多,除了该篇文章主要的关键词之外,对于其他页面有所关系的词最好也能链上,这点,盗贼的做得比较好。
那修改一个地方,可以实现当文章中出现关键词维护中的词的时候,生成的时候就会自动链接。
修改方式如下:
找到include/arc.archives.class 文件下的:ReplaceKeyword 函数。
将这部分改成以下代码:
-
functionReplaceKeyword($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($kwsas$k)
-
{
-
$k=trim($k);
-
if($k!="")
-
{
-
/*if($i>$maxkey)
-
{
-
break;
-
}
-
$myrow=$this->dsql->GetOne("select*fromdede_keywordswherekeyword='$k'Andrpurl<>''");
-
if(is_array($myrow))*/
-
$dsql=newDedeSql(false);
-
$query="select*fromdede_keywordswhererpurl<>''";
-
$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[]=“<ahref=’$rul’><u>$key</u></a>”;
-
}
-
}
-
{
-
$karr[]=$k;
-
$GLOBALS['replaced'][$k]=0;
-
$kaarr[]=“<atarget=&;_blank&;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;
-
}
-
}//EndArchives