2011-12-15 51 views
0

商品リストの最後に売り切れた商品がすべて出たいと思っています。システム内のすべてのカテゴリは、製品の注文に「ベストバリュー」のポジションのみを使用するように設定されており、この再配置は自動的に行われなければならないことは注目に値する。Magentoで売り切れたときの商品の位置設定

現在、カートアイテムがオーダー自体に追加されているポイントである 'sales_convert_quote_item_to_order_item'イベントにオブザーバーを追加しました(ターゲットに適した場所のようです)。

私が見つけた問題は、明らかに製品に利用可能な数量は製品在庫レコードに格納されていますが、製品の位置はカテゴリ自体に格納されてインデックス化されていることです。

私は実際にはSQLを使用することに頼りたくないので、ここの誰かが使用するメソッドの提案を提供できることを願っていました。

My Observerメソッドは現在このようになっていますが、何らかの理由でgetUsedProductsメソッドが使用できないため機能しません。ここでは、とにかくです:

$cart = Mage::getModel('checkout/cart')->getQuote(); 

    foreach($cart->getAllItems() as $key=>$item): 
     print_r(get_class_methods($item)); 
     echo ">>> ".$item->getProductType(); 
     if($item->getProductType()):  
      $item = $item->load($item->getId()); 
      //print_r(get_class_methods($item)); 
      $_productCollection = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$item); 
      print_r($_productCollection); 
      $stockLevel = 0; 
      foreach($_productCollection as $product): 
       $childProductData = $product->getData(); 
       $stockLevel+= $childProductData['stock_item']['qty']; 
      endforeach; 

      echo "<br />STOCK LEVEL: $stockLevel<br />"; 
      if($stockLevel <= 0): 
       echo "ZERO"; 
       //return true; 
      endif; 
     endif;     
     echo "<br />"; 
    endforeach; 

が、私はそれがカート内の製品の多くがあった、非常に集中的になり、これはこれを行うのに最適な方法ではないことを認識し、そのように。しかし、注文がこの時点で作成されていないので、私はそれを使うことはできません。

感謝の言葉をいただきました。

ありがとうございました。

+1

見積もりの​​代わりに在庫モデルを調べます。 –

+0

見積もりは製品を入手することでした。しかし、私もそのルートを見下ろすでしょう。 – Dan

+0

補足として、getUserProducts()メソッドは、商品自体ではなく、見積もり項目に基づいて読み込んでいたため、使用できませんでした。 – Dan

答えて

0

私が正しく問題から理解していた場合:

...A client wants all products that are sold out to appear at the end of the product listings... 

リスト=カテゴリは、なぜuが描画ロジック変更しない場合は?カタログ製品リストを拡張し、製品収集方法を上書きするだけです。

達成する必要があるのは、売り切れた商品がすべてリストの最後にあることです。したがって、theseのいずれかの関数を使用して、ロードされたコレクションをソートできます。

+0

これは既に提案されています。私はクライアントの要求に従おうとしていましたが、今すぐこのルートを下ろそうとしています。 – Dan

0

ベストセラーロジックを使用して商品を表示することもできます。このリンクのヘルプhttp://inchoo.net/ecommerce/magento/bestseller-products-in-magento/またはhttp://blog.magikcommerce.com/how-to-display-best-selling-products-on-magento-store-home-page/ベストセラー商品を入手する方法を知っているので、商品リストでこのベストセラーブロックを呼び出す必要があります。解決策をまだ探している場合は手伝ってください。

+0

この返信は見られませんでした。このような状況では、組み込みブロックではなく、シームレスかつ自動的にコレクション上で行われなければならないため、実際には役に立たなかったでしょう。 – Dan

関連する問題