帝國(guó)CMS專(zhuān)題調(diào)用標(biāo)簽eshowzt不支持標(biāo)簽?zāi)0迨褂贸绦虼a的解決方法
本文講述了帝國(guó)CMS專(zhuān)題調(diào)用標(biāo)簽eshowzt不支持標(biāo)簽?zāi)0迨褂贸绦虼a的解決方法。涉及針對(duì)帝國(guó)CMS源碼的修改。分享給大家供大家參考,具體如下:
一、問(wèn)題:
在項(xiàng)目開(kāi)發(fā)中需要在首頁(yè)調(diào)用專(zhuān)題,且專(zhuān)題增加了“專(zhuān)題自定義字段”:副標(biāo)題(ftitle),需要在欄目名調(diào)用出比較簡(jiǎn)短的副標(biāo)題。
使用【專(zhuān)題調(diào)用標(biāo)簽】eshowzt并設(shè)置對(duì)應(yīng)的標(biāo)簽?zāi)0?,在?biāo)簽?zāi)0宓膌ist.var部分勾選【使用程序代碼】,編寫(xiě)代碼如下:
<li><a href="[!--classurl--]">'.ReturnZtAddField('[!--classid--]','ftitle').'</a></li>
';
專(zhuān)題調(diào)用標(biāo)簽寫(xiě)好后刷新首頁(yè),發(fā)現(xiàn)勾選【使用程序代碼】無(wú)效,就是說(shuō)使用【專(zhuān)題調(diào)用標(biāo)簽】eshowzt的時(shí)候list.var部分無(wú)法使用程序代碼。
二、分析:
查看帝國(guó)CMS源碼,找到專(zhuān)題調(diào)用標(biāo)簽eshowzt對(duì)應(yīng)的函數(shù):sys_ShowZtData(位于e/class/t_functions.php約1860行)
分析源碼找到如下代碼:
$tr=sys_ReturnBqTemp($tempid);
此處獲取模板ID號(hào)對(duì)應(yīng)的模板相關(guān)變量,包括:模板名(tempname),頁(yè)面模板內(nèi)容(temptext)、列表內(nèi)容模板(list.var)(listvar)以及是否使用程序代碼(docode)等。
注意:此處的關(guān)鍵就在于是否使用程序代碼(docode)字段!
再找到
$repvar=ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews);
分析函數(shù)ReplaceShowClassVars可以發(fā)現(xiàn)該函數(shù)并未接受與處理【使用程序代碼】字段docode,至此就明白了為什么【專(zhuān)題調(diào)用標(biāo)簽】eshowzt在標(biāo)簽?zāi)0骞催x【使用程序代碼】的情況下并未作出代碼解析的原因!
三、解決方法:
步驟1. 新增【使用程序代碼】字段,在e/class/t_functions.php頁(yè)面下找到函數(shù)function sys_ShowZtData,并在“取得模板”部分添加$docode字段:
$tr=sys_ReturnBqTemp($tempid);
$docode=$tr[docode];//新增項(xiàng),判斷標(biāo)簽?zāi)0迨欠袷褂贸绦虼a
如下圖所示:

該步驟可獲取是否使用程序代碼的標(biāo)志信息。
步驟2. 還是在步驟1中e/class/t_functions.php頁(yè)面的函數(shù)function sys_ShowZtData中,修改“替換列表變量”部分為自定義函數(shù)user_ReplaceShowClassVars,代碼如下:
//$repvar=ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews);
$repvar=user_ReplaceShowClassVars($no,$listvar,$r,$num,1,$subnews,$docode);
如下圖所示:

PS:仔細(xì)對(duì)比就能看出,此處的自定義函數(shù)比原先的函數(shù)多了一個(gè)針對(duì)$docode的接收處理。
步驟3. 在e/class/t_functions.php頁(yè)面底部添加自定義函數(shù)user_ReplaceShowClassVars:
具體代碼如下:
function user_ReplaceShowClassVars($no,$listtemp,$r,$num,$ecms=0,$subnews=0,$docode){
global $public_r,$class_r;
//欄目鏈接
if($ecms==1)
{
$classurl=sys_ReturnBqZtname($r);
$r['classname']=$r['ztname'];
$r['classid']=$r['ztid'];
$r['classimg']=$r['ztimg'];
}
else
{
$classurl=sys_ReturnBqClassname($r,9);
}
if($subnews)
{
$r[intro]=sub($r[intro],0,$subnews,false);
}
$listtemp=str_replace("[!--classurl--]",$classurl,$listtemp);
//欄目名稱(chēng)
$listtemp=str_replace("[!--classname--]",$r[classname],$listtemp);
//欄目id
$listtemp=str_replace("[!--classid--]",$r[classid],$listtemp);
//欄目圖片
if(empty($r[classimg]))
{
$r[classimg]=$public_r[newsurl]."e/data/images/notimg.gif";
}
$listtemp=str_replace("[!--classimg--]",$r[classimg],$listtemp);
//欄目簡(jiǎn)介
$listtemp=str_replace("[!--intro--]",nl2br($r[intro]),$listtemp);
//記錄數(shù)
$listtemp=str_replace("[!--num--]",$num,$listtemp);
//序號(hào)
$listtemp=str_replace("[!--no--]",$no,$listtemp);
//針對(duì)docode=1(執(zhí)行程序代碼)的情況statr
if($docode==1)
{
$listtemp=stripSlashes($listtemp);
eval($listtemp);
}
//針對(duì)docode=1(執(zhí)行程序代碼)的情況end
return $listtemp;
}
經(jīng)過(guò)上述三步,問(wèn)題解決!
PS:這里主要修改的代碼就是針對(duì)$docode的判斷與執(zhí)行代碼,如果將ReplaceShowClassVars函數(shù)也添加對(duì)應(yīng)的$docode處理:
{
$listtemp=stripSlashes($listtemp);
eval($listtemp);
}
也能解決問(wèn)題,但考慮到還有其他頁(yè)面調(diào)用該函數(shù)的情況,因此使用自定義函數(shù)user_ReplaceShowClassVars相對(duì)來(lái)說(shuō)不會(huì)影響其他程序的運(yùn)行。
相關(guān)文章
帝國(guó)CMS列表頁(yè)中獲取當(dāng)前信息所屬專(zhuān)題名稱(chēng)的方法
這篇文章主要為大家介紹了帝國(guó)CMS列表頁(yè)中獲取當(dāng)前信息所屬專(zhuān)題名稱(chēng)的方法,通過(guò)SQL查詢(xún)與判斷再結(jié)合帝國(guó)CMS內(nèi)置的數(shù)組變量獲取到專(zhuān)題名稱(chēng),是非常實(shí)用的技巧,需要的朋友可以2014-12-01帝國(guó)cms 7.0 調(diào)用本信息所屬專(zhuān)題,專(zhuān)題帶鏈接
帝國(guó)cms在7.0 以前 調(diào)用本信息所屬專(zhuān)題,系統(tǒng)本身是沒(méi)有這樣的功能,需要自己寫(xiě)插件或者代碼2013-12-12帝國(guó)cms 7 調(diào)用專(zhuān)題信息的方法
使用帝國(guó)cms默認(rèn)的調(diào)用不了推薦信息,就直接寫(xiě)個(gè)sql來(lái)調(diào)用吧,這里分享下, 方便需要的朋友2013-12-12帝國(guó)CMS結(jié)合項(xiàng)提示“您來(lái)自的鏈接不存在”的解決方法
這篇文章主要為大家介紹了帝國(guó)CMS結(jié)合項(xiàng)提示“您來(lái)自的鏈接不存在”的解決方法,涉及針對(duì)結(jié)合項(xiàng)相關(guān)代碼的修改與使用以及對(duì)應(yīng)的注意事項(xiàng),需要的朋友可以參考下2014-12-15帝國(guó)CMS單次只能上傳20個(gè)文件問(wèn)題的解決方法(max_file_uploads)
最近在使用帝國(guó)CMS的時(shí)候,發(fā)現(xiàn)了一個(gè)問(wèn)題:在上傳文件或圖片的時(shí)候,一次性上傳不能超過(guò)20個(gè),如果超過(guò)20個(gè)也只能成功20個(gè),其余的均失敗2014-07-23帝國(guó)CMS自動(dòng)截取簡(jiǎn)介出現(xiàn)亂碼的解決方法
這篇文章主要為大家介紹了帝國(guó)CMS自動(dòng)截取簡(jiǎn)介出現(xiàn)亂碼的解決方法,需要的朋友可以參考下2014-07-09- 這篇文章主要為大家介紹了帝國(guó)cms截圖出現(xiàn)黑邊的解決方法,需要的朋友可以參考下2014-07-03
帝國(guó)cms 從6.6升級(jí)到7.0 Multiple primary key defined解決方法
今天將帝國(guó)cms 從6.6升級(jí)到7.0 出現(xiàn)Multiple primary key defined錯(cuò)誤,這里分享下解決方法2013-12-13帝國(guó)cms7.0 數(shù)據(jù)更新批量生成時(shí)出錯(cuò)的解決方法
這篇文章主要為大家介紹下帝國(guó)cms7.0 數(shù)據(jù)更新批量生成時(shí)出錯(cuò)的解決方法,需要的朋友可以參考下2013-12-13帝國(guó)cms升級(jí)到7.0 出現(xiàn)Unknown column 'checked' in 'field list' 錯(cuò)誤
帝國(guó)cms從6.6升級(jí)到帝國(guó)cms7.0,一路正常,但是當(dāng)我進(jìn)入后臺(tái)點(diǎn)管理信息以后就出現(xiàn)了Unknown column 'checked' in 'field list' 錯(cuò)誤,原來(lái)是7.0中已經(jīng)取消了checked字段,2013-12-13

