我正在使用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。 我如何使用这段代码?
答案 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();