2013-09-24 8 views
6

Ich habe ein Custom Block erstellt basierend auf diesem Tutorial http://blog.magikcommerce.com/how-to-show-most-viewed-best-selling-products-in-magento-storeeiner benutzerdefinierten PHP Magento-Block innerhalb einer Vorlage-Datei laden

Ich mag würde den Block aus meiner home.phtml Vorlagendatei aufzurufen.

Ich nenne meine statischen Blöcke aus:

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

Und es wirkt wie ein Zauber, natürlich! ' Aber wie kann ich dynamische Blöcke laden, in meinem Fall in Template-Dateien.

Meine bestseller.phtml Datei ist:

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

Und meine Klasse ist:

Mage_Catalog_Block_Product_Bestseller 

Antwort

17

Laden Block aus einer Vorlagendatei ein sehr schlechter Stil ist, aber es ist möglich.

die schmutzige Art und Weise aus einer Vorlagendatei

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

Die saubere Art und Weise:
zur Layout-XML-Datei gehen, um den Block wie anyother hinzufügen und mit

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

darauf verweisen, wenn Sie befinden sich in einer cms-Seite Verwenden Sie den Abschnitt "Layout Xml Updates" unter Design wie

<reference name="content"> 
    <block type="catalog/product_bestseller" name="product_bestseller" /> 
</reference> 
+0

Perfekt verlagern! Diese Lösung funktionierte wie ein Zauber! –

2

dies ab 1.5.1 gearbeitet, können Sie auch die Vorlage

$block = $this->getLayout() 
     ->createBlock('catalog/product_bestseller','product_bestseller', 
         array('template' => 'pathTo/template.phtml')); 
echo $block->setBlockId('whatever')->toHtml();