打开简单产品时转发到可配置产品

时间:2012-10-18 13:49:12

标签: magento

我有一个Magento商店,有2个简单的产品

  • 大红杯
  • Great Blue Cup

和可配置的产品

  • Great Cup

分配了这些杯子。

红色和蓝色杯子在搜索中可见。

如果用户单击其中一个简单产品,则应打开可配置产品,但应预先选择正确的颜色。

我知道可以将一个简单的产品分配给多个可配置产品,因此如果找到两个匹配的可配置产品,我会记录一个异常,只需要接受第一个产品。

我想我必须抓住目录/产品/视图的predispatch事件,并以某种方式用可配置的产品替换简单的产品。

我现在如何预先配置正确的简单产品?

对此有优雅的解决方案吗?

2 个答案:

答案 0 :(得分:4)

我找到了解决方案:

  1. controller_action_predispatch_catalog_product_view
  2. 上注册观察员
  3. 检查我们是否有一个父产品是可配置产品的简单产品
  4. 创建一个包含简单产品
  5. 配置数据的数组
  6. 将此数据传递给Mage::helper('catalog/product_view')->prepareAndRender()(第三个参数)
  7. 通过在前方操作
  8. 上设置FLAG_NO_DISPATCH来停止调度

    Mestrona_ForwardToConfigurable module on github中提供了完整的代码。

答案 1 :(得分:0)

如果简单产品符合某些要求,一个想法就是重定向到可配置产品:

  • 将新属性“should_redirect_to_parent”改为True(optionnal)
  • 至少有一个父产品(为此,我让你按照Alex的链接)

ps:如果您不想进行父产品查询,可以添加“redirect_sku”或“redirect_product_id”等新属性,以便直接在该产品上进行重定向

对于重定向,您应该使用事件catalog_controller_product_init_after,如果前两个条件匹配,则将用户重定向到可配置产品。

ps:对于性能优化,您可以使用catalog_controller_product_init_before来保存扩展且无用的Product :: load(),但它需要您构建自定义SQL查询以搜索父产品

告诉您是否需要一些代码示例