web-dev-qa-db-ja.com

magento eコマースの特定のカテゴリから製品を取得する方法

製品ビュー内に表示するために、現在の製品と同じカテゴリからランダムな製品のリストを取得したい-これまでに調べたのは

カテゴリ別のMagento製品

誰でもこれを行う方法を知っていますか?

10
Allbutlost

基本的にカテゴリをロードし、製品コレクションを取得して、適切にフィルタリングします。

$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

これは、特定のカテゴリから製品を取得するためのコードです。

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

私がやったことは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"}} 

最後に、[カタログ]> [カテゴリの管理]セクションで、カテゴリを選択し、次に[表示設定]タブを選択します。表示モードを「静的ブロックと製品」に切り替え、ドロップリストからブロックを選択します。

そして、それでうまくいくはずです。

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

これは、特定のカテゴリの製品詳細を取得するための非常に便利なコードです。

3
Chiragit007

この場合、Mage::getModel('catalog/product')を呼び出してモデルをインスタンス化する必要があります。これにより、構成済みモジュールによって拡張された構成済みオブジェクトインスタンスが取得されます。

new Mage_Catalog_Model_Product()のように実行すると、モジュールが無視され、Magento APIがバイパスされます。

2
emanuel

このコードはproductscategory 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---
0
safin chacko