我可以将.phtml文件称为我的.phtml模板,如list.phtml。
<?php
echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml();
?>
但是在test.phtml中,我无法调用$ _product值。
例如:
<?php
$_productCollection=$this->getLoadedProductCollection();
foreach ($_productCollection as $_product):
?>
作品
<?php echo $_product->getName() ?>
不起作用:
<?php
echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml();
?>
在文件中:test.html:<?php echo $_product->getName() ?>
。
我是否必须在每个包含的文件中再次加载产品中的完整集合,如何才能在test.phtml中获得$ _product值最有效的方法?
答案 0 :(得分:7)
有两种选择:
您可以每次在foreach循环中按Mage::getModel('catalog/product')->load(<product_id>)
加载带有ID的产品。
使用以下
echo $this->getLayout()->createBlock('catalog/product_list')->setTemplate('goodtest/test.phtml')->toHtml();
而不是
echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml();
答案 1 :(得分:3)
您可以通过控制器分配模板,例如@example
$this->loadLayout();
$listBlock = $this->getLayout()->createBlock('catalog/product_list')
->setTemplate('catalog/product/list.phtml')
->setCollection($collection);
$this->getLayout()->getBlock('content')->append($listBlock);
$this->renderLayout();