Magento 1.7 で、「特別メンバー」顧客グループに対して 20% 割引のプロモーション価格ルールを作成しました。
両方の価格を表示したいです。のようなものがあるだろうと思った
$_product->getPriceByCustomerGroup( $groupId );
ゴール
(ログインしていない):
- 通常価格: $10.99
- 会員価格: $5.99
(会員ログイン中):
- 通常価格: $10.99
- 会員価格: $5.99
Magento 1.7 で、「特別メンバー」顧客グループに対して 20% 割引のプロモーション価格ルールを作成しました。
両方の価格を表示したいです。のようなものがあるだろうと思った
$_product->getPriceByCustomerGroup( $groupId );
ゴール
(ログインしていない):
(会員ログイン中):
しばらくハッキングした後、自分の願いを釣り上げました
$now = Mage::getSingleton('core/date')->timestamp( time() );
$websiteId = Mage::app()->getStore()->getWebsiteId();
$customerGroup = 4;
Mage::getResourceModel('catalogrule/rule')->getRulePrice( $now, $websiteId, $customerGroup, $_productId);
わかりました、ちょっと面倒ですが、私はそれを持っていると思います。
製品の setCustomerGroupId を呼び出すことで、特定のグループ ID (以下の場合は 3) の価格を取得できます。唯一の注意点は、setCustomerGroupId 関数を呼び出すと、顧客グループ ID を別のグループに設定して、そのグループの価格を受け取ることができないということです。一度価格を設定すると、それは上書きされません。
以下の例では、グループ ID 3 を除くすべてのグループの通常価格が $399.99 の製品があります。グループ ID 3 には、20% 割引のカタログ価格ルールが設定されています。
以下のコードを実行すると、次のようになります。
product A: 399.99
product B (group id 3): 319.9900
product B (group id 0): 319.9900
顧客グループを 2 回目に設定しても価格が変わらないことに注意してください
$_productA = $this->getProduct();
$_productB = Mage::getModel('catalog/product')->load($_productA->getId());
$_productB->setCustomerGroupId(3);
echo 'product A: '.$_productA->getFinalPrice().'<br/>';
echo 'product B (group id 3): '.$_productB->getFinalPrice().'<br/>';
$_productB->setCustomerGroupId(0);
echo 'product B (group id 0): '.$_productB->getFinalPrice().'<br/>';
2回目のラッキー:)
別の解決策。グループ価格がメイン価格よりも小さくなる場合、関数 getGroupPrice はメイン価格を返します。
//get product
$product = Mage::getModel('catalog/product')->load($id);
//get group by code
$group = Mage::getModel('customer/group')->load($code, 'customer_group_code');
//get group price
$product->setCustomerGroupId($group->getId());
$price = $product->getGroupPrice();
//get main price
$product->setCustomerGroupId(null);
$price = $product->getPrice();
これがあなたのやり方です。テスト済みで、動作しています。
<?php
$now = Mage::getSingleton('core/date')->timestamp( time() );
$websiteId = 1; // Choose your store # here
$customerGroup = 4;
$productId = 9369;
$rules = Mage::getResourceModel('catalogrule/rule');
echo $rules->getRulePrice($now, $websiteId, $customerGroup, $productId));
?>