通过list.phtml编辑显示单个产品

时间:2013-08-14 10:40:49

标签: magento magento-1.7

所以我想要实现的是,在网站的首页上显示属性“促销”设置为“是”的产品。这是有效的,但我使用的.phtml文件是常规list.phtml。目前显示我已设置为促销的所有项目,但我只想显示1.

简而言之:如何编辑list.phtml只显示1个产品而不是所有产品?

1 个答案:

答案 0 :(得分:1)

更改您的收藏方式。克隆/重命名list.phtml,例如promotion.phtml。然后改变这一行:

$_productCollection=$this->getLoadedProductCollection();

对此:

$_productCollection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*')
                        ->addFieldToFilter('promotion', 1)
                        ->addAttributeToSort('updated_at', 'DESC')
                        ->clear()->setPageSize(1)->load();

它应该只加载一个促销设置为yes的项目。确保在CMS页面内容或XML中设置新模板,具体取决于添加的方法。

<强>解释

  • Mage::getModel('catalog/product')->getCollection():获取产品系列。您可以通过更改模型来获取其他集合,例如“catalog / category”和“cms / page”。

  • ->addAttributeToSelect('*'):添加所有产品列。这可以换成('name', 'url')之类的东西。我假设它比加载所有更快,但我没有对它进行基准测试。由于您使用的是完整模板,因此最好将此设置保留为所有模板。

  • ->addFieldToFilter('promotion', 1):按属性过滤产品。在这里,我们为所有那些'promotion'属性设置为1(是/ true)的产品进行了筛选。产品使用这个,而类别奇怪地使用->addAttributeToFilter()。绝对给Alan Storm的收集说明(链接如下)一个通读,以了解你可以用这个做什么。您可以向集合添加多个过滤器,方法是添加另一个->addFieldToFilter(),或将过滤器存储在嵌套数组中。

  • ->addAttributeToSort('updated_at', 'DESC'):按特定属性和方向对产品集合进行排序。在这里,我将“updated_at”日期设置为降序,“ASC”正在升序。您可以添加多个排序属性,当然要注意添加它们的顺序。

  • ->clear()->setPageSize(1)->load():需要这三个来调整收集的数量。必须先调用->clear()才能更改提取的产品数量。您可以在->setPageSize()位指定要返回的产品数量,当然->load()会加载该集合。请注意,如果您不限制返回的集合的大小,则不需要整行,产品将迭代而无需调用->load()

<强>资源

Alan Storm说得最好,给你一个阅读,你应该成为操纵馆藏的专业人士:http://alanstorm.com/magento_collections