2012-02-13 10 views
0

私のページの1つに表示する特定のカテゴリを取得しようとしています。私はしかし、5Mage_Catalog_Model_Categoryを使用した不思議な動作

$category = new Mage_Catalog_Model_Category(); 
$category->load(5); 

のIDとカテゴリをロードするには、次のコードを使用しています、これはカテゴリ内の製品があっても、結果を返しません。 IDを2(既定のカテゴリ)に変更しました。このカテゴリに製品がないのに2つの製品が返されます。 、そして、

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

私は新しいページを作成しました:

これは私がコードをロードしています方法です、私は静的ブロックは、「カテゴリ別ゲット」と呼ばれる、それを有効にし、次のコードでそれを満たし作成しましたその静的ブロックを追加しました。

誰もこれまでに経験したことがありますか?誰も手を貸すことはできますか?このコードは、静的なブロックにそのように動作しません

$catalog = Mage::getModel('catalog/category')->load(/* your category ID*/); 
$collection = $catalog->getProductCollection(); 
Zend_Debug::dump($collection->getItems()); 

+3

カタログ/カテゴリー) '。メソッド呼び出し '$ category-> load(5)'はロードされたモデルを返すので、あなたの質問はちょっと言い直されるかもしれません。また、デフォルトカテゴリのようなものはありません。ルートカテゴリを意味すると思いますか?ルートカテゴリの 'is_anchor'設定の値は?商品を検索すると商品が表示されますか? – Vinai

答えて

1

プログラムは、次のようにそれをしなければならないカテゴリの製品リストをロードします。 Mage_Core_Block_Template(または類似のもの)のクラスを作成し、事前定義されたカテゴリIDを持つコレクションを準備し、静的ブロックに次のコードを使用する必要があります。{{block type = "catalog/mynewblock" template = "catalog /ブロックがCMSモジュールによってインスタンス化され、フィルタMage_Core_Model_Email_Template_Filterのおかげで、ブロックはcategory_idの値を持つことになります。このブロックはcategory_id = 'my_category_ID_value'ブロックでは、次の操作を行う必要があります:あなたは答えの他の情報を見つけることができ

protected function _beforeHtml(){ // or in the protected function _toHtml() depending of what you want to do and how you want to do it. 
    $categoryId = $this->getCategoryId(); 
    $catalog = Mage::getModel('catalog/category')->load($categoryId); 
    $collection = $catalog->getProductCollection(); 
    $products = $collection->getItems(); 
    $this->setProducts($products); // in your template file you can, then, do $this->getproducts(); etc... 
    ... 
} 

IここHow to display multiple categories with a Magento block書いた

カテゴリは、モデルのファクトリメソッド `メイジ:: getModelを(」を使用してインスタンス化されなければならない
関連する問題