A-A+
ecshop修改某会员对购买商品只能进行一次评论
ecshop 的评论机制是只要某会员购买了某款商品后就可以进行无限制的评价,这显然是不规范的,评论的体系应该是会员购买了一次商品就进行一次给分与评价,如何实现某个会员只对购买过的商品进行一次性的评价呢,我们需要进行判断该会员是否已经对购买过的商品进行了评价,以及评价数量,再获取对该商品购物的次数,评价数不能大于购物数次,下面夏日博客根据判断的条件进行二次的修改。
第一步,先在后台商店设置->基本->评论条件为只有购买过此商品的会员才能评价
第二步,打开 comment.php 文件,找到如下代码(会有两处,需要查找两次):
case COMMENT_BOUGHT : if ($_SESSION['user_id'] > 0) { $sql = "SELECT o.order_id". " FROM " . $ecs->table('order_info'). " AS o, ". $ecs->table('order_goods') . " AS og ". " WHERE o.order_id = og.order_id". " AND o.user_id = '" . $_SESSION['user_id'] . "'". " AND og.goods_id = '" . $cmt->id . "'". " AND o.order_status = '" . OS_CONFIRMED . "' ". " AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') ". " AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') ". " LIMIT 1"; $tmp = $db->getOne($sql); if (emptyempty($tmp)) { $result['error'] = 1; $result['message'] = $_LANG['comment_brought']; } }
修改为:
case COMMENT_BOUGHT : if ($_SESSION['user_id'] > 0) { $sql = "SELECT COUNT(o.order_id)". " FROM " . $ecs->table('order_info'). " AS o, ". $ecs->table('order_goods') . " AS og ". " WHERE o.order_id = og.order_id". " AND o.user_id = '" . $_SESSION['user_id'] . "'". " AND og.goods_id = '" . $cmt->id . "'". " AND (o.order_status = '" . OS_CONFIRMED . "' or o.order_status = '" . OS_SPLITED . "') ". " AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') ". " AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') "; $bought_count = $db->getOne($sql); if (!$bought_count) { $result['error'] = 1; $result['message'] = $_LANG['comment_brought']; }else{ $sql = "SELECT COUNT(comment_id) FROM " . $ecs->table('comment') . " WHERE user_id = '" . $_SESSION['user_id'] . "'". " AND id_value= '" . $cmt->id . "'"; $comment_count = $db->getOne($sql); if($comment_count >= $bought_count){ $result['error'] = 1; $result['message'] = '您已对此商品进行过评价!您可以继续购买以便再次评论。'; } } }
OK,修改完毕。