仿京东评论 优点、不足、总结

2016-07-07 16:02 来源:www.chinab4c.com 作者:ecshop专家

环境:EC2.7.0+360模板UTF-8
效果展示页面:
http://www.1j1h.com/goods.php?id=1555

修改前请备份数据库和相关文件。

第一步:修改数据库

进入数据库 找到 ecs_comment,前缀修改过的,当然就不是这个表了,
contenttextutf8_general_ci
这个字段后 加上两个字段
content2 text utf8_general_ci
content3 text utf8_general_ci

我这里将以原来的
emailvarchar(60)
这个字段为标题字段,当然你也可以再新加一个作为标题字段

这样我现在的这个字段说明分别是:
email - 标题 content - 总结 content2 优点 content3-不足

第二步:修改 includes/lib_main.php
找到大概1586行:(红色为添加部分)

$ids .= $ids ? ",$row[comment_id]" : $row['comment_id'];
$arr[$row['comment_id']]['id'] = $row['comment_id'];
$arr[$row['comment_id']]['email'] = $row['email'];
$arr[$row['comment_id']]['username'] = $row['user_name'];
$arr[$row['comment_id']]['content2']= str_replace('\r\n', '<br />', htmlspecialchars($row['content2'])); //tc
$arr[$row['comment_id']]['content3']= str_replace('\r\n', '<br />', htmlspecialchars($row['content3'])); //tc

$arr[$row['comment_id']]['content']= str_replace('\r\n', '<br />', htmlspecialchars($row['content']));
$arr[$row['comment_id']]['content']= str_replace('\n', '<br />', $arr[$row['comment_id']]['content']);
$arr[$row['comment_id']]['rank']= $row['comment_rank'];

第三步:修改 /comment.php
1)找到大概247行:(红色为添加部分)
$smarty->assign('comment_type', $cmt->type);
$smarty->assign('id',$cmt->id);
$smarty->assign('content2',$cmt->content2);//tc
$smarty->assign('content3',$cmt->content3); //tc

$smarty->assign('username',$_SESSION['user_name']);
$smarty->assign('email',$_SESSION['email']);

2)找到大概 290行,将下面这块代码 替换掉 原有的代码

/* 保存评论内容 */
$sql = "INSERT INTO " .$GLOBALS['ecs']->table('comment') .
"(comment_type, id_value, email, user_name, content,content2,content3, comment_rank, add_time, ip_address, status, parent_id, user_id) VALUES " .
"('" .$cmt->type. "', '" .$cmt->id. "', '".$cmt->email."', '$user_name', '" .$cmt->content."','".$cmt->content2."','".$cmt->content3."', '".$cmt->rank."', ".gmtime().", '".real_ip()."', '$status', '0', '$user_id')";

最后一步:显示页面,修改themes/360/library/comments_list.lib
替换下面关键代码。

  1. ...<div class="clearfix">
  2. <ul class="comments">
  3. <!-- {if $comments} -->
  4. <!-- {foreach from=$comments item=comment} -->
  5. <li class="word" style="border-bottom:#ccc 1px dashed;">
  6. <font class="f1">
  7. <!-- {if $comment.username} -->{$comment.username|escape:html}<!-- {else} -->{$lang.anonymous}<!-- {/if} -->
  8. </font> ( {$comment.add_time} ) <font style="font-size:14px; font-weight:bold; color:#336699">{$comment.email}</font><br />
  9. <img src="../images/stars{$comment.rank}.gif" alt="{$comment.comment_rank}" />
  10. <p><font color="#FF9900">优点:</font>{$comment.content2}<br>
  11. <font color="#FF9900">不足:</font>{$comment.content3}<br>
  12. <font color="#FF9900">总结:</font>{$comment.content}</p>
  13. <!-- {if $comment.re_content} -->
  14. <p class="re_content">
  15. <font class="f1">{$lang.admin_username}</font><br>
  16. {$comment.re_content}
  17. </p>
  18. <!-- {/if} -->
  19. </li>
  20. <!-- {/foreach} -->
  21. <!--{else}-->
  22. <li>{$lang.no_comments}</li>
  23. <!--{/if}-->
  24. </ul>
  25. ....
  26. <script type="Text/Javascript" language="JavaScript">
  27. <!--
  28. {literal}
  29. function selectPage(sel)
  30. {
  31. sel.form.submit();
  32. }
  33. {/literal}
  34. //-->
  35. </script>
  36. </div>
  37. <!--翻页 END-->
  38. <!--评论表单 start-->
  39. <div class="commentsList">
  40. <form action="javascript:;" onsubmit="submitComment(this)" method="post" name="commentForm" id="commentForm">
  41. <table border="0" cellspacing="5" cellpadding="0" style="background:#FFF;">
  42. <tr>
  43. <td width="211" align="left" style="font-size:14px; font-weight:bold;">发表评价并打分:</td>
  44. <td style="display:none" {if !$enabled_captcha}{/if}><!--{if $smarty.session.user_name}-->{$smarty.session.user_name}<!--{else}-->{$lang.anonymous}<!--{/if}--></td>
  45. </tr>
  46. <tr>
  47. <td align="right">标题:</td>
  48. <td>
  49. <input type="text" name="email" id="email" style="width:420px;" maxlength="100" value="" class="formBorder"/>
  50. </td>
  51. </tr>
  52. <tr>
  53. <td align="right">{$lang.comment_rank}:</td>
  54. <td>
  55. <input name="comment_rank" type="radio" value="1" id="comment_rank1" /> <img src="../images/stars1.gif" />
  56. <input name="comment_rank" type="radio" value="2" id="comment_rank2" /> <img src="../images/stars2.gif" />
  57. <input name="comment_rank" type="radio" value="3" id="comment_rank3" /> <img src="../images/stars3.gif" />
  58. <input name="comment_rank" type="radio" value="4" id="comment_rank4" /> <img src="../images/stars4.gif" />
  59. <input name="comment_rank" type="radio" value="5" checked="checked" id="comment_rank5" /> <img src="../images/stars5.gif" />
  60. </td>
  61. </tr>
  62. <tr>
  63. <td align="right" valign="top">您认为该商品的优点是:</td>
  64. <td><textarea name="content2" class="formBorder" style="height:50px; width:520px;"></textarea></td>
  65. </tr>
  66. <tr>
  67. <td align="right" valign="top">您认为该商品的不足是:</td>
  68. <td><textarea name="content3" class="formBorder" style="height:50px; width:520px;">暂时还没发现缺点哦!</textarea></td>
  69. </tr>
  70. <tr>
  71. <td align="right" valign="top">总结:</td>
  72. <td>
  73. <textarea name="content" class="formBorder" style="height:50px; width:520px;"></textarea>
  74. <input type="hidden" name="cmt_type" value="{$comment_type}" />
  75. <input type="hidden" name="id" value="{$id}" />
  76. </td>
  77. </tr>
  78. <tr>
  79. <td colspan="2">
  80. <!-- 判断是否启用验证码{if $enabled_captcha} -->
  81. ....

  82. <script type="text/javascript">
  83. //<![CDATA[
  84. {foreach from=$lang.cmt_lang item=item key=key}
  85. var {$key} = "{$item}";
  86. {/foreach}
  87. {literal}
  88. /**
  89. * 提交评论信息
  90. */
  91. function submitComment(frm)
  92. {
  93. var cmt = new Object;
  94. //cmt.username= frm.elements['username'].value;
  95. cmt.email= frm.elements['email'].value;
  96. cmt.content= frm.elements['content'].value;
  97. cmt.content2= frm.elements['content2'].value;
  98. cmt.content3= frm.elements['content3'].value;
  99. cmt.type= frm.elements['cmt_type'].value;
  100. cmt.id= frm.elements['id'].value;
  101. cmt.enabled_captcha = frm.elements['enabled_captcha'] ? frm.elements['enabled_captcha'].value : '0';
  102. cmt.captcha= frm.elements['captcha'] ? frm.elements['captcha'].value : '';
  103. cmt.rank= 0;
  104. for (i = 0; i < frm.elements['comment_rank'].length; i++)
  105. {
  106. if (frm.elements['comment_rank'][i].checked)
  107. {
  108. cmt.rank = frm.elements['comment_rank'][i].value;
  109. }
  110. }
  111. //if (cmt.username.length == 0)
  112. //{
  113. //alert(cmt_empty_username);
  114. //return false;
  115. //}
  116. /*
  117. if (cmt.email.length > 0)
  118. {
  119. if (!(Utils.isEmail(cmt.email)))
  120. {
  121. alert(cmt_error_email);
  122. return false;
  123. }
  124. }
  125. else
  126. {
  127. alert(cmt_empty_email);
  128. return false;
  129. }
  130. */
  131. if (cmt.email.length == 0)
  132. {
  133. alert('请输入评论标题!');
  134. return false;
  135. }
  136. if (cmt.content.length == 0)
  137. {
  138. alert(cmt_empty_content);
  139. return false;
  140. }
  141. if (cmt.content2.length == 0)
  142. {
  143. alert(cmt_empty_content);
  144. return false;
  145. }
  146. if (cmt.content3.length == 0)
  147. {
  148. alert(cmt_empty_content);
  149. return false;
  150. }
  151. if (cmt.enabled_captcha > 0 && cmt.captcha.length == 0 )
  152. {
  153. alert(captcha_not_null);
  154. return false;
  155. }
  156. Ajax.call('comment.php', 'cmt=' + cmt.toJSONString(), commentResponse, 'POST', 'JSON');
  157. return false;
  158. }
  159. .....
复制代码


OK!清除缓存 就可以了!我当前提供思路,如果有更好方案 完全可以自己修改的!

回答:
好啊 。好啊 顶上去一个

板凳!楼主辛苦了,很强大的东西!支持下!

东京站太复杂了!我觉得不好

总体上将!京是大气!排版舒服

5# cnegle
公司自己的服务器放机房托管的。

本人觉得现在的网站,简单明了易懂,最关键!模板也是!

其实有个更简单的用JS将 优点、不足、总结放在一个Sting里传到数据库里 用JOIN这个函数,显示的在PHP里用 explode将String分离
这个功能 我做过最简单的就是加这两个函数可以搞定,希望大家有更好的方法

最近刚好有用户要完全仿360留言的也是刚出炉的,呵呵

不错的东西

楼主很强,值得支持!

很好,支持下