2010-12-09 145 views
0

我有这个任务要做,但我坚持下去。客户想要获得购买的类别名称产品。此信息通常未设置。因此,第一步我试图捕获事件checkout_cart_product_add_after并设置产品类别。获取购买产品的类别

所以在我Observer.php我试图让目前的类别,通过:

Mage::registry('current_category')->getName()

但现在看来,current_category对象未在法师注册表中设置。我如何以不同的方式将产品类别添加到产品中? (请注意,产品可能属于多个类别,我只需要购买它的产品)。

问候, 文图斯

回答

1

保持这个数据在用户会话不是那么好的主意。还有另外一种方法。 在产品页面上,我添加了一个隐藏的input标签,其中包含当前类别ID,可通过$product->getCategory()->getEntityId()接收。

第二步比较困难。在添加新字段(属性)之前,sales_flat_quote_itemsales_flat_order_item名为from_category(我的自定义名称;))。现在我用事件sales_quote_save_before的观察者,并将其设置为Quote Item my custom attribute。

要转换报价项目订购与我的自定义项目属性我刚刚加入到config.xml中global部分:


<fieldsets> 
    <sales_convert_quote_item> 
    <from_category> 
     <to_order_item>*</to_order_item> 
    </from_category> 
    </sales_convert_quote_item> 
</fieldsets> 

现在我可以用它结账。

1

创建会话对象和存储法师::注册表( 'current_category') - >的getName();有那么:

  • 它,即使用户已经搬走产品页面,您可以得到
  • 你可以决定做什么,如果这是空的,客户端已经访问了产品页面直接

当然你可以告诉你的客户,这不是一个万无一失的解决方案,而不是这个,他可能会设置谷歌分析的渠道,并有正确的客户行踪统计