【问题标题】:How to get products from a particular category in magento ecommerce如何在magento电子商务中获取特定类别的产品
【发布时间】:2009-01-18 01:31:46
【问题描述】:

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

Magento products by categories

有人知道怎么做吗?

【问题讨论】:

    标签: php magento e-commerce


    【解决方案1】:

    您基本上加载了类别,获取产品集合,然后进行适当的过滤。

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

    【讨论】:

    • 这可能是最好的解决方案,但是如果您将完整的答案与代码一起包含在此处会更好。以防万一 URL 停止工作。
    • 此解决方案可能比公认的答案更有效,因为它不必遍历整个产品范围,只需要属于该类别的那些。
    • 未找到链接。你能检查一下吗?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我最终做的是在 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"}} 
      

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

      应该这样做。

      【讨论】:

      • 请注意:以上代码将获取当前 AND 子类别中的所有产品。使其仅成为当前类别应该很简单。
      • 注意:您不应该在模板文件中包含“复杂逻辑”。您应该使用特定方法创建 BLOCK 来检索将在模板中使用的过滤产品。另外你应该使用@chapagain 方法或Mage_Catalog_Model_Category::getProductCollection() 基本相同,但它也添加了STORE VIEW 过滤器。
      【解决方案4】:
      $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/>';
             }
      

      这是迄今为止获取特定类别产品详细信息的便捷代码。希望对您有所帮助。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          此代码将帮助您从 category id 2 中获取 products。而且这里还使用了一个模板文件 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---
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-27
            • 2019-01-26
            • 1970-01-01
            • 2018-08-07
            • 1970-01-01
            相关资源
            最近更新 更多