在控制器中添加新块并将其设置在第一个位置



我在控制器中添加了一个新块,这正在工作。

$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');应该导致$cmsBlockcontact_us块之前被array_splice()content块的_sortedChildren()数组中。

逻辑有点深奥,但您可以在Mage_Core_Block_Abstract::insert()中找到有关其工作原理的更多信息 - 请注意,append($block)本质上是insert($block,'',true)的别名。

最新更新