【发布时间】:2012-10-19 18:57:31
【问题描述】:
我从 Web 服务获得了一个 magento id 列表。我将这些加载到数组$product_ids 中,所以我有这样的东西:
Array
(
[0] => 1965
[1] => 3371
[2] => 1052
)
然后我可以把它变成一个集合:
$collection = Mage::getModel('catalog/product')->getCollection()
->addIdFilter($product_ids);
使用我的 Magento 检查器,我看到类别页面使用 Mage_Catalog_Block_Product_List 类来显示产品列表。我想在课堂上做类似的事情。我试过加载:
$ProductList = new Mage_Catalog_Block_Product_List();
$ProductList->setCollection($collection);
然后我尝试加载结果的 HTML 如下:
$CollectionHTML = $ProductList->_toHtml();
但是$CollectionHTML 是空的。
我如何获得您在列表视图中看到的 HTML(即前端/base/default/template/catalog/product/list.phtml 的生成输出,但给定我的集合)?
【问题讨论】:
-
为什么要绕过 LAYOUT 层(xml 布局文件)?在 magento 中,您不应该直接实例化 PHP Block 类。您必须通过 $this->getLayout()->createBlock('catalog/product_list') 加载它或让 Layout 文件执行此操作(这是他们的目的)。我建议你阅读/学习 magento 教程/书籍
-
@Bixi 我同意关注点分离,原则上也同意你的观点,感谢您提出这一点,因为其他用户不应该认为这不是理想的解决方案。但我不想在这里进行哲学辩论。我必须维护一个脚本并按照您的方式(正确的方式)做事将涉及大量重构。因此我的问题。
标签: magento