カスタムオプションを使用して、Magento 製品に 3 つのサイズを追加しました
4x5'4 , 5'4x7'8 ,7'8x 10
サイズごとに別の配送を希望しますか?
それは可能ですか?
ありがとうゲラ
私はこの問題を解決することができます
この関数\app\ code \ core \ Mage \ Shipping \ Model \ Carrier \ Flatrate.phpを追加して、オプションを取得しました
function getProductOptions(&$item){ $options = array(); if ($optionIds = $item->getOptionByCode('option_ids')) { $options = array(); foreach (explode(',', $optionIds->getValue()) as $optionId) { if ($option = $item->getProduct()->getOptionById($optionId)) {
$quoteItemOption = $item->getOptionByCode('option_' . $option->getId());
$group = $option->groupFactory($option->getType())
->setOption($option)
->setQuoteItemOption($quoteItemOption);
$options[] = array(
'label' => $option->getTitle(),
'value' => $group->getFormattedOptionValue($quoteItemOption->getValue()),
'print_value' => $group->getPrintableOptionValue($quoteItemOption->getValue()),
'option_id' => $option->getId(),
'option_type' => $option->getType(),
'custom_view' => $group->isCustomizedView()
);
}
} } if ($addOptions = $item->getOptionByCode('additional_options')) {
$options = array_merge($options, unserialize($addOptions->getValue())); } return $options;}
次に、サイズの配列を作成します
foreach ($request->getAllItems() as $item) {
$option = $this->getProductOptions($item);
foreach($option as $opt){
if($opt['value']=="5'4" x 7'8""){
$shipExtra[] = '10.99';
}
else if($opt['value']=="7'8" x 10'9""){
$shipExtra[] = '10.99';
}
}
そして最後に私は
$shipExtra = array_sum($shipExtra);
if($shipExtra!=""){
$shippingPrice += $shipExtra;}
それは私のために働きます:)
正しいファイルを案内してくれてありがとう
Mage_Shipping_Model_Carrier_Abstract を拡張する 1 つのモデルを実行し、colectRates() メソッドをオーバーライドして、この製品がこれを返すかどうか、その製品がそれを返すかどうかを確認できます。詳細については、http: //www.magentocommerce.com/wiki/5_-_modules_and_development/shipping/create-shipping-method-moduleを参照してください。
または、magento コア Mage 出荷モデルのキャリアを変更してください。ヒントは次のとおりです: \app\code\core\Mage\Shipping\Model\Carrier\Flatrate.php を使用し、collectRates 関数に移動して、メソッドに ShippingPrice を設定する前に、次のようなことを試してください。
foreach ($request->getAllItems() as $item) {
if ($item->getProduct()->getData('size') == "4x5'4"){
$shippingPrice += 1.00;
}elseif()....
}