我在控制器中添加了一个新块,这正在工作。
$this->loadLayout();
$cmsBlock = $this->getLayout()->createBlock('cms/block')->setBlockId('cms_block_fail');
$this->getLayout()->getBlock('content')->append($cmsBlock);
$this->renderLayout();
在布局中.xml我在"内容"结构块中设置了另一个内容块。
<reference name="content">
<block type="contactus/form" name="contact_us" template="contactus/contactus.phtml"/>
</reference>
我希望 CMS 块在contact_us
块之前。在Layout.xml
中,我可以使用之前和之后的参数。如果我写after="-"
块将设置在结构块"内容"的最后一个位置,对吗?这是行不通的。如何在控制器中使用php
设置此参数?还是其他想法?
$this->getLayout()->getBlock('content')->insert($cmsBlock,'contact_us');
应该导致$cmsBlock
在contact_us
块之前被array_splice()
到content
块的_sortedChildren()
数组中。
逻辑有点深奥,但您可以在Mage_Core_Block_Abstract::insert()
中找到有关其工作原理的更多信息 - 请注意,append($block)
本质上是insert($block,'',true)
的别名。