6

我根据本教程 http://blog.magikcommerce.com/how-to-show-most-viewed-best-sales-products-in-magento-store创建了一个自定义块

我想从我的 home.phtml 模板文件中调用 Block。

我从以下位置调用我的静态块:

<?php
$helper = Mage::helper('cms');
$source = Mage::getModel('cms/block')->load('my-block');
$processor = $helper->getPageTemplateProcessor();
$html = $processor->filter($source->getContent());
echo $html;
?>

当然,它就像一个魅力!' 但是,在我的情况下,如何在模板文件中加载动态块。

我的 bestseller.phtml 文件是:

app/design/frontend/default/default/template/catalog/product/bestseller.phtml

我的课是:

Mage_Catalog_Block_Product_Bestseller 
4

2 回答 2

17

从模板文件加载块是一种非常糟糕的风格,但它是可能的。

来自模板文件的肮脏方式

echo $this->getLayout()->createBlock('catalog/product_bestseller')->toHtml();

干净的方法:
修改相应的布局XML文件并添加块,然后引用它

echo $this->getChildHtml('product_bestseller');

如果要向 cms 页面添加块,请使用Design下的Layout Xml Updates部分:

<reference name="content">
    <block type="catalog/product_bestseller" name="product_bestseller" />
</reference>
于 2013-09-24T15:36:09.413 回答
2

这从 1.5.1 开始工作,还允许您重新定位模板

$block = $this->getLayout()
         ->createBlock('catalog/product_bestseller','product_bestseller',
                       array('template' => 'pathTo/template.phtml'));
echo $block->setBlockId('whatever')->toHtml();
于 2015-03-05T18:43:09.640 回答