帝国cms评论页面模板也就是评论列表页,在帝国cms后台--模板--模板管理、可以找到单独的评论列表模板、但是在制作内容页模板的时候,我们需要在内容页模板调用评论列表和评论框,那么如何操作呢
这里推荐的方法是,官方给出的评论插件
下载地址:http://bbs.phome.net/ShowThread/?threadid=196576&forumid=31
根据官方教程下载调用即可
但是在写完这套帝国教程之后,有网友@反馈说,使用官方插件内容页是JS调用,JS调用换句话说就是右键查看网页源代码,查看不到网友评论的内容,这样不利于搜索引擎优化
问能不能改成代码输出,也就是在网页源代码直接可以查看到评论内容
针对这部分网友的需求,我使用搜索引擎包含百度、谷歌、必应搜索了一圈,发现互联网有类似的评论插件,不过收费插件要价少则一百多、多则两百多,本着能省则省的原则,自己简单的写一个内容评论插件调用
使用的是官方提供的showplinfo标签、不过使用showplinfo标签在内容页调用,还是遇到很多问题
问题一、showplinfo标签模板的写法
[showplinfo]调用条数,标签模板ID,栏目ID,信息ID,显示推荐评论,操作类型[/showplinfo]
从官方给出的showplinfo调用写法,可以知道,showplinfo标签是需要标签模板的支持,也就是说我们需要新建一个标签模板
这个标签模板的增加可以查看文章:《帝国cms如何增加标签模板》
整个showplinfo标签模板的写法,重点是列表内容模板(list.var) (*)的写法
也就是评论列表常用评论标签的的调用
比如:[!--username--]、[!--pltime--]、[!--pltext--]、
具体支持哪些标签,可以参照官方使用手册、第九点评论模板的制作
http://www.phome.net/doc/manual/template/
这里就不做代码分享,因为前期有部分网友付费购买了课程相关内容,不做免费分享也是对他们负责
问题二、增加评论用户网站链接
也就是需要在帝国后台管理评论处增加自定义评论字段,比如ulink字段,这个字段就是用户可以在评论的时候输入网址作为网站外链的需要
增加了自定义评论字段,对此就需要修改对应的文件才能支持自定义字段的调用,这里详细写好哪个程序,修改什么内容
修改/e/class/t_functions.php
查找:
$sql=$empire->query("select plid,userid,username,saytime,id,classid,zcnum,fdnum,saytext from {$dbtbpre}enewspl_".$public_r['pldeftb']." where checked=0".$a." order by ".$order." limit ".$line);
修改:
$sql=$empire->query("select * from {$dbtbpre}enewspl_".$public_r['pldeftb']." where checked=0".$a." order by ".$order." limit ".$line);
再查找:
$listtemp=str_replace("[!--fdnum--]",$r['fdnum'],$listtemp);
下方添加:
$listtemp=str_replace("[!--ulink--]",$r['ulink'],$listtemp);
这样评论自定义字段就可以正常调用了
实现了评论自定义字段的调用后,我原本想写一个判断如果网站地址ulink字段为空则输出评论用户名不加链接,反之网站地址ulink字段不为空,则评论用户名添加a链接,但是发现纯php判断不起作用,又要返回列表内容模板(list.var) (*)使用勾选使用程序代码的写法,觉得太麻烦了,实在是没时间重新再写逻辑判断,后面改成直接输出,类似论坛外链文字的形式,而不是锚文本的形式展现,有情兴趣的朋友再自行研究逻辑判断写法吧
问题三、内容页调用showplinfo标签
具体大家根据自己创建标签模板id修改
[showplinfo]调用条数,15,$navinfor[classid],$navinfor[id],显示推荐评论,操作类型[/showplinfo]
问题四、帝国CMS实现提交评论后自动重新生成内容页的方法
这个,这个直接百度搜索,可以找到答案
问题五、评论顶和踩、回复楼层功能
实现代码如下
<a href="#tosaypl" onclick="javascript:document.saypl.saytext.value='';document.saypl.repid.value='[!--plid--]';document.saypl.saytext.focus();">回复</a>
<a href="JavaScript:makeRequest('[!--news.url--]e/pl/doaction.php?enews=DoForPl&plid=[!--plid--]&classid=[!--classid--]&id=[!--id--]&dopl=1&doajax=1&ajaxarea=zcpldiv[!--plid--]','EchoReturnedText','GET','');">支持</a><span id="zcpldiv[!--plid--]">[[!--zcnum--]]</span>
<a href="JavaScript:makeRequest('[!--news.url--]e/pl/doaction.php?enews=DoForPl&plid=[!--plid--]&classid=[!--classid--]&id=[!--id--]&dopl=0&doajax=1&ajaxarea=fdpldiv[!--plid--]','EchoReturnedText','GET','');">反对</a><span id="fdpldiv[!--plid--]">[[!--fdnum--]]</span>
代码完整,功能可用,
不足点1、回复功能没有实现回复楼层单独弹窗输入
不足点2、支持/反对功能、点击可以正常提交但是刷新页面不显示、也就是需要重新生成页面才能够显示正常支持/反对数、这个问题是静态页面才会出现,如果你网站内容页是动态调用则会马上显示、原本也想改程序,但是没有时间研究,有兴趣朋友自行研究代码
问题六、楼层显示
这个可以用php写、也可以用js写、也可以用css写第一个li,然后使用content结合before功能显示,我博客用不到就没写
问题七、如何显示评论者ip