2012-10-18 72 views
1

当我有2级简单的产品转发到配置的产品打开简单的产品

Magento的店
  • 大红色杯
  • 大蓝杯

和可配置的产品

  • Great Cup

分配了这些杯子。

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

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

我知道一个简单的产品可以分配给多个可配置的产品,所以如果发现两个匹配的可配置产品,我会记录一个异常。

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

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

这是否有一个优雅的解决方案?

+0

开始点:http://gabrielsomoza.com/magento/getting-a-products-parent-id-in-magento/ http://www.webcatch.co.uk/blog/index.php/2010/ 04/01/magento-qa-how-to-redirect-from-simple-product-to-configurable-product/ – Alex

+2

是否必须在搜索中显示简单产品?简单的产品部分通常是不可见的。 – FlorinelChis

+0

@FlorinelChis是的。这个想法是,如果你想要的话,你也可以在搜索中找到“红色杯子”。 – Alex

回答

0

一个想法是重定向到配置的产品,如果单纯的产品符合萨姆要求:

  • 有一个新的属性“should_redirect_to_parent”为True(optionnal)
  • 至少有一个父产品(对于这一点,我让你跟着亚历克斯的链接)

PS:如果你不想做父母产品查询,你可以为了增加像“redirect_sku”或“redirect_product_id”的新属性直接做一个重定向产品

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

PS:性能优化,可以使用替代catalog_controller_product_init_before这将节省一个广阔的和无用的产品:: load()方法,但它需要你建立自定义的SQL查询来搜索父产品

告诉我们,如果你想一些代码示例

+0

谢谢。这是一个好的开始。另一个挑战是如何以正确的操作配置可配置产品。其实我想我会尝试使用类似的代码,如'Mage_Checkout_CartController :: configureAction()' – Alex

+0

我想我可以调用'$ product-> setPreconfiguredValues()' – Alex

+0

product_init事件的问题是,如果我挂在那里并想渲染另一个产品,这会导致递归,因为initProduct会再次被调用。所以我实际上在我的模块中使用了predispatch钩子。 – Alex

4

我找到了一个解决方案:

  1. 寄存器观察员就controller_action_predispatch_catalog_product_view
  2. 检查,如果我们有一个简单的物W第i个亲本是一个可配置的产品
  3. 创建包含简单的产品
  4. 通该数据的配置数据,以Mage::helper('catalog/product_view')->prepareAndRender()(第三个参数)一阵列通过在前面的动作设定FLAG_NO_DISPATCH
  5. 停止调度

完整的代码在Mestrona_ForwardToConfigurable module on github有效。

+2

非常感谢。我采取了不同的方法来满足我客户的要求,并希望分享以防止任何人发现它有用https://github.com/eyemaginesrobbins/Magento-SimpleRedirect –

+0

亚历克斯,完美的工作 - 谢谢! @Steve,你的Magento-SimpleRedirect也可以工作,但并不保留简单产品的属性(当然可能是你构建它的方式) – seekay

相关问题