1

カスタムオプションを取得して処理するために次のコードを使用しています

$orderIncrementId = $order->getIncrementId();
                $orderReal = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);    


    $orderItems = $orderReal->getAllItems();   

    $sk = "";
    foreach ($orderItems as $item)
                {
      $options = $item->getProductOptions();      
      foreach ($options as $option) {
       if (is_array($option)) {
       $firstElement = array_shift($option);

   foreach ($option as $firstElement){
           if (isset($firstElement['label']) && isset($firstElement['option_value'])){
         if ($firstElement['label'] == 'Delivery Date') {
             $deliveryDate = $firstElement['option_value'];

                                }
                            }
                        }
                    }   
                  }
                }

私の使い方は、このようにCSVに書き込むことです

if (isset($deliveryDate)) {
    $outputString.= '"'.$deliveryDate.'",'; 
} else {
    $outputString.= '"deliverydate error",'; 
}

今、私はそれを確認しました

  • ラベル納期はデータベース「カタログ商品オプションタイトル表」にてご確認いただけます。
  • カスタムオプション納期は「カタログ商品オプション表」に値があります

スクリプトを介して配達日にアクセスしていないように見えるため、カスタム メッセージ「配達日エラー」が CSV に保存されます

実際、正しく機能していない mag 拡張機能をデバッグしようとしています...

私にとって、コードは問題ありませんが、なぜ機能しないのかわかりません....

誰でも私を導くことができますか?

4

1 に答える 1

3

これは完全な解決策ではありませんが、商品のカスタム オプションがタイプ「フィールド」であると仮定すると、注文した商品のカスタム オプションの値が返されます。

foreach ($orderItems as $item) {
  $optionsArray = $item->getProductOptions();
  if(isset($optionsArray['options'])) {
    foreach ($optionsArray['options'] as $option) {
      if($option['label'] == 'Delivery Date') {
        $deliveryDate = $option['value'];
      }
    }
  }
}
于 2012-12-29T20:30:07.910 に答える