Métodos de Envío de palanca a base de productos
-
11-10-2019 - |
Pregunta
Quiero ser capaz de cambiar lo que se utiliza el método de envío en base a los elementos que están en el carro. ¿Dónde está el mejor lugar para "verificación" esto y agarrar el método de envío ¿verdad?
La forma en que funciona es que habrá un método de envío estándar que se utiliza, y luego, si hay ciertos elementos en el carro de otro método anulará ese otro método.
creo que podría hacerlo por la piratería en torno a los módulos individuales para transporte, pero me gustaría hacer esto de la manera "correcta".
Solución 2
intentarlo una y otra como lo hice para poner en práctica una anulación de costumbre, sólo fue capaz de encontrar el éxito al copiar el archivo completo a Tablerates.php locales / Mago / envío / modelo / portador / Tablerates.php
isActive () todavía no era "el camino" en ese punto. Tenía que introducir algún código en los collectRates () de este modo:
// check the store
if (Mage::app()->getStore()->getId() == 2){
// check for free shipping
$packageValue = $request->getPackageValueWithDiscount();
$freeShipping = ($request->getFreeShipping()) || ($packageValue >= Mage::getStoreConfig("carriers/freeshipping/free_shipping_subtotal", $this->getStore()));
if($freeShipping)
return false;
$foundFlag = false;
foreach ($request->getAllItems() as $item) {
$org_product = Mage::getModel('catalog/product')->load($item->getProductId());
if($org_product->getDeliveryFlag() == "workstationmats")
{
$foundFlag = true;
}
}
if ($foundFlag == false)
return false;
}
// end shpping mod
Esta se colocó justo al inicio de la función de collectRates.
Otros consejos
métodos de envío han construido en el método de Mage_Shipping_Model_Carrier_Abstract que todos ellos se extienden:
public function isActive();
extender los métodos de envío y añadir su lógica para ese método y no se olvide de llamar a los padres :: isActive (); primero