Magento - 预览产品但需要登录才能购买

2 php magento magento-1.6

我实际上是在与客户讨论在他们的magentocommerce中整合社交网络共享的必要性.

客户希望用户能够在Facebook上分享产品,并允许产品"预览"到非登录用户(可能想要通过Facebook本身跟踪链接),但是然后需要登录才能购买该产品.

我告诉他们禁用整个网站的登录,并且只需要结帐(这也是谷歌索引的最佳方式),但是他们让我为非登录用户创建某种预览,并要求然后登录以查看"添加到购物车"按钮.

这很容易吗?这值得么?我仍然认为最好的解决方案是只需要登录结账.

你有任何链接/演示可以显示某种预览,但需要登录吗?我实际上正在考虑ebay向非登录用户显示内容的方式.

Dre*_*ter 11

请尽量避免乱丢您的模板,Mage::getSingleton('customer/session')->isLoggedIn()如之前建议的那样.

如果您只需处理产品视图中的添加到购物车功能,那么您需要的只是一个小布局xml ...

<customer_logged_out>
    <remove name="product.info.addtocart" />
</customer_logged_out>
Run Code Online (Sandbox Code Playgroud)

很好,干净,容易.

但是,如果你必须处理网站范围,即产品视图,产品列表等,那么我建议你创建一个订阅的观察者catalog_product_is_salable_after.每次调用Mage_Catalog_Model_Product isSalable后,此事件都会被触发,这并不令人惊讶 - 因此,如果客户未登录,您将有机会强制销售产品.

显然你确实需要创建一个模块,但这是IMO最好的选择,值得付出额外的努力.

因此,要创建观察者,您需要将以下内容添加到config.xml 的前端节点:

<events>
    <catalog_product_is_salable_after>
        <observers>
            <yourmodule>
                <class>Yourcompany_Yourmodule_Model_Observer</class>
                <method>catalog_product_is_salable_after</method>
            </yourmodule>
        </observers>
    </catalog_product_is_salable_after>
</events>
Run Code Online (Sandbox Code Playgroud)

您的观察者将需要以下内容:

class Yourcompany_Yourmodule_Model_Observer
{
    public function catalog_product_is_salable_after(Varien_Event_Observer $observer)
    {
        if (! Mage::helper('customer')->isLoggedIn()) {
             $observer->getEvent()->getData('salable')
                 ->setData('is_salable', false);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)