Как получить продукты из определенной категории в magento электронной коммерции

Я хотел бы получить список случайных продуктов из той же категории, что и текущий продукт для отображения в представлении продукта – пока все, что я откопал,

Magento по категориям

Кто-нибудь знает как это сделать?

Вот код для получения продуктов из любой конкретной категории: –

$productCollection = Mage::getResourceModel('catalog/product_collection') ->addCategoryFilter($category); 

Вы в основном загружаете категорию, получаете коллекцию продуктов и затем соответствующим образом фильтруете.

 $products = Mage::getModel('catalog/category')->load($category_id) ->getProductCollection() ->addAttributeToSelect('*') ->addAttributeToFilter('status', 1) ->addAttributeToFilter('visibility', 4) ->addAttributeToFilter('special_price', array('neq' => "")) ->setOrder('price', 'ASC') ; 

то, что я закончил, – это приложение / дизайн / frontend / default / theme_name / template / catalog / product / list_random.phtml

делая что-то вроде:

 <?php $_categories=$this->getCurrentChildCategories(); $_category = $this->getCurrentCategory(); $subs = $_category->getAllChildren(true); $result = array(); foreach($subs as $cat_id) { $category = new Mage_Catalog_Model_Category(); $category->load($cat_id); $collection = $category->getProductCollection(); foreach ($collection as $product) { $result[] = $product->getId(); } } shuffle($result); ?> 

это даст вам массив идентификаторов продуктов. Вы можете прокручивать их и создавать продукты «на лету», используя:

 <?php $i=0; foreach ($result as $_product_id){ $i++; $_product = new Mage_Catalog_Model_Product(); $_product->load($_product_id); //do something with the product here }?> 

затем создайте статический блок в cms со следующим содержимым

 {{block type="catalog/navigation" template="catalog/product/list_random.phtml"}} 

Наконец, в разделе Каталог-> Управление категориями выберите категорию, затем вкладку настроек дисплея. Переключите режим отображения на «Статический блок и продукты», а затем выберите свой блок из списка.

И это должно сделать это.

 $products = Mage::getModel('catalog/category')->load(category_id); //put your category id here $productslist = $products->getProductCollection()->addAttributeToSelect('*'); foreach($productslist as $product) { echo 'price: ' . $product->getPrice() . '<br/>'; } 

Это, безусловно, удобный код, чтобы получить информацию о деталях в perticular. Надеюсь, вам это поможет.

Вы должны создать экземпляр модели, вызвав Mage::getModel('catalog/product') в этом случае, потому что тогда вы получаете сконфигурированный экземпляр объекта, расширенный любыми настроенными модулями.

Если вы сделаете это как new Mage_Catalog_Model_Product() это будет игнорировать модули и обходить Magento API.

Этот код поможет вам получить продукты из категории id 2 . А также здесь используется файл шаблона list_home.phtml для списка продуктов.

  echo $this->getLayout()->createBlock("catalog/product_list") ->setCategoryId(2)->setTemplate("catalog/product/list_home.phtml")->toHtml(); 

list_home.phtml

 <?php $this->getChild('toolbar')->setCurrentMode('list'); //uses list mode $_productCollection = $this->getLoadedProductCollection(); $_helper = $this->helper('catalog/output'); ?> <?php if (!$_productCollection->count()): ?> <p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p> <?php else: ?> --use code for listing---