圖:帝國CMS后臺啟用內容關鍵字功能
但是由于內鏈的關鍵詞條目過多,另外有些關鍵詞是中英文混合,如SEO優化一詞,或由于關鍵詞近似讓帝國CMS系統產生混亂(如一個關鍵詞鏈接條目叫HTML,另一個關鍵詞鏈接條目叫HTML5),從而導致在發布內容時,第一個圖片不能正常顯示(但是第一個圖作為縮略圖很正常,說明圖片本身已經上傳到網站空間)。
去查看源代碼,會看出<img>標簽亂成一團 。
<img>標簽代碼已被糟蹋成這樣:
<p><img src=”/d/file/<a href=http://www.qidiantong.com/photoshop/ target=_blank class=infotextkey>photoshop</a>/20160711/d332b3635c7b74ea7448eeddc68dc9ea.jpg” alt=”PS海報教程 PS教程 PS圖文教程” border=”0” /></p>
前段時間發現這個問題,嘗試做了一些修補,一是在帝國CMS后臺刪除了一些近似的關鍵詞鏈接條目,然后又重新生成網站的HTML頁面。
除了刪除一些近似的關鍵詞鏈接條目避免出錯外,二是對于已經出錯的頁面,則是進行手動修改,修改時取消:關鍵詞替換 一項。
上述華哥采用的方法,是比較笨的方式,不夠智能。只有網絡上的程序員大神出馬,才能提供一勞永逸的解決方案。
最近看到一則更好的解決方法,已將其放入網站中,雖然未經嚴格測試是否準確,但至少不會帶來什么錯誤,因為在這些天的發布文章時,不再看到文章內容中的第一個圖片不顯示打叉的問題。如下:
三步走:
1、取出圖片與鏈接。
2、替換內容關鍵詞。
3、放回圖片與鏈接。
在e/class/functions.php中,查找代碼:“ function ReplaceKey($newstext,$classid=0)” 或 “//替換關鍵字”(有時打開為utf-8時中文顯示為亂碼)
把這一大段大部分(即:“//替換關鍵字”部分)替換為以下代碼:
———————————————————————————————–
//替換關鍵字
function ReplaceKey($newstext,$classid=0){
global $empire,$dbtbpre,$public_r,$class_r;
if(empty($newstext)||$class_r[$classid][‘keycid’]==-1)
{return $newstext;}
$where=”;
if(!empty($class_r[$classid][‘keycid’]))
{
$where=” where cid='”.$class_r[$classid][‘keycid’].”‘”;
}
$newstext=stripslashes($newstext);
preg_match_all(‘/<a[^>](.*)a>|<img[^>](.*)>/isU’,stripslashes($newstext),$rs);
if($rs[0]){
foreach($rs[0] as $k=>$v){
$newstext=str_replace($v,”[!–{$k}–]”,$newstext);
}
}
$sql=$empire->query(“select keyname,keyurl from {$dbtbpre}enewskey”.$where);
while($r=$empire->fetch($sql))
{
if(STR_IREPLACE)
{
$newstext=empty($public_r[repkeynum])?str_ireplace($r[keyname],'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext):preg_replace(‘/’.$r[keyname].’/i’,'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext,$public_r[repkeynum]);
}
else
{
$newstext=empty($public_r[repkeynum])?str_replace($r[keyname],'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext):preg_replace(‘/’.$r[keyname].’/i’,'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext,$public_r[repkeynum]);
}
}
if($rs[0]){
foreach($rs[0] as $k=>$v){
$newstext=str_replace(“[!–{$k}–]”,$v,$newstext);
}
}
return $newstext;
}
新聞熱點
疑難解答