如何从magento电子商务中的特定类别获取产品

时间:2009-01-18 01:31:47

标签: php magento e-commerce

我想获得与当前产品相同类别的随机产品列表,以便在产品视图中显示 - 到目前为止我所挖出的所有产品都是

Magento products by categories

有谁知道怎么做?

6 个答案:

答案 0 :(得分:23)

您基本上会加载类别,获取产品系列,然后进行适当的过滤。

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

答案 1 :(得分:18)

以下是从任何特定类别获取产品的代码: -

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

答案 2 :(得分:7)

我最终做的是app / design / 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);
?>

这将为您提供一系列产品ID。您可以使用以下方法循环浏览它们并创建产品:

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

最后,在目录 - &gt;管理类别部分中,选择类别,然后选择显示设置标签。将显示模式切换为“静态块和产品”,然后从下拉列表中选择块。

那应该这样做。

答案 3 :(得分:3)

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

这是目前为止获取特定类别的产品详细信息的方便代码。希望它对您有帮助。

答案 4 :(得分:2)

在这种情况下,您应该通过调用Mage::getModel('catalog/product')来实例化模型,因为这样您就会得到一个已配置的对象实例,并由任何已配置的模块进行扩展。

如果你像new Mage_Catalog_Model_Product()这样做,这将忽略模块并绕过Magento API。

答案 5 :(得分:0)

此代码可帮助您从类别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---