以编号方式添加Composer Control输出块

时间:2016-12-04 21:36:34

标签: concrete5 concrete5-5.7

我正在以编程方式创建页面并将内容插入内容块,但在创建后,我无法通过编辑器进行编辑(因为它不是core_page_type_composer_control_output,而是常规内容块)。有没有办法以编程方式向页面添加块并使其在Composer中运行良好?

我正在使用的相关代码:

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

1 个答案:

答案 0 :(得分:0)

要实现这一点,我会设置pagetype,就像使用composer创建页面一样 (将内容块添加到composer和pagetype的标准输出)

创建页面后,您会注意到作曲家链接的内容块出现在页面上但完全为空。然后我会更新块而不是尝试在' Main'中创建一个新块。区域。

代码示例(未经过测试):

$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)
    }
  }
}