有很多phpcms做医疗网站的朋友,大多会有个问答模块的需求:实现游客也能提问.因为系统原来是一定要登录才能提问的,而且还有积分制,审核制,做得很专业 有点像论坛似的.而医疗网站一般都用不到这些.所以我们就只好稍微改动下源码,以适应我们的需求.今天正好在本地修改成功了,所以就想整理上来了,也是在前人的基础之上修改好的,呵呵,并不是我一个人的功劳.
首先,去后台问答模块(模块配置里面)
把这些都改成否.
然后,找到/ask/question.php第2行:
- if(!$_userid) showmessage($LANG['please_login'],$MODULE['member']['url'].'login.php?forward='.urlencode(URL));
这个是判断登录的.这里我们注释掉 改成
- if(!$_userid)$_userid=0;
再找到
- $info['userid'] = $posts['userid'] = $_userid;
- $info['username'] = $posts['username'] = $_username;
改成
- if($_userid == "")
- {
- $info['userid'] = $posts['userid'] = 0;
- $info['username'] = $posts['username'] = "游客"; //建立一个名叫游客的会员
- }
- else
- {
- $info['userid'] = $posts['userid'] = $_userid;
- $info['username'] = $posts['username'] = $_username;
- }
再找到/ask/show.php,打开源码找到
- if($M['answer_check'])
- {
- $posts['status'] = 1;
- }
- else
- {
- $posts['status'] = 3;
- }
改成
- if($M['answer_check'])
- {
- $posts['status'] = 1;
- }
- else
- {
- $posts['status'] = 3;
- $posts['optimal'] = 1; //问题自动设置为已解决
- }
再找到/ask/include/answer.class.php 找到里面的function add($id,$posts){}这个函数.
- $this->db->insert($this->table_posts, $posts);
- $this->db->query("UPDATE ".DB_PRE."member_info SET answercount=answercount+1 WHERE userid='$_userid'");
在中间加上一段代码,像下面这样
- $this->db->insert($this->table_posts, $posts);
- $this->db->query("UPDATE $this->table SET status=5 where askid='$id'");//回答修改为最佳答案
- $this->db->query("UPDATE ".DB_PRE."member_info SET answercount=answercount+1 WHERE userid='$_userid'");
到这里为止,后台功能基本改好了.现在改前台模板显示.
路径phpcms\templates\default\ask\show.html
系统解决时间本来是:解决时间:{date('Y-m-d H:i',$addtime)}好像有点小问题,我改成
解决时间:{date('Y-m-d H:i',$answertime)} 这个就是正确回答的时间了.
显示最佳答案这块
- <!--最佳答案-->
- {if $status==5}
- <div class="cat">
- <h3 class="good">最佳答案 <span>回答者: {$optimail_username} {$optimal_actor} 回复时间:{date('Y-m-d H:i',$answertime)}</span></h3>
- <div class="answer">
- <p>{$answer}</p>
- </div>
- </div>
- {/if}
我们可以改成
- <!--最佳答案-->
- {if $status==5 }
- <div class="cat">
- <h3>专家解答</h3>
- <div class="answer">
- <span>{$answer}</span>
- <p>回答者: {$optimail_username} 回复时间:{date('Y-m-d H:i',$answertime)}</p>
- </div>
- </div>
- {/if}
样式问题自己可以修改.到此功能基本实现.如果有遇到什么问题的,可以留言问下我.
哦,还补充一点,其实问答模块里的栏目,就相当于问题分类.前台调用数据最好结合数据表 自定义用get标签最灵活,方便,实用了!
本文出自 “hnllyrp” 博客,谢绝转载!