修改后的Magento列表模板确实具有所有属性,以便再显示产品信息

时间:2010-11-29 18:22:42

标签: php xml zend-framework magento

我正在尝试显示特定类别的所有产品。所以我创建了/theme/template/catalog/list.phtml的副本,我在顶部添加了这几行:

$cat_id = 10; // category_id for "specific category"
$_productCollection = Mage::getResourceModel('catalog/product_collection')->addCategoryFilter(Mage::getModel('catalog/category')->load($cat_id));

替换了:

$_productCollection=$this->getLoadedProductCollection();

现在即时获取所有产品,但产品的某些属性和方法似乎不再可用($ _ product-> isSaleable(),$ this-> getPriceHtml($ _ product))。因此模板不会正确显示产品价格或图像。在我看来,由于我直接为产品引用了模型,因此我无法使用某些辅助函数,但我对Zend / Magento框架知之甚少,无法知道要使用哪种方法。

我没有粘贴list.phtml的代码,因为这只是magento 1.3上基本模板的默认代码。请让我知道任何人都需要此代码供参考。

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果要限制按特定类别显示产品,则需要将此类别ID设置为图层对象(产品列表范围)。在模板内部调用模型和初始化新集合并不是一种好习惯。您只需通过布局设置类别ID并使用旧模板代码(无需修改):

<reference name="your.custom.product.list">
    <action method="setCategoryId"><categoryId>10</categoryId></action>
</reference>

答案 1 :(得分:1)

可能是因为您没有指定商店ID或范围,因此该集合不知道要与产品模型一起加载哪些属性。您可以通过执行此操作来包含该代码并缩短代码:

$cat_id = 10; // category_id for "specific category"
$_category = Mage::getModel('catalog/category')->load($cat_id);
$_productCollection = $_category->getProductCollection();