Magento на русском

Новости, обмен опытом, база знаний для разработчиков.

Простой пример кода начинающим разработчикам

Допустим мы имеем коллекцию продуктов с уже установленными условиями и т.п.

И нам надо оставить в этой коллекции только те продукты, которые входят в какую-нибудь категорию.

На первый взгляд, нам мог бы помочь метод addCategoryFilter() у коллекции продуктов, но он сбросит уже выбранную ранее категорию, если таковая имеется.

Я предлагаю просто добавьть фильтр в Select таким способом:

if(!Mage::app()->getStore()->isAdmin()){
    		foreach(Mage::getModel('catalog/category')->getCollection() as $cat){
    			$cat->load($cat->getId());
    			if($cat->getData('name') == 'ИМЯ НУЖНОЙ КАТЕГОРИИ'){
    				$productIds = implode(',',$cat->getProductCollection()->getAllIds());
					if(strlen($productIds)){
					$collection->getSelect()->where("cat_index.product_id IN ($productIds)");
    	}}}}

Уточню, $collection – это уже готовая коллекция продуктов, вместо параметра «ИМЯ НУЖНОЙ КАТЕГОРИИ» можно использовать всё что угодно, а условие if(!Mage::app()->getStore()->isAdmin()) необходимо для того чтобы эти изменения не влияли на админку.

Похожие Magento-статьи:

  1. Как узнать где находится пользователь – в админке или нет?
  2. Наворачиваем свой модуль. Вывод коллекции данных в грид.
  3. Самый лучший аттрибут => filter_index
  4. генерация PDF стандартным модулем
  5. Как отправить письмо в Magento?
  6. Создание нового модуля с нуля.
  7. Поисковая оптимизация в Magento
  8. Конфигурируемый продукт

The URI to TrackBack this entry is: http://magento.verych.ru/2009/07/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d0%ba%d0%be%d0%b4%d0%b0-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d0%bc-%d1%80%d0%b0%d0%b7%d1%80%d0%b0/trackback/

Оставить комментарий

© 2009-2012 Magento по-русски 99% авторских статей