首页 > 代码库 > 基于产品属性的Magento(麦进斗)过滤器配送方式

基于产品属性的Magento(麦进斗)过滤器配送方式

可能不止一种方式来做到这一点,但我选择的方法是创建一个插件\Magento\Shipping\Model\Shipping,特别是collectRates()函数。当然我们的要求比你(底部)更具体。

基本的逻辑流程...

collectRates() \Magento\Shipping\Model\Shipping未修改的功能,收集率对所有的运输方式)

afterCollectRates() 插件)

  • 此时所有运输方法被调用并存储在我们的价格$请求对象。
  • 您可以确定是通过在车中的产品$请求- > getAllItems()
    • 注:父/子产品是单独项目,并根据您的存储配置,一个或其他属性,你想看看可能没有自定义。
  • 你可以看到所有通过航运方式/房价$请求- >的getResult)( - > getAllRates()
  • 我没有找到一个核心函数删除的速度,我的解决方法是...
    • 在利率取消设置的所有数据删除
    • 毕竟利率被修改,使用foreach()循环将它们存储在一个tempArray(有一些逻辑不增加成本,如果== 0等)
    • 现在刷新和重置通过所有现有利率$请求- >的getResult() - >复位()
    • 最后,从您的加入率tempArray


这取决于你如何计算利率,您可能还需要延长的各种运输方式,所以你完全可以绕过它们是某些产品在购物车(可能不适合你的使用情况,但对于任何试图关闭UPS /联邦快递/等。率)


正如前面提到的,我们的要求是更广泛,我们也有它实际上创造了产品阵列和其他逻辑(我们不得不限制各种运输方式,增加处理特定产品,并使用三维逻辑来创建一个列表beforeCollectRates()函数航运箱发送给UPS /联邦快递等实际CollectRates()的一部分。)

基于产品属性的Magento(麦进斗)过滤器配送方式