discuz x2 回复评价。

discuz

2012-06-13 15:51

管理员组 可以给回帖点评打分 简单评价

没事瞎鼓秋  其实dx有评分功能~   开阔一下思路了 可以干别的~

我写的不规范的  大家可以参考一下  开发一下思路。

 







 

 

开始~  

------------------------------------------------------------------------------------------------------------------------------------------------


首先建立一个表

id      pid         uid                uname              fen         nr          js
id   帖子ID      评分人ID       评分人名字        分数       内容      时间

 

然后找到帖子 和回帖模板

\template\default\forum
viewthread.htm 帖子模板
viewthread_node.htm 回帖循环  在这里该!!

我放在【回复】那位置了 在412行 

      <!--{if $_G[fid] == 46 and $post['first']==0 and $_G[uid]>0 and $_G[groupid]==1 }-->
              <a href="dafen.php?mod=ping&pid=$post[pid]&tid=$_G[tid]" onclick="showWindow('dafen', this.href, 'get', 0)">老师打分!</a>
     <!--{/if}--> 

说明: 板块ID  46   必须的回帖   必须登陆   必须是管理员组  才能显示 老师评分选项。

  <a href="dafen.php?mod=ping&pid=$post[pid]&tid=$_G[tid]" onclick="showWindow('dafen', this.href, 'get', 0)">老师打分!</a>

 

showWindow   ajax 显示弹窗 


 dafen.php  

----------------------------------------------------------------------------------------------------------------------

<?php

define('APPTYPEID', 1);
define('CURSCRIPT', 'home');

require_once './source/class/class_core.php';

$discuz = C::app();
$discuz->init();


if( empty($_POST[pid]) and  empty($_GET[pid]) ) die('err');
if($_G[adminid]!=1)die('你不是管理员!');
if($_G[groupid]!=1) die('你不在教师组中!');

 

$mod = getgpc('mod');
if(!in_array($mod, array('ping', 'add', 'asd'))) {
 die('err');
}


$mod();

 

function add(){
 global $_G;
 $uid=$_G[uid];
 $uname=$_G[username];
 $pid=intval($_POST[pid]);
 $sj=time();
 $f=intval($_POST[fen]);
 $nr=htmlspecialchars($_POST[nr]);
 $tid=$_POST[tid];
 
 $df_arr=DB::fetch_first("SELECT id,pid FROM `dafen` where pid='$pid' order by id desc ");
 if(count($df_arr)>1){
        DB::query("update  dafen  set fen=$f,nr='$nr',pid=$pid,sj=$sj,uid=$uid,uname='$uname' where pid=$pid");
 }
 else{
        DB::query("insert into dafen (fen,nr,sj,pid,uid,uname) values ('$f','$nr','$sj','$pid','$uid','$uname')");
 }
  echo  "<script type=\"text/javascript\">alert(\"打分完成.\");location.href='/forum.php?mod=viewthread&tid={$tid}#pid{$pid}';</script>";
}


function ping(){
 $id=$_GET[pid];
 $tid=$_GET[tid];
 $df_arr=DB::fetch_first("SELECT * FROM `dafen` where pid='$id' order by id desc ");
 include template("forum/dafen");//调用单页模版文件
 }
 ?>

\template\default\forum\dafen.htm     模板文件

-----------------------------------------------------------------------------------------

{subtemplate common/header}
<form id="form1" name="form1" method="post" action="dafen.php?mod=add" >
<table width="570" height="253" border="1">
  <tr>
    <td width="86" height="30" align="center"><h3 class="flb">打分!</h3></td>
    <td width="468" align="right"> <span><a href="javascript:void(0);"  onclick="hideWindow('dafen');" >关闭窗口</a></span>
   </td>
  </tr>
  <tr>
    <td width="86" height="49" align="center">分数:</td>
    <td width="468">
      <label>
        <input type="text" name="fen" id="fen" value="$df_arr[fen]" /><input name="pid" type="hidden" value="$id"  />
        <input name="tid" type="hidden" value="$tid "  />
      </label>
    </td>
  </tr>
  <tr>
    <td height="137" align="center">说明:</td>
    <td><p>
      <textarea name="nr" id="textarea" cols="45" rows="5">$df_arr[nr]</textarea>
    </p>
      </td>
  </tr>
  <tr>
    <td align="center">&nbsp;</td>
    <td>
      <label>
        <input type="submit" name="button" id="button" value="提交" />
      </label>
   
      </td>
  </tr>
</table>
</form>
{subtemplate common/footer}

 

 然后在回到 \template\default\forum\ viewthread_node.htm回帖列表模板

在大约275行<!--{subtemplate forum/viewthread_node_body}-->后面显示评语! 
    <!--{if count($post[df]) > 1}-->
 <hr><br>评分老师: $post[df][uname] <br>分数:      $post[df][fen]分!<br> 点评内容:<br>  &nbsp;&nbsp;&nbsp;&nbsp;  $post[df][nr] 
    <!--{/if}-->

 

数据哪里来。。

在帖子php文件  \source\module\forum\forum_viewthread.php   

我靠 根本看不明白啊 这是天书  随便找个地方放 我们就放838行吧

  //==========================================================
if ($_G['forum_thread'][fid]==46){
$df_arr=array();
foreach($postlist as $pid => $post) {
  $df_arr=DB::fetch_first("SELECT * FROM `dafen` where pid='{$postlist[$pid][pid]}' order by id desc ");
  if (count($df_arr)>1){$postlist[$pid][df] = $df_arr;}
 }
}
//===========================================================

 

dx有缓存,在调试的时候  你该了模板   你需要去 \data\template 删除下面文件  才能显示

1_1_forum_dafen.tpl.php

1_1_forum_viewthread_node.tpl.php

1_diy_forum_viewthread.tpl.php

 

真的很无聊。。。。dx真的太强大了   该不明白。。。