2016-06-13 67 views
5

我是Magento 2的新手。任何人都知道如何禁用基於購物車中產品屬性的運輸方法。比方說,我們希望只爲某些產品啓用商店提貨。 在onepage結帳這些更新與post/rest/en/V1/guest-carts/SESSION_ID/estimate-shipping-methods,但嘗試過模塊簽出和模塊引用,仍然無法找到此代碼的位置我可以擴展它。 如果有人通過此之前會有所幫助。Magento 2根據產品屬性過濾運輸方法

感謝

回答

2

可能不止一種方法來做到這一點,但我選擇的方法是創建一個插件\ Magento的\航運\型號\航運,特別是collectRates()功能。當然,我們的要求比你的要求更具體(底部)。

基本邏輯流程...

collectRates()(在\ Magento的\航運\型號\航運未經修飾的功能,收集所有的運輸方式費率))

afterCollectRates((插件)

  • 此時所有的運輸方式有蜜蜂ñ被叫和利率存儲在我們的$請求對象。
  • 您可以確定通過$請求 - 是在車中的產品> getAllItems()
    • 注:父/子產品是單獨項目,並根據您的存儲配置,一個或另一個可能不有您想要查看的自定義屬性。
  • 你可以看到通過$請求 - >所有的getResult方法運費/費率() - > getAllRates()
  • 我沒有找到一個核心功能刪除率,我的解決方法是.. 。
    • 取消設置在速率以除去
    • 畢竟率被修改,使用foreach()循環將它們(存儲在tempArray一些邏輯不添加如果成本== 0,等等所有數據)
    • 現在刷新和重置通過$請求 - >的getResult()所有現有的利率 - >復位()
    • 最後,從您的tempArray添加率早在


根據關於如何計算費率,您可能還想擴展各種運輸方式,以便在某些產品在購物車中時完全繞過它們(可能不適合您的使用情況,但對於試圖禁用UPS/FedEx /等的任何人)。率)


如前所述,我們的要求是更廣泛,我們也有它實際上創造的產品陣列和其他一些邏輯(我們不得不限制各種運輸方式,增加處理特定產品beforeCollectRates()函數,並使用維度邏輯創建發送到UPS/FedEx等的實際CollectRates()部件的裝運箱列表。)