我正试图让某个类别在我的某个页面上显示,而且我会得到一些奇怪的结果。我正在使用以下代码加载ID为5的类别
$category = new Mage_Catalog_Model_Category();
$category->load(5);
但是,即使该类别中有产品,也会返回NO结果。我已将ID
更改为2(这是默认类别),这会返回2个产品,即使该类别中没有产品!
这就是我加载代码的方法,我创建了一个名为“Get By Category”的静态块,启用它并用以下代码填充它:
{{block type="catalog/navigation" template="catalog/product/by_category.phtml"}}
然后,我创建了一个新页面并将静态块添加到其中。
有没有其他人经历过这个?任何人都可以伸出援手吗?
答案 0 :(得分:1)
以编程方式,要加载您必须执行的类别的产品列表,如下所示:
$catalog = Mage::getModel('catalog/category')->load(/* your category ID*/);
$collection = $catalog->getProductCollection();
Zend_Debug::dump($collection->getItems());
此代码不会像静态块中那样工作。您必须创建一个类型为Mage_Core_Block_Template(或类似)的类,并使用预定义的类别ID准备集合,然后在静态块中,您可以使用以下代码{{block type =“catalog / mynewblock”template =“catalog / product / mynewblock.phtml“category_id ='my_category_ID_value'}}
当块模块由CMS模块实例化并且由于过滤器Mage_Core_Model_Email_Template_Filter,该块将具有category_id的值。在Block中,您必须执行以下操作:
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...
...
}
您可以在我在此处写的答案中找到其他信息How to display multiple categories with a Magento block