2010-03-24 3 views
2

У меня есть собственный модуль, который я сделал, чтобы показать избранные продукты на главной странице. Я настроил его, чтобы показать продукты, которые находятся в категории «избранных». Он отлично работает в версии 1.3, но теперь в 1.4 я получаю следующее сообщение об ошибке:Фильтрация по категориям в Magento 1.4

SQLSTATE [42S22]: Column не найдено: 1054 Неизвестные колонки 'e.category_ids' в 'где предложение'

Вот мой код:

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('visibility', $visibility) 
    ->addAttributeToFilter('category_ids',array('finset'=>$featuredcategory)) 
    $_productCollection->load(); 

Избранная категория указана администратором.

Есть идеи, что может быть?

ответ

2

Просто пояснить ответ. Вы можете получить его на работу, определив признаки категории первым:

$_featcategory = Mage::getModel('catalog/category')->load($featuredcategory); 

, а затем с помощью обычной категории фильтра:

->addCategoryFilter($_featcategory) 
+0

Джаз вы можете прояснить это подробнее .. Я пытаюсь сначала получить newproducts by ............. ........................................ $ collection = Mage :: getModel ('newproducts/newproducts ') -> getNewproducts(); \t если ($ CatID) {$ категория = Mage :: getModel (' каталог/категория ') -> нагрузка ($ CatID); если ($ category-> GetId()) { $ collection-> addCategoryFilter ($ category); } } ------------- ---------------- BUt это не работает. –

+0

Для получения новых продуктов я использую Mage :: getResourceModel ('reports/product_collection'), а затем добавьте порядок отображения -> setOrder ('created_at', 'desc') –

+0

Да, вы правы, но это не то, что я имею в виду , Я имею в виду, как фильтровать коллекцию товаров по категориям, я использую вышеуказанный код, но не работаю.SOme time: сначала загружаю категорию, а затем используйте addCategoryFilter(), но также не работаю. У вас есть какая-то идея. –

2

Выбранный объект reports/product_collection У модели нет атрибута category_ids больше.

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*'); 
$_productCollection->load(); 
    foreach($_productCollection as $item) 
    { 
     var_dump(array_keys($item->getData())); 
     exit; 
    } 

Для получения необходимой информации вам понадобится другая Модель.

+0

Спасибо за то, Алан - установить меня на правильном пути. Кажется, что я могу заставить его работать, сначала определив признанную категорию: ** $ _ featcategory = Mage :: getModel ('catalog/category') -> load ($ featuredcategory); ** и затем используя фильтр нормальной категории: * * -> addCategoryFilter ($ _ featcategory) ** - но теперь проблема в том, что я не могу дважды фильтровать по категориям, что мне нужно сделать для страниц категорий (фильтр по текущей категории И категории. Я ранее использовал следующее: ** -> addCategoryFilter ($ _ category) -> addAttributeToFilter ('category_ids', array ('finset' => $ featuredcategory)) ** Любые идеи по этому поводу? –

+0

Короче говоря, вы используете метод фильтра для получения одной группы, а foreach по полученной коллекции и вытаскивать нужные вам предметы. Если вам нужна ситуация «из обеих категорий», просто создайте две коллекции. Более длинная история: я немного поглядел на объект, с которым вы работаете, и я не сделал этого, я вижу очевидный публичный интерфейс для этого. Значительное количество сложной логики происходит (см. hod _applyProductLimitations), касающийся различных индексов продуктов и категорий, которые magento создает, что делает это в чистом режиме ORM, сложно. –

+0

Да, подумал, может быть, взять две коллекции и использовать оператор ** if (stristr ($ featuredcategory, $ currcategory) **, чтобы найти, какие продукты находятся в обеих коллекциях. Но для этого мне нужно будет иметь обе коллекции в списке, разделенном запятыми, я предполагаю, что любые идеи о том, как вывести коллекцию как список sku's? –

Смежные вопросы