dedecms是一個很好的開源cms,作爲一個cms來說,功能已經比較完善。但是用來做一些特定的網站,還需要一定的開發工作。
問題(也是很多人在羣裏問我的問題),在dedecms裏如何實現帶有圖片介紹和簡介的欄目信息,又不想大改程序。其實步驟很簡單,下面以dedecms4.0作例子。
基本思想:我們需要利用欄目表dede_arctype(前綴dede根據你的安裝設置而改變)的description(欄目簡介)這個字段,然後利用dedecms提供的runphp接口,用簡單的php編程實現。
步驟:
1、編輯欄目信息,在高級選項中,填入欄目描述,例如:lmlogo.jpg|||這是一個遊戲欄目。注意這段描述,實際上是兩部分內容,通過“|||”分開,前面的是欄目的圖片信息,後面是欄目的簡介。
2、dedecms在調用欄目的信息的時候,默認不調用description字段,因此我們需要修改源代碼,讓調用支持description字段。修改include/inc_arcpart_view.php文件,找到function GetOneType()函數,原文件爲:
$row = $this->dsql->GetOne("Select ID,typedir,isdefault,defaultname,ispart,namerule2,typename,moresite,siterefer,siteurl,sitepath From #@__arctype where ID='$typeid'");
修改爲:
$row = $this->dsql->GetOne("Select ID,typedir,isdefault,defaultname,ispart,namerule2,typename,moresite,siterefer,siteurl,sitepath,description From #@__arctype where ID='$typeid'");
修改之後,就可以在模板中通過[field:description/]調用數據庫中description字段的值。
3、接下來要實現圖片信息和文字信息的分離,使用dedecms提供的runphp='yes'來實現簡單編程。代碼如下:
以下例子,只適合於類似“lmlogo.jpg|||這是一個遊戲欄目”這樣的欄目描述。
分離圖片信息:
[field:description runphp='yes']
$findme="|||";
$mystring1=@me;
$pos1 = stripos($mystring1, $findme);
if($pos1>0) {
@me=substr($mystring1,0,$pos1);}
else{@me="";}
[/field:description]
分離欄目簡介:
[field:description runphp='yes']
$findme="|||";
$mystring1=@me;
$pos1 = stripos($mystring1, $findme);
if($pos1>0) {
@me=substr($mystring1,$pos1+3,strlen($mystring1));}
else{@me="";}
[/field:description]