web-dev-qa-db-fra.com

Comment obtenir des produits d'une catégorie particulière dans magento ecommerce

Je souhaite obtenir une liste de produits aléatoires de la même catégorie que le produit actuel à afficher dans la vue des produits - jusqu'à présent, tout ce que j'ai découvert est

Produits Magento par catégories

Est-ce que quelqu'un sait comment faire ça?

10
Allbutlost

Vous chargez essentiellement la catégorie, obtenez la collection de produits, puis vous filtrez de manière appropriée.

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

Voici le code pour obtenir des produits de n'importe quelle catégorie: -

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

ce que j'ai fini par faire est dans app/design/frontend/default/nom_thème/template/catalogue/produit/list_random.phtml

faire quelque chose comme:

<?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);
?>

cela vous donnera un tableau d'identifiants de produit. Vous pouvez les parcourir et créer des produits à la volée en utilisant:

<?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
}?>

puis, créez un bloc statique dans le cms avec le contenu suivant

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

Enfin, dans la section Catalogue-> Gérer les catégories, choisissez la catégorie, puis l'onglet Paramètres d'affichage. Basculez le mode d'affichage sur "Bloc et produits statiques", puis choisissez votre bloc dans la liste déroulante.

Et cela devrait le faire.

7
Dan Klassen
$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/>';
       }

C’est le code de loin le plus pratique pour obtenir les détails du produit de la catégorie spécifique. Espérons que cela vous aide.

3
Chiragit007

Vous devez instancier un modèle en appelant Mage::getModel('catalog/product') dans ce cas, car vous obtenez alors une instance d'objet configuré, étendue par tous les modules configurés.

Si vous le faites comme new Mage_Catalog_Model_Product(), cela ignorera les modules et contournera l'API de Magento.

2
emanuel

Ce code vous aidera à obtenir produits à partir de catégorie id 2 . Et utilise également ici un fichier modèle list_home.phtml pour la liste de produits.

 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---
0
safin chacko