在dedecms中,通过JavaScript和PHP代码实现会员登录前后显示不同价格。
在dedecms系统中,为了实现会员登录前后显示不同价格的功能,可以通过以下步骤来实现:

一、添加商品字段
需要在后台商品管理中添加几个新的字段来存储不同会员等级的价格,这些字段可以包括:
1、trueprice:普通价格
2、hprice:优惠价格(会员价)
3、gprice:高级会员价格
二、修改购物车处理文件
需要修改/plus/posttocar.php文件,以便在用户将商品加入购物车时根据其会员等级显示相应的价格,以下是具体的代码修改步骤:
1、引入必要的类和文件:

require_once (dirname(__FILE__) . "/../include/common.inc.php"); require_once DEDEINC.'/shopcar.class.php'; // 购物车的类 require_once DEDEINC.'/memberlogin.class.php'; // 会员登录的类
2、实例化会员登录类并检查用户是否登录:
$cfg_ml = new MemberLogin(); // 实例化会员登录类
if(empty($cfg_ml>M_ID)){ // 如果用户没有登录
ShowMsg("您没有登录!", "/member/login.php", false, 5000);
exit;
} else {
// 用户已登录,继续处理购物车逻辑
}
3、获取用户等级:
$userid = $cfg_ml>M_ID;
$result = $dsql>Getone("select rank from #@__member where mid='$userid'");
$dengji = $result['rank'];
4、根据用户等级显示不同的价格:
$cts = GetChannelTable($rs['channel']);
switch ($dengji) {
case 10:
$rows = $dsql>GetOne("SELECT aid as id,trueprice as price,units FROM$cts[addtable] WHERE aid='$id'");
break;
case 20:
$rows = $dsql>GetOne("SELECT aid as id,hprice as price,units FROM$cts[addtable] WHERE aid='$id'");
break;
case 50:
$rows = $dsql>GetOne("SELECT aid as id,gprice as price,units FROM$cts[addtable] WHERE aid='$id'");
break;
default:
echo "您不是会员";
break;
}
5、将商品添加到购物车:
if(!is_array($rows)) {
$rows['buynum'] = $buynum;
}
$cart = new MemberShops();
$cart>addItem($id, $rows);
ShowMsg("已添加到购物车<a href='car.php'>查看购物车</a>","car.php");
exit();
三、前端页面调整
为了在前端页面上显示不同会员等级的价格,可以在商品详情页或列表页模板文件中进行相应的判断和输出,在商品详情页模板中,可以添加以下代码:
{if $cfg_ml>M_Rank == 10}
<p>商品价格: {$rs[trueprice]}</p>
{elseif $cfg_ml>M_Rank == 20}
<p>商品价格: {$rs[hprice]}</p>
{elseif $cfg_ml>M_Rank == 50}
<p>商品价格: {$rs[gprice]}</p>
{else}
<p>您不是会员,无法查看此价格</p>
{/if}
四、FAQs
1、如何在dedecms中设置不同会员等级的价格?

在后台商品管理中添加新的字段来存储不同会员等级的价格,如trueprice(普通价格)、hprice(优惠价格)和gprice(高级会员价格),在前台模板文件中根据用户的会员等级动态显示相应的价格。
2、如果用户未登录,如何引导其登录以查看会员价格?
在前台模板文件中,可以使用条件判断语句来检测用户是否登录,如果用户未登录,可以显示一个登录链接或按钮,并引导用户前往登录页面,一旦用户成功登录,系统将自动跳转回之前浏览的页面,并显示相应的会员价格。