3

ユーザーのカートに入れられた製品の属性値を取得する際に問題が発生しています。

次のコードがあります。

umask(0);
Mage::app();

Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('checkout/session');
$cart = Mage::helper('checkout/cart')->getCart()->getItemsCount();

foreach ($session->getQuote()->getAllItems() as $item) {

$_product = Mage::getModel('catalog/product')->load($item->getId());

$attributeValue = $_product->getAttributeText('availability');

echo $attributeValue;

}

そして、カート内の最後の製品を除くすべての製品で正常に機能します。たとえば、私が作成した「availability」属性の値を取得しようとしていますが、この属性は「バックオーダー」、「プレオーダー」、「在庫切れ」のいずれかの値のみを持つことができます。カートに 3 つのアイテムがある場合、最初の 2 つのアイテムについては正しい値を取得できますが、最後のアイテムについては「いいえ」と表示されます。

各アイテムを再確認して、すべての属性が正しく設定されていることを確認しました。これは、カート内のアイテムの数に関係なく発生します。

うまくいけば、それは私の側の愚かな間違いです。

どんな助けでも大歓迎です。

ありがとう。

解決済み:

変化:

$_product = Mage::getModel('catalog/product')->load($item->getId());

$_product = Mage::getModel('catalog/product')->load($item->getProductId());

問題を修正します。

4

1 に答える 1

4

問題はその行にあります:

$_product = Mage::getModel('catalog/product')->load($item->getId());

$item->getId()ではなく の ID を取得してMage_Sales_Model_Quote_ItemMage_Catalog_Model_Productます。$item->getProductId()現在の見積もりアイテムに関連付けられている実際の製品の ID を取得するには、代わりに使用する必要があります。

于 2012-10-22T21:18:14.870 に答える