Magento使用产品集合在模板中调用.phtml文件

时间:2014-03-08 06:57:38

标签: php magento object

我可以将.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值最有效的方法?

2 个答案:

答案 0 :(得分:7)

有两种选择:

  1. 您可以每次在foreach循环中按Mage::getModel('catalog/product')->load(<product_id>)加载带有ID的产品。

  2. 使用以下

  3. 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();