【问题标题】:Forward to configurable product when opening simple product打开简单产品时转发到可配置产品
【发布时间】:2012-10-18 13:49:11
【问题描述】:

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

  • 大红杯
  • 大蓝杯

和一个可配置的产品

  • 大杯

分配了那些杯子。

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

如果用户点击这些简单产品之一,则应该打开可配置产品,但应该预先选择正确的颜色。

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

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

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

有没有一个优雅的解决方案?

【问题讨论】:

标签: magento


【解决方案1】:

我找到了解决办法:

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

完整代码可在Mestrona_ForwardToConfigurable module on github 中找到。

【讨论】:

  • 谢谢。我对客户的要求采取了不同的方法,并希望分享以防有人发现它有用github.com/eyemaginesrobbins/Magento-SimpleRedirect
  • Alex,效果很好 - 谢谢! @Steve,您的 Magento-SimpleRedirect 也可以,但不保留简单产品的属性(这当然可能是您构建它的方式)
【解决方案2】:

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

  • 将新属性“should_redirect_to_parent”设置为 True(可选)
  • 至少有一个父产品(在这一点上,我让你点击 Alex 的链接)

ps:如果您不想进行父产品查找,您可以添加一个新属性,例如“redirect_sku”或“redirect_product_id”,以便直接对该产品进行重定向

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

ps:为了性能优化,您可以改用 catalog_controller_product_init_before,这将节省一个庞大且无用的 Product::load() 但它需要您构建自定义 SQL 查询来搜索父产品

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

【讨论】:

  • 谢谢。这是一个好的开始。另一个挑战是已经使用正确的操作配置可配置产品。其实我想我会尝试使用类似Mage_Checkout_CartController::configureAction()的代码
  • 我想我可以打电话给$product->setPreconfiguredValues()
  • product_init 事件的问题是,如果我挂在那里并想要渲染另一个产品,这会导致递归,因为再次调用 initProduct。所以我现在实际上在我的模块中使用了 predispatch 钩子。
  • 在这种情况下,您不应该“渲染”新产品,而应该“重定向”到它。
  • 我认为不可能重定向和预先选择正确的选项。无论如何 - 我已经找到了解决方案并将很快发布。
【解决方案3】:

要在可配置产品中预选简单产品,简单产品的地址应如下所示:

/mona-pullover-hoodlie.html#143=167&93=53

在哪里

/mona-pullover-hoodlie.html - 可配置的产品 URL

143, 93 - 属性 ID

167, 53 - 选项 ID。

为了更改简单产品的URL,您可以为Magento\Catalog\Model\Product::getProductUrl()创建一个Plugin (Interceptor),其中生成URL如上例。

使用上面示例中的 URL 参数选择产品已经在 Magento 中实现了开箱即用。


我在 Magento Marketplace 上制作了 VCT Simple Product URl 模块,如果有多个可配置产品,我会选择第一个可配置产品来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多