2013-11-29 2 views
1

У меня есть магазин с другой группой клиентов. У каждого клиента есть определенная скидка для всего продукта. Группа клиентов клиента A имеет 10 клиентов, а скидка - 10% на весь продукт. Скидка определяется на одном из моих сайтов API, поэтому это скидка в реальном времени для разных групп клиентов. Когда клиент регистрируется в группе клиентов A, он может видеть цену со скидкой 10% каждый раз (список продуктов, просмотр продукта, и весь процесс проверки.)Показать цену со скидкой во всем мире

Я могу достичь этого, позвонив ниже кода, но он отображается только на странице с карточкой не везде.

checkout_cart_product_add_after 

функция наблюдателя

$item = $observer->getQuoteItem(); 
$product = $observer->getProduct(); 
$price = $product->getPrice(); 
//print_r($item->toArray());exit; 
// Discounted 25% off 
$percentDiscount = 0.25; 

// This makes sure the discount isn't applied over and over when refreshing 
$specialPrice = $product->getPrice() - ($product->getPrice() * $percentDiscount); 
// Make sure we don't have a negative 
if($specialPrice>0){ 
    $item->setCustomPrice($specialPrice); 
    $item->setOriginalCustomPrice($specialPrice); 
    $item->getProduct()->setIsSuperMode(true); 
    } 

Как я этого добиться Пожалуйста, помогите

+0

Я не думаю, что это можно сделать через наблюдателей, вместо этого вам нужно вручную закодировать evey, где хотите показать скидку. например: список продуктов, виджеты боковой панели, мини-корзина и т. д. –

ответ

1

Точно так же с помощью наблюдателя событий вы можете получить скидку на цену продукта на продукт листинга странице:

<catalog_product_collection_load_after> 
    <observers> 
     <Your_Module_Observer> 
      <type>model</type> 
      <class>your_module/Observer/class> 
      <method>modifyPrices</method> 
     </Your_Module_Observer> 
    </observers> 
</catalog_product_collection_load_after> 

$products = $observer->getCollection(); 
foreach($products as $product) 
{ 
    $product->setPrice($myCustomPrice); 
} 
Смежные вопросы