我实际上是在与客户讨论在他们的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)