2016-12-04 3 views
0

ページをプログラムで作成し、コンテンツブロックにコンテンツを挿入していますが、作成後はコンポーザーで編集することはできません(core_page_type_composer_control_outputではないため、通常のコンテンツブロックです) 。プログラムでページにブロックを追加し、Composerでうまく再生できる方法はありますか?私が使用しているComposerコントロール出力ブロックを文法的に追加する

関連するコード:

$page = Page::getByPath('/articles/xxx'); 
$block = BlockType::getByHandle('content'); 
$data = array(
    'content' => 'the content', 
); 
$page->addBlock($block, 'Main', $data); 

答えて

0

これを達成するために、私はセットアップあなたが作曲してページを作成してページタイプをでしょう。
(コンポーザにコンテンツブロックとpagetypeの標準出力を追加)

ページを作成すると、コンポーザリンクされたコンテンツブロックがページ上に存在していても完全に空であることがわかります。それから私は 'メイン'領域に新しいブロックを作成しようとする代わりにブロックを更新します。

コード例(をテストしていない):

$page = Page::getByPath('/articles/xxx'); 
$blocks = $page->getBlocks('Main'); 
if(!empty($blocks)){ 
    foreach($blocks as $block){ 
    //check if the blocktype is content 
    if($block->getBlockTypeHandle() == 'content'){ 
     //we are pretty sure this is the content block in the main area 
     //because it's the only content block present... updating the block content 
     $data = array(
       'content' => 'the content', 
      ); 
     $block->update($data) 
    } 
    } 
} 
関連する問題