Magento在带有产品集合的模板中调用.phtml文件



我可以像list.phtml一样调用.phtml文件到我的.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();
?>

在文件中:测试.html:<?php echo $_product->getName() ?>

我是否必须在每个包含的文件中再次加载产品中的完整集合,如何在test.phtml中最有效的方式获得$ _product值?

有两个选项:

  1. 您可以通过每次在 foreach 循环中使用 idMage::getModel('catalog/product')->load(<product_id>)来加载产品。

  2. 在下面使用

echo $this->getLayout()->createBlock('catalog/product_list')->setTemplate('goodtest/test.phtml')->toHtml();

而不是

echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml();

您可以通过控制器分配模板,例如@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();

最新更新