tl; dr: ответ на этот вопрос различается по сложности в зависимости от типа продукта (настраиваемый, простой и т. Д.). Это может повлиять на настройку каталога и настройку простой видимости продукта. , Если все, что у вас есть в вашем каталоге, это простые элементы, эта задача очень проста. Также: см. Редактирование в конце.
Есть много сценариев для рассмотрения. Например, если вы добавите настраиваемый элемент в корзину, в предложении будет два элемента предложения: один элемент предложения для настраиваемого родительского продукта, который будет содержать информацию о количестве опций, и один элемент предложения, который предоставит простые данные продукта. У элементов пакета будет родительский элемент пакета, а также простой элемент для каждого параметра пакета.
Что сводится к тому, что вам нужно решить, как вы представляете количество каждого типа продукта пользователю; например, хотите ли вы представить одну и ту же модель рубашки в виде одной позиции со всеми размерами или вы хотите разделить их для каждого размера (последний из них заключается в том, как 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());
}
Я рекомендую использовать установку с образцами данных и добавлять в корзину различные количества продуктов каждого типа. Основываясь на этом + выводе из приведенного выше кода, вы увидите, что у вас есть несколько подходов и ошибок, когда вы проходите цикл. Смешанные сценарии, когда у вас есть следующее:
- Настраиваемые элементы
- Для каждого варианта у вас будет настраиваемый продукт как элемент и простой продукт, из которого этот параметр получен как элемент. Если вы хотите отобразить общее количество по настраиваемому родительскому элементу, вам нужно подсчитать общее настраиваемое количество в цикле:
Код:
$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();
}
}
- Комплектация
- Пункты расценки продуктов в пакете представлены одним элементом для продукта комплекта и отдельными простыми элементами продукта для каждого варианта. Простые позиции товара содержат информацию о количестве, хранящуюся против них. Простые элементы имеют идентификатор родительского элемента, который ссылается на элемент предложения продукта в комплекте, как это делают настраиваемые дочерние элементы элемента предложения продукта.
Вы видите, что обработка всех сценариев громоздка. Хотелось бы вам сказать, что это проще сделать с помощью моделей ресурсов, но факт заключается в том, что в базе данных таблица sales_flat_quote_item_option
хранит информацию о количестве в столбце сериализованных данных, поэтому вам нужно перенести вещи в PHP, чтобы доберитесь с ними куда угодно (что делается для вас с помощью модели ресурсов).
Извините, что это такой длинный ответ, но вы можете видеть, что, основываясь на настройках вашего каталога, вы должны тщательно проанализировать и протестировать, чтобы убедиться, что ваши базы покрыты.
РЕДАКТИРОВАТЬ: Пытаясь быть тщательным, я не упомянул, что вы должны заглянуть в таблицу sales_flat_quote_item
. В зависимости от ваших требований вы можете легко использовать имеющиеся там данные для быстрого, изящного и эффективного моделирования данных, необходимых для удовлетворения ваших требований к дисплею.