修改完DedeCMS专题页节点文章列表样式之后,又遇到一个难题,因为专题页的节点文章发布在自定义模型里,我要在列表中把我自定义的字段也调用出来,DedeCMS默认是不显示的,需要实现这个功能就要进行二次开发了,搜索了好久,整理出一个完美的解决方法:
一、修改专题页新增模板文件,打开/dede/templets/spec_add.htm,查找代码(大概在第354行):
在下面添加代码(value 的值就是自定义模型频道ID):
频道ID:
查找代码(大概在第364行):
在下面添加代码:
二、修改专题页编辑模板文件,打开/dede/templets/ spec_edit.htm,查找代码(大概在第424行):
在下面添加代码(value 的值就是自定义模型频道ID):
频道ID:
查找代码(大概在第428行):
在下面添加代码:
查找代码(大概在第369行):
$noteid = $ctag->GetAtt('noteid'); 在下面添加代码: $channel = $ctag->GetAtt('channel'); $addfields = $ctag->GetAtt('addfields'); $notetemplet = $ctag->GetAtt('notetemplet'); |
三、修改专题页新增/编辑核心文件,分别打开 dede/spec_add.php和dede/spec_edit.php,查找代码(spec_add.php 文件中大概在第114行,spec_edit.php 文件中大概在第170行 ):
$listtmp = trim(${'listtmp'.$i});
在下面添加代码:
$addfields = trim(${'addfields'.$i}); $notetemplet = trim(${'notetemplet'.$i}); $infolen = trim(${'infolen'.$i}); $channel = trim(${'channel'.$i}); |
查找代码(spec_add.php 文件中大概在第148行,spec_edit.php 文件中大概在第238行 ):
$notelist .= "
将这段代码修改为:
$notelist .= "{dede:specnote notetemplet='$notetemplet' imgheight='$imgheight' imgwidth='$imgwidth' infolen='$infolen' titlelen='$titlelen' col='$col' idlist='$okids' name='$notename' noteid='$noteid' isauto='$isauto' rownum='$rownum' keywords='$keywords' typeid='$typeid' addfields='$addfields'} $listtmp {/dede:specnote}rn"; |
都修改完毕后保存上传覆盖, 添加和编辑两个模版和两个PHP处理文件都要修改,不要忘了,完成后,专题页的文档节点页面会新增自定义模型id和字段的输入框:
然后在调用标签里把自己想要调用的自定义字段写进去就可以了。