Как получить продукты из определенной категории в электронной коммерции magento - PullRequest
10 голосов
/ 18 января 2009

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

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

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

Ответы [ 6 ]

23 голосов
/ 12 июня 2011

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

$products = Mage::getModel('catalog/category')->load($category_id)
 ->getProductCollection()
 ->addAttributeToSelect('*')
 ->addAttributeToFilter('status', 1)
 ->addAttributeToFilter('visibility', 4)
 ->addAttributeToFilter('special_price', array('neq' => ""))
 ->setOrder('price', 'ASC')
 ;
18 голосов
/ 04 апреля 2011

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

$productCollection = Mage::getResourceModel('catalog/product_collection')
                           ->addCategoryFilter($category);
7 голосов
/ 14 мая 2009

Я закончил тем, что сделал в app / design / frontend / default / имя темы / 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"}} 

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

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

3 голосов
/ 14 мая 2013
$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/>';
       }

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

2 голосов
/ 08 декабря 2010

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

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

0 голосов
/ 12 февраля 2016

Этот код поможет вам получить товаров из идентификатора категории 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---
...