分享的是dedecms一個(gè)非常實(shí)用的技巧,用過dede的人都知道,dede文章內(nèi)鏈生成需要在后臺添加文章的時(shí)候在關(guān)鍵詞處填上想被鏈接的詞,同時(shí)還要在關(guān)鍵詞維護(hù)中有該關(guān)鍵詞。
由于一篇文章關(guān)鍵詞數(shù)量有限,且文章包含的詞眾多,除了該篇文章主要的關(guān)鍵詞之外,對于其他頁面有所關(guān)系的詞最好也能鏈上,這點(diǎn),盜賊的做得比較好。
那修改一個(gè)地方,可以實(shí)現(xiàn)當(dāng)文章中出現(xiàn)關(guān)鍵詞維護(hù)中的詞的時(shí)候,生成的時(shí)候就會自動鏈接。
修改方式如下:
找到include/arc.archives.class 文件下的:ReplaceKeyword 函數(shù)。
將這部分改成以下代碼:
-
functionReplaceKeyword($kw,&$body)
-
{
-
global$cfg_cmspath;
-
$maxkey=5;//替換次數(shù)
-
$kws=explode(”,”,trim($kw));//以分好為間隔符
-
$i=0;
-
$karr=$kaarr=$GLOBALS['replaced']=array();
-
//暫時(shí)屏蔽超鏈接
-
$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);
-
//恢復(fù)超鏈接
-
$body=preg_replace(”/()/isU”,‘\1>\3<\4′,$body);
-
return$body;
-
}
-
}//EndArchives