2012-10-17 153 views
2

我在控制器中添加一個新塊,這是行得通的。在控制器中添加新塊並將其設置爲第一位

$this->loadLayout(); 
$cmsBlock = $this->getLayout()->createBlock('cms/block')->setBlockId('cms_block_fail'); 
$this->getLayout()->getBlock('content')->append($cmsBlock); 
$this->renderLayout(); 

在Layout.xml中,我在「content」structurblock中設置了另一個內容塊。

<reference name="content"> 
    <block type="contactus/form" name="contact_us" template="contactus/contactus.phtml"/> 
</reference> 

我想在contact_us塊之前的CMS塊。在Layout.xml我可以使用前後的參數。如果我寫after="-"該塊將被設置在結構塊「內容」的最後一個位置,對嗎?這不起作用。我如何在Controller中設置php?還是其他想法?

回答

7

$this->getLayout()->getBlock('content')->insert($cmsBlock,'contact_us');應導致$cmsBlockarray_splice()編入content塊的領先於contact_us塊的_sortedChildren()陣列。

邏輯有點深奧,但您可以在Mage_Core_Block_Abstract::insert()中找到更多關於如何工作的信息 - 注意append($block)本質上是insert($block,'',true)的別名。

相關問題