在Magento的foreach里面的getChildHtml

时间:2014-04-26 01:49:54

标签: php magento

我正在使用Magento的新模板。为了避免重复代码,我想为每个产品预览使用相同的子模板。

特别是我做了这样的展示:

$products = Mage::getModel('catalog/product')->getCollection();
foreach ($products as $product) {
      $this->getChild('preview_product')->setData('product', $product);
      $this->getChildHtml('preview_product',true); // true to avoid caching
}

块preview_product调用包含以下代码的文件preview_product.phtml:

<?php
$product = $this->getData("product");
?>
<h2><?php echo $product->getName(); ?></h2>

问题很简单。这种情况的结果如下:

<h2>HTC Touch Diamond</h2>
<h2>HTC Touch Diamond</h2>
<h2>HTC Touch Diamond</h2>

生成相同的var或相同的html。 我如何使用这段代码?

2 个答案:

答案 0 :(得分:4)

替换

$this->getChildHtml('preview_product',true);

$this->getChildHtml('preview_product',false);

并且每次都要阻止构建对象。

答案 1 :(得分:2)

echo $this->getLayout()
    ->createBlock('core/template')
    ->setTemplate('path/to/template.phtml')
    ->setProduct($product)
    ->toHtml();