Ответ 1
tl; dr: ответ на этот вопрос зависит от сложности, основанной на типе продукта (настраиваемый, простой и т.д.). Это может повлиять на то, как вы настраиваете свой каталог и устанавливаете простую видимость продукта. Если все, что у вас есть в вашем каталоге, это простые элементы, эта задача очень проста. Также: см. Редактирование в конце.
Существует множество сценариев. Например, если вы добавите настраиваемый элемент в корзину, в котировке будет два элемента котировки для каждого параметра: один элемент кавычки для настраиваемого родительского продукта, который будет содержать информацию о количестве опций и одну позицию котировки, которая предоставит опцию простые данные продукта. Элементы Bundle будут иметь элемент родительского пакета, а также простой элемент для каждой опции пакета.
Все это сводится к тому, что вам нужно решить, как вы представляете количество каждого типа продукта для пользователя; например, хотите ли вы представить ту же модель рубашки, что и одна позиция со всеми размерами, или вы хотите отделить их для каждого размера (последним является то, как Magento отображает их в области тележки/обзора).
Я рекомендую добавлять ваши товары в корзину, а затем использовать это во внешнем интерфейсе для просмотра данных позиции котировки:
<?php
include 'app/Mage.php';
Mage::setIsDeveloperMode(true);
Mage::app(); // Mage_Core_Model_App
Mage::getSingleton('core/session', array('name'=>'frontend'));
$quote = Mage::helper('checkout/cart')->getCart()->getQuote();
echo count($quote->getItemsCollection());
foreach ($quote->getItemsCollection() as $item){
Zend_Debug::dump($item->debug());
}
Я рекомендую использовать установку с образцами данных и добавлять в корзину разные количества каждого типа продукта. Основываясь на этом + выводе из приведенного выше кода, вы увидите, что у вас есть несколько подходов и getchas при прохождении цикла. Сложные сценарии - это когда у вас есть следующее:
- Настраиваемые элементы
- Для каждого параметра у вас будет настраиваемый продукт как элемент и простой продукт, из которого этот параметр выведен как элемент. Если вы хотите отобразить общий счет с помощью настраиваемого родителя, вам нужно будет подсчитать общее количество настраиваемых чисел в цикле:
код:
$configurables = array();
// ...then, inside your foreach
if($item->getProductType() === 'configurable'){
if(isset($configurables[$item->getProductId()])){
//add to the other options' quantity
$configurables[$item->getProductId()] += $item->getQty();
}
else {
$configurables[$item->getProductId()] = $item->getQty();
}
}
- Сгруппированные элементы
- Простые продукты, которые добавляются в цитату как часть сгруппированного элемента, отделены от простых элементов, которые добавляются отдельно и в другие группы, к которым они могут принадлежать. Если вы хотите их заполнить, вы можете прокручивать так:
код:
$grouped = array();
// ...then, inside your foreach
if($item->getProductType() === 'grouped' || $item->getProductType() === 'simple'){
if(isset($grouped[$item->getProductId()])){
//add to the other options' quantity
$grouped[$item->getProductId()] += $item->getQty();
}
else {
$grouped[$item->getProductId()] = $item->getQty();
}
}
- Элементы набора
- Элементы котировки продуктов Bundle представлены одним элементом для продукта bundle и отдельными простыми элементами продукта для каждой опции. Простые элементы продукта содержат информацию о количестве, хранящуюся против них. Простые элементы имеют идентификатор родительского элемента, который ссылается на элемент котировки продукта пакета, точно так же, как и настраиваемые элементы товарных позиций товара.
Вы можете видеть, что обработка всех сценариев громоздка. Хотелось бы вам сказать, что это проще сделать с помощью моделей ресурсов, но дело в том, что в базе данных таблица sales_flat_quote_item_option
хранит информацию о количестве в столбце сериализованных данных, поэтому вам нужно будет перевести что-то в PHP на где-нибудь с ними (что делается для вас через модель ресурсов).
Извините, это такой длинный ответ, но вы можете видеть, что, основываясь на вашей настройке каталога, вы должны тщательно изучить и проверить, чтобы убедиться, что у вас есть ваши базы.
РЕДАКТИРОВАТЬ: При попытке быть тщательным, я не упомянул, что вы должны заглянуть в таблицу sales_flat_quote_item
. В зависимости от ваших требований вы можете легко использовать данные там, чтобы быстро, грациозно и эффективно моделировать данные, необходимые для достижения требований к отображению.