这是一个向magento初学者一步一步展示magento如何按属性来列出产品排序的教程.
我将以Magento已经创建好的新产品和促销产品功能开始.
以下所有说明都是针对Magento1.9.0.0的
列出带有属性New的产品列表
在Magento后台管理面板,在Products management里面的Manage products 你能找到设置和定义新的属性。这篇教程中,我将使用名字叫Homepage的CMS Page来作为示例
在CMS Page layout -> Layout Update XML里面已经被原有的cms page占据着:
<reference name="content"> <block type="core/template" name="home" as="home" template="page/home.phtml" > </block></reference>
- 首先,通过设置“Set Product as New from Date”和“Set Product as New to Date”来定义产品为新产品.
- Magento默认已经指定了新产品列表的模板,你可以在app/design/frontend/pro/YourTheme/template/catalog/product/new.phtml这个路径找到它.
- 在xml布局文件中通过block块结构体来定义你想要在哪里显示新产品模板(new.phtml).
- 插入新的block块
<reference name="content">
<block type="catalog/product_new" name="home.catalog.product.new" alias="product_new" as="newproducts" after="cms_page" template="catalog/product/new.phtml">
<action method="setProductsCount"><count>8</count></action>
<action method="setColumnCount"><count>4</count></action>
</block>
</reference>
- 指定你想要在哪展示带有新产品模板的块(在哪里调用这个block块)
< ?php echo $this->getChildHtml('newproducts') ?>
在我们的案例中,我们把Homepage模板定位于template/page/html/home.phtml
- 这就是所有你需要做的.
注意:
Content 是一个core/text_list类型 并且他可以支持嵌套所有的block类型.
你可以设置你想要显示多少个产品在magento的前台:
<action method="setProductsCount"><count>8</count></action>
和多少列:
<action method="setColumnCount"><count>4</count>4</action>
列出所有带有Promotion属性的产品列表
列出所有带有Promotion属性的产品列表方法在magento中已经存在,这与列出新产品稍微有点不同
- 首先我们需要在Magento后台为产品创建一个属性
- 创建一个名为“Promotion”的dropdown (Yes/No)类型的属性
- 如果你想为所有产品添加属性,那么需要将属性关联到default属性组
- 复制template/catalog/product/list.phtml文件到同级目录下,改名为promotion.phtml
- 在XML布局文件中定义block块的位置。在我们的案例中是CMS page下的“Homepage”
<block type="catalog/product_list_promotion" name="promotion" template="catalog/product/promotion.phtml" />
- 指定你想要在哪展示带有promotion.phtml模板的块在哪里调用这个block块)
< ?php echo $this->getChildHtml('promotion') ?>
在我们的案例中,我们把Homepage模板定位于template/page/html/home.phtml
列出带有自定义模板和带有dropdown Yes/No类型属性的产品列表
在这个案例中,我们将用magento的Promotion product方法来修改它.
- 创建新的目录文件app/code/local/Mage/Catalog/Block/Product/List/Example.php
- 复制app/code/core/Mage/Catalog/Block/Product/List/Promotion.php 并粘贴到Example.php
- 改变Example.php:
class Mage_Catalog_Block_Product_List_Promotion extends Mage_Catalog_Block_Product_List
到:
class Mage_Catalog_Block_Product_List_Example extends Mage_Catalog_Block_Product_List
也要改变:
$collection->addAttributeToFilter('promotion', 1)
到:
$collection->addAttributeToFilter('example', 1)
之后按照我之前写过Promotion属性的步骤执行。
希望这篇教程能对你有所帮助。