6

このチュートリアルhttp://blog.magikcommerce.com/how-to-show-most-viewed-best-selling-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 に答える