求助!!!完美在首页分类页显示会员等级价格

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



完美在首页分类页显示会员等级价格

效果:A.某等级会员只能看到该等级价格,其他等级显示为“登陆查看”。

B.如果后台关闭等级价格显示,未登陆不显示等级价格,登陆后会多出该会员的等级价格。

注意事项:a.后台要先建立会员等级并设置好等级折扣。
b.把会员帐号加入到某等级下。

以后有时间教大家把等级折扣改的智能一点,既能打折也能减少固定金额。

大家有空也点点我的网站送我几个IP吧。http://bjfzpf.com


1.goods.php文件中找到函数get_user_rank_prices
修改'price'=> price_format($row['price']));
为 'price'=> $_SESSION['user_rank']==$row['rank_id']?price_format($row['price']):'登陆查看');

2.把该函数剪切到includes/lib_common.php中(随便放哪里,目的是在其他文件中调用get_user_rank_prices函数)

3.修改category.php中的SQL语句:

$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ' .
"IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, g.promote_price, g.goods_type, " .
'g.promote_start_date, g.promote_end_date, g.goods_brief, g.goods_thumb , g.goods_img ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
'LEFT JOIN ' . $GLOBALS['ecs']->table('member_price') . ' AS mp ' .
"ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' " .
"WHERE $where $ext ORDER BY $sort $order";
修改为如下:
$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ' .
"g.shop_price, g.promote_price, g.goods_type, " .
'g.promote_start_date, g.promote_end_date, g.goods_brief, g.goods_thumb , g.goods_img ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
"WHERE $where $ext ORDER BY $sort $order";


在下面的循环处理(约502行)中加入:$arr[$row['goods_id']]['rank_price']= get_user_rank_prices($row['goods_id'], $row['shop_price']);

4.在模板文件中调用:

在goods_list.lbi文件中
<!--{else}-->
<font class="price">{$lang.shop_price}{$goods.shop_price}</font><br />
<!--{/if}-->
这句的后面加上下面的代码(共3处,都加上):
<!-- {foreach from=$goods.rank_price item=rank_price key=key} 会员等级对应的价格-->
{$rank_price.rank_name}:<span class="price" id="ECS_RANKPRICE_{$key}">{$rank_price.price}</span><br />
<!--{/foreach}-->
保存文件,后台清空缓存,再刷新一下试试吧。

5.首页显示等级价格修改:

修改includes/lib_goods.php文件中get_recommend_goods函数中的SQL语句:

把$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .
"IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ".
"promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img, RAND() AS rnd " .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
"LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".
"ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ";


修改为:

$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, g.shop_price, '.
'promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img, RAND() AS rnd ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ';

在下面的循环处理中加入:
$goods[$idx]['rank_price']= get_user_rank_prices($row['goods_id'], $row['shop_price']);

6.分别在模板文件:recommend_best.lbi,recommend_hot.lbi,recommend_new.lbi中找到这一句:
{$lang.shop_price}<b>{$goods.shop_price}</b><br />
<!--{/if}-->

在这句后面加上:
<!-- {foreach from=$goods.rank_price item=rank_price key=key} 会员等级对应的价格-->
{$rank_price.rank_name}:<span class="price" id="ECS_RANKPRICE_{$key}">{$rank_price.price}</span><br />
<!--{/foreach}-->

保存文件,后台清空缓存,再刷新一下就看到了。


6.其他文件的修改都一样,比如相关商品,都是先修改SQL查询,再调用get_user_rank_prices函数赋值,再在模板里循环一下就可以了。



第一,和第二那里看的有点糊涂呢?有好心的哥哥或姐姐告诉我。要怎么改吗?

回答:
如果你设置过 会员等级价 自动就会显示当前会员等级价格!

谢谢楼上的

我设置过 会员等级价 登录后怎么不显示相应的价格呢

收藏备用

2.把该函数剪切到includes/lib_common.php中(随便放哪里,目的是在其他文件中调用get_user_rank_prices函数)

剪切哪个函数啊?

谁用上了?我2.7.2按这个方法改,程序出错