Вы можете создать эту опцию, скопировав файл Flatrate core/Mage/Shipping/Model/Carrier/Flatrate.php
в локальный пул кодов local/Mage/Shipping/Model/Carrier/Flatrate.php
.
необходимо изменить код в collectRates
функции.
$result = Mage::getModel('shipping/rate_result');
if ($this->getConfigData('type') == 'O') { // per order
$shippingPrice = $this->getConfigData('price');
} elseif ($this->getConfigData('type') == 'I') { // per item
$shippingPrice = ($request->getPackageQty() * $this->getConfigData('price')) - ($this->getFreeBoxes() * $this->getConfigData('price'));
} else {
$shippingPrice = false;
}
Заменить приведенный выше код, используя приведенный ниже код:
if(!Mage::getSingleton('customer/session')->isLoggedIn()){
//not logged in
$flatRatePrice = $this->getConfigData('price');
}else{
// logged in
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$group = Mage::getSingleton('customer/group')->load($groupId)->getData('customer_group_code');
$group = strtolower($group);
switch ($group) {
case 'general': //Set price for different customer group
$flatRatePrice = 10;
break;
case 'retailer':
$flatRatePrice = 20;
break;
case 'wholesale':
$flatRatePrice = 30;
break;
default:
$flatRatePrice = $this->getConfigData('price');
}
}
$result = Mage::getModel('shipping/rate_result');
if ($this->getConfigData('type') == 'O') { // per order
$shippingPrice = $flatRatePrice;
} elseif ($this->getConfigData('type') == 'I') { // per item
$shippingPrice = ($request->getPackageQty() * $flatRatePrice) - ($this->getFreeBoxes() * $flatRatePrice);
} else {
$shippingPrice = false;
}
Спасибо! Я хорошо знаком с PHP-кодом, но совершенно новым для Magento. Считается ли это хорошей практикой, чтобы изменить (хотя мы скопируем копию на локальный), как это? Могли ли они спуститься вниз, делая это так? – KeepSilence
Мы можем скопировать основной файл в локальный пул кодов для изменения пользовательских требований. когда мы обновляем magento, нам также необходимо обновить основные файлы, которые находятся в локальном пуле кодов. Если вы не хотите этого делать, вы можете переопределить модель Flatrate, создав собственный модуль с теми же изменениями. –
Хорошо, это похоже на прекрасную возможность для занятий навыками Magento Dev. :) Спасибо за помощь! – KeepSilence