获取购买产品的类别

时间:2010-12-09 10:58:08

标签: php events magento

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

所以在我的Observer.php中,我尝试通过以下方式获取当前类别:

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

但似乎没有在Mage注册表中设置current_category对象。如何以不同的方式向产品添加类别? (请注意,产品可能属于许多类别,我只需要购买它的那个类别。)

此致 文图斯

2 个答案:

答案 0 :(得分:1)

创建会话对象并存储Mage :: registry('current_category') - > getName();那时:

  • 即使用户已移至产品页
  • ,您也可以获得
  • 如果此项为空且客户端已直接访问产品页面,您可以决定该怎么做
当然,您可以告诉您的客户,这不是一个万无一失的解决方案,而是他可能只是设置谷歌分析的漏斗并在页面上获得客户行踪的正确统计

答案 1 :(得分:1)

将这些数据保存在用户会话中并不是一个好主意。还有另一种方式。 在产品页面上,我添加了一个隐藏的input标记,其中包含当前类别ID,可由$product->getCategory()->getEntityId()接收。

第二步更难。在我将新字段(属性)添加到名为sales_flat_quote_item的{​​{1}}和sales_flat_order_item(我的自定义名称;))之前。现在我将观察者用于事件from_category,并设置为引用项目我的自定义属性。

要使用我的自定义属性将报价项目转换为订单项目,我刚刚添加到config.xml sales_quote_save_before部分:

global

现在我可以在结帐时使用它。