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]