我正在以编程方式创建页面并将内容插入内容块,但在创建后,我无法通过编辑器进行编辑(因为它不是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);
答案 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)
}
}
}