У меня есть сайт, который продает автозапчасти. Я настроил свои категории как Make -> Model -> Year, отсюда фильтрация выполняется с помощью атрибутов. Тормоза, Колеса, Двигатель и т. Д.Magento Merge 2 Категории В 1 сборник
Это фильтрует коллекцию, как я ожидал, но как только я доберусь до Года, я хочу также включить предметы из Универсальной категории. И.Е. Коллекция должна включать предметы для определенного автомобиля, а также универсальные предметы на всех автомобилях.
Я нашел это Magento: how to merge two product collections into one?, который кажется тем, что я хочу, но я не могу понять, где именно это должно быть реализовано.
Есть методы getCollection() в List.php, Layer.php и Category.php, и я попытался реализовать код в приведенной выше ссылке, но без успеха. Если я включу его в List.php, коллекции, похоже, будут объединены, но фильтрация атрибутов не применяется к продуктам Universal.
Я попытался отредактировать функцию getProductCollection в category.php как так:
public function getProductCollection()
{
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
//return $collection;
$universalCollection = Mage::getModel('catalog/category')->load(18)->getProductCollection();
$merged_ids = array_merge($collection->getAllIds(), $universalCollection->getAllIds());
// can sometimes use "getLoadedIds()" as well
$merged_collection = Mage::getResourceModel('catalog/product_collection')
->addFieldToFilter('entity_id', $merged_ids)
->addAttributeToSelect('*');
return $merged_collection;
}
Но это дает мне: «Фатальная ошибка: Максимальный уровень вложенности функции от„200“достиг, отбрасывание»
Если кто-либо может дать какие-либо советы, будем признательны.
Благодаря Дрю, я понимаю, что не следует редактировать файлы ядра. План заключался в том, чтобы заставить его работать в той или иной форме, а затем сделать это правильно позже. Будет ли это происходить или нет, другое дело ... lol ... Спасибо за вашу помощь, я уверен, что смогу понять это. –
Привет, Дрю, когда я использую этот код, мои фильтры атрибутов, похоже, не работают. Я получаю целую загрузку предметов без названия, стоимость 0,00 и «Нет в наличии», а затем элементы, относящиеся к фильтрам. Есть идеи? –
@JohnCondron - попробуйте использовать addAttributeToSelect в объединенной коллекции с вашими необходимыми атрибутами или * для всех i.e. addAttributeToSelect (массив ('цена', 'name')) или addAttributeToSelect ('*') и т. Д. –