我正在建立一个批发食品的电子商务网站,产品的价格会根据用户登录而变化。我看过会员定价,基本上每个模块都可以找到改变价格但是它们要么用于drupal 6或者不是真正的后续。我使用Drupal 7和ubercart 3。
我找到了这个模块http://drupal.org/project/uc_custom_price。它在产品创建中添加了一个字段,允许将自定义的PHP代码添加到每个单独的产品中,这正是我所追求的。但是,我不是那么好用PHP这就是为什么我一直在寻找模块而不是改变代码。
目前我得到的是:
if ([roles] == 'test company') {
$item->price = $item->price*0.8;
}
除了[roles]部分在那里使用是错误的,它只是抛出错误。我尝试使用像$ users-> uid =='1'之类的东西试图挂钩这样的用户,但这也没有用。
放在那里的正确变量是什么?
感谢
答案 0 :(得分:1)
试试这个Drupal 7 global $user object
global $user; // access the global user object
if(in_array("administrator",$user->roles)){ // if its administrator
$item->price = $item->price*0.8;
}elseif(in_array("vip",$user->roles)){ // if its a vip
//..
}elseif(in_array("UserCompanyX",$user->roles)){ // if its a user from company X
//..
}
或
if($user->roles[OFFSET] == "ROLE"){
// price calculation
}
$ user-> roles是分配给用户的角色数组。
希望它有所帮助
答案 1 :(得分:0)
使用UC Price API制作您自己的模块: http://www.ubercart.org/docs/developer/11375/price_api
function example_uc_price_handler() {
return array(
'alter' => array(
'title' => t('Reseller price handler'),
'description' => t('Handles price markups by customer roles.'),
'callback' => 'example_price_alterer',
),
);
}
function example_price_alterer(&$price_info, $context, $options = array()){
global $user;
if (in_array("reseller", $user->roles)) { //Apply 30% reseller discount
$price_info["price"] = $context["subject"]["node"]->sell_price - (
$context["subject"]["node"]->sell_price * 0.30) ;
}
return;
}
另请参阅:http://www.ubercart.org/forum/development/14381/price_alteration_hook