有很多phpcms做医疗网站的朋友,大多会有个问答模块的需求:实现游客也能提问.因为系统原来是一定要登录才能提问的,而且还有积分制,审核制,做得很专业 有点像论坛似的.而医疗网站一般都用不到这些.所以我们就只好稍微改动下源码,以适应我们的需求.今天正好在本地修改成功了,所以就想整理上来了,也是在前人的基础之上修改好的,呵呵,并不是我一个人的功劳.

  首先,去后台问答模块(模块配置里面)

PHPCMS2008 二次开发问答系统为专家答疑中心_phpcms2008

把这些都改成否.

  然后,找到/ask/question.php第2行:

  1. if(!$_userid) showmessage($LANG['please_login'],$MODULE['member']['url'].'login.php?forward='.urlencode(URL)); 

这个是判断登录的.这里我们注释掉 改成

 

  1. if(!$_userid)$_userid=0; 

再找到

  1. $info['userid'] = $posts['userid'] = $_userid
  2. $info['username'] = $posts['username'] = $_username

改成

  1. if($_userid == ""
  2.     $info['userid'] = $posts['userid'] = 0; 
  3.     $info['username'] = $posts['username'] = "游客"//建立一个名叫游客的会员 
  4. else 
  5.     $info['userid'] = $posts['userid'] = $_userid
  6.     $info['username'] = $posts['username'] = $_username

再找到/ask/show.php,打开源码找到

  1. if($M['answer_check']) 
  2.     $posts['status'] = 1; 
  3. else 
  4.     $posts['status'] = 3; 

改成

  1. if($M['answer_check']) 
  2.     $posts['status'] = 1; 
  3. else 
  4.     $posts['status'] = 3; 
  5.     $posts['optimal'] = 1; //问题自动设置为已解决 

再找到/ask/include/answer.class.php  找到里面的function add($id,$posts){}这个函数.

  1. $this->db->insert($this->table_posts, $posts); 
  2. $this->db->query("UPDATE ".DB_PRE."member_info SET answercount=answercount+1 WHERE userid='$_userid'"); 

在中间加上一段代码,像下面这样

  1. $this->db->insert($this->table_posts, $posts); 
  2.          
  3. $this->db->query("UPDATE $this->table SET status=5 where askid='$id'");//回答修改为最佳答案 
  4.          
  5. $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)} 这个就是正确回答的时间了.

显示最佳答案这块

  1. <!--最佳答案--> 
  2. {if $status==5} 
  3.    <div class="cat"> 
  4.       <h3 class="good">最佳答案 <span>回答者: {$optimail_username}   {$optimal_actor}     回复时间:{date('Y-m-d H:i',$answertime)}</span></h3> 
  5.       <div class="answer"> 
  6.        <p>{$answer}</p> 
  7.      </div> 
  8.     </div> 
  9. {/if} 

我们可以改成

  1. <!--最佳答案--> 
  2. {if $status==5 } 
  3.            <div class="cat"> 
  4.              <h3>专家解答</h3> 
  5.                <div class="answer"> 
  6.                 <span>{$answer}</span> 
  7.                 <p>回答者: {$optimail_username}        回复时间:{date('Y-m-d H:i',$answertime)}</p> 
  8.                 </div> 
  9.             </div> 
  10. {/if} 

样式问题自己可以修改.到此功能基本实现.如果有遇到什么问题的,可以留言问下我.

哦,还补充一点,其实问答模块里的栏目,就相当于问题分类.前台调用数据最好结合数据表 自定义用get标签最灵活,方便,实用了!