製品ビュー内に表示するために、現在の製品と同じカテゴリからランダムな製品のリストを取得したいと思います-これまでに掘り下げたのは
誰もこれを行う方法を知っていますか?
製品ビュー内に表示するために、現在の製品と同じカテゴリからランダムな製品のリストを取得したいと思います-これまでに掘り下げたのは
誰もこれを行う方法を知っていますか?
基本的に、カテゴリをロードし、商品コレクションを取得してから、適切にフィルタリングします。
$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('special_price', array('neq' => ""))
->setOrder('price', 'ASC')
;
Here is the code to get products from any particular category:-
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addCategoryFilter($category);
私がやったことは 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"}}
最後に、[カタログ] -> [カテゴリの管理] セクションで、カテゴリを選択してから、[表示設定] タブを選択します。表示モードを「静的ブロックと製品」に切り替えて、ドロップリストからブロックを選択します。
そして、それはそれを行う必要があります。
$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/>';
}
これは、特定のカテゴリの製品の詳細を取得するための非常に便利なコードです。お役に立てば幸いです。
この場合、呼び出してモデルをインスタンス化する必要がありますMage::getModel('catalog/product')
。これは、構成されたモジュールによって拡張された、構成されたオブジェクト インスタンスを取得するためです。
このようnew Mage_Catalog_Model_Product()
にすると、モジュールが無視され、Magento API がバイパスされます。
このコードは、カテゴリ 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---