仅在Magento中显示注册用户的价格

时间:2014-12-11 14:24:20

标签: magento magento-1.8

我正在使用Magento CE,我想知道是否可以隐藏价格,并仅为注册用户显示它们,我应该做什么?

提前感谢。

2 个答案:

答案 0 :(得分:2)

如果您使用标准方法显示价格,您可以使用观察员执行此操作。

在模块config.xml中定义观察者

<catalog_product_collection_load_after>
    <observers>
        <hide_price_list_collection>
            <type>singleton</type>
            <class>your_module/observer</class>
            <method>listCollection</method>
        </hide_price_list_collection>
    </observers>
</catalog_product_collection_load_after>
<catalog_product_load_after>
    <observers>
        <hide_price_product>
            <type>singleton</type>
            <class>your_module/observer</class>
            <method>productLoadAfter</method>
        </hide_price_product>
    </observers>
</catalog_product_load_after>

在observer类中创建方法:

public function listCollection(Varien_Event_Observer $observer)
{
    if (!Mage::helper('customer')->isLoggedIn()) {
        $collection = $observer->getEvent()->getCollection();
        foreach ($collection->getItems() as $_item ) {
            $_item->setCanShowPrice(false);
        }
    }
    return $this;
}

public function productLoadAfter(Varien_Event_Observer $observer)
{
    if (!Mage::helper('customer')->isLoggedIn()) {
        $product = $observer->getEvent()->getProduct();
        $product->setCanShowPrice(false);
    }
    return $this;
}

答案 1 :(得分:0)

您需要更新list.phtml的类别页面和view.phtml的产品页面:

 <?php
     if ($this->helper('customer')->isLoggedIn() ) {
         $showprice = "style=display:block";
     } else { 
         $showprice = "style=display:none";
 }?>
     <div id="your-price-container" <?php echo $showprice;?> > </div";