2

コントローラに新しいブロックを追加しました。これは機能しています。

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

Layout.xmlで、「content」構造ブロックに他のコンテンツブロックを設定しました。

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

ブロックの前にCMSブロックが必要ですcontact_us。私はLayout.xml前後のパラメータを使用できます。ブロックを書くafter="-"と、構造ブロック「コンテンツ」の最後の位置に設定されますよね?これは機能していません。phpコントローラでこのパラメータを設定するにはどうすればよいですか?または他のアイデア?

4

1 に答える 1

7

$this->getLayout()->getBlock('content')->insert($cmsBlock,'contact_us');をブロックの前にあるブロックの配列に挿入する$cmsBlock必要があります。array_splice()content_sortedChildren()contact_us

ロジックは少し厄介ですが、これがどのように機能するかについての詳細を見つけることができます-これは本質的にのエイリアスであることにMage_Core_Block_Abstract::insert()注意してください。append($block)insert($block,'',true)

于 2012-10-18T00:19:23.713 に答える