Я почти закончил строительство амазонского филиала. В моем каталоге продукты Amazon используют набор атрибутов с именем AmazonAffiliate, все остальные обычные продукты в каталоге используют только то, что назначается для них. Люди могут добавлять как обычные товары в корзину, так и продукты амазонки в корзину.Magento Использование Observer для разделения коллекций Если лучший способ
Разделение обычных продуктов против продуктов amazon входит в экран тележки. То, что я хочу на странице корзины, - это две таблицы элементов. Один с продуктами Amazon и один с обычным.
С помощью наблюдателя на мероприятие core_collection_abstract_load_before
, я смог отфильтровывать продукты Amazon из корзины, итоговые данные, все. Мне нравится, как он вытаскивает их с помощью одной функции.
Вот функция наблюдателя:
public function excludeAmazonProductsFromMainCart($observer)
{
$collection = $observer->getEvent()->getCollection();
if($collection instanceof Mage_Sales_Model_Resource_Quote_Item_Collection) {
$attributeSetId = Mage::getModel('eav/entity_setup','core_setup')
->getAttributeSetId(Mage_Catalog_Model_Product::ENTITY,CommerceExtensions_AmazonAffiliate_Model_Module::ATTRIBUTE_SET_NAME);
$productTable = Mage::getSingleton('core/resource')->getTableName('catalog/product');
$collection->getSelect()->joinLeft(array('product_table'=>$productTable),'`main_table`.`product_id`=`product_table`.`entity_id`',array('attribute_set_id'));
$collection->getSelect()->where('`product_table`.`attribute_set_id` != '.$attributeSetId);
}
return $collection;
}
Теперь проблема в том, что я хочу другую коллекцию, которая захватывает предметы, которые были исключены в функции наблюдателя выше. Таким образом, таблица корзины с амазонами будет иметь эти продукты, и в обычной корзине для продукта magento будут представлены мои обычные каталоги. Я просто не могу разбить коллекцию на две части.
И в случае, если он не может быть разбит на две части, у меня есть коллекция продуктов amazon, которую мне нужно создать как CommerceExtensions_AmazonAffiliate_Model_Mysql4_Quote_Collection. Я просто не могу настроить его на новый блок.
Вот скриншот того, что я пытаюсь сделать. Я знаю, что это можно сделать, потому что есть люди, продающие расширения с одинаковой функциональностью.
Заранее спасибо за любую помощь!
шаблон не является проблемой. Его данные передаются в шаблон, который я пытаюсь изменить. Я пытаюсь разделить коллекцию на две пригодные для использования части, которые я могу перекачивать в два отдельных блока. –
Я хочу предложить вам написать пользовательскую функцию для получения коллекции продуктов amazon в вашем ресурсе, назовите это из своего блока и передайте этот продукт вашему представлению. Что вы сделали для фильтрации продукта Amazon, это хорошо. –
Теперь я создал вторую коллекцию и просто отфильтровал все обычные продукты и сохранил продукты amazon.Тем не менее, чтобы дойти до блока, чтобы продолжить использовать тот же файл шаблона, он проходит через несколько моделей, прежде чем он попадет в блок. На этом этапе я стараюсь избегать дублирования всех моделей, через которые он проходит. Ошибки, которые я получаю сейчас, - isVisibleInSiteVisibility() для не-объекта. Я преследую эту вещь повсюду. –