我有一個心願單塊停用佈局:如何在phtml中調用塊而不是通過佈局?
<block type="catalog/product_view" name="product.info.addtoto" as="addtoto" template="catalog/product/view/addto.phtml"/>
我現在想調用該塊在PHTML,而不是將它添加到另一個佈局。
如何直接打電話給我?
我有一個心願單塊停用佈局:如何在phtml中調用塊而不是通過佈局?
<block type="catalog/product_view" name="product.info.addtoto" as="addtoto" template="catalog/product/view/addto.phtml"/>
我現在想調用該塊在PHTML,而不是將它添加到另一個佈局。
如何直接打電話給我?
雖然Prattski是正確的,這是拙劣的形式(是我upvoting這樣),已經有開發時無論何時這一直是一個有價值的調試技術時代,或者它造成了幾個小時的編程差異。本着這種精神,這是不良習慣的做法:
<?php print $this->getLayout()
->createBlock("catalog/product_view")
->setTemplate("catalog/product/view/addto.phtml")
->toHtml(); ?>
謹慎使用,如果有的話。
Chris - 您應該永遠需要直接從模板中調用塊。這將是一個不好的習慣/練習。找到要添加塊的模板的正確引用,並將其添加到佈局xml中。然後從模板文件中,使用:
echo $this->getChildHtml('your-block');
echo Mage::app()->getLayout()
->createBlock('somemodule/someblock')
->setSomeVariable($variable)
->setTemplate('somemodule/someblock.phtml')
->toHtml();
這可以用於調用塊的任何地方。 setSomeVariable($variable)
如果設置可以通過someblock.phtml
$this->getSomeVariable();
來訪問我這個奮鬥了年齡和發現,如果你想從佈局的一個完全獨立的部分叫塊時,需要使用略有不同的代碼。用途:
<?php echo $this->getBlockHtml('any_block'); ?>
相反的:
<?php echo $this->getChildHtml('any_block'); ?>
使用此代碼,你可以在任何地方創建自己的塊,或者從其他模塊塊,並把它們放在任何地方。
請注意,需要在佈局中定義該塊。 – l00k 2016-06-03 10:48:53
我怎麼可以添加「之後」或「之前」的功能來調用某些塊之前或之後的代碼塊中的塊。 – drsndodiya 2014-10-17 08:17:20
抱歉沒有試過這個。但是在createBlock中,第三個參數是'array $ attribute'。你可以看看。 – 2015-06-15 09:24:31