Клиент хочет, чтобы все продукты, которые были распроданы, появлялись в конце списка продуктов, и я изо всех сил пытаюсь заставить его работать в данный момент, поэтому возникает вопрос.Стоит отметить, что все категории в системе настроены на использование только позиционирования «Наилучшее значение» для заказа товаров и что это изменение должно выполняться автоматически.
В настоящее время я добавил наблюдателя в «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;
Я понимаю, что это не очень хороший способ сделать это, и поэтому он будет довольно интенсивным, если в корзине будет много товаров.Но так как заказ на данный момент не создан, я также не могу его использовать.
Любые указатели или предложения будут с благодарностью приняты.
Спасибо.