1

私は卸売食品の電子商取引サイトを構築しており、製品の価格はログインしているユーザーに応じて変化します。メンバーの価格と、基本的に価格の変更に関係するすべてのモジュールを調べましたが、それらは 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' などを使用して、そのようなユーザーにフックしようとしましたが、うまくいきませんでした。

そこに置く正しい変数は何ですか?

ありがとう

4

2 に答える 2

1

このDrupal 7 グローバル $user オブジェクトを試してください

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 は、ユーザーに割り当てられたロールの配列です。

それが役に立ったことを願っています

于 2012-07-24T11:27:40.877 に答える
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

于 2013-04-03T04:47:01.867 に答える