2016-12-04 1 views
0

Ich erstelle Seiten programmatisch und füge Inhalte in einen Inhaltsblock ein, aber nachdem er erstellt wurde, kann ich ihn nicht über Composer bearbeiten (weil es kein core_page_type_composer_control_output ist, es ist ein normaler Inhaltsblock) . Gibt es eine Möglichkeit, einer Seite einen Block programmatisch hinzuzufügen und ihn im Composer zu spielen?Addiere Composer Control Output Block Prgrammammatically

Relevante Code Ich verwende:

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

Antwort

0

Um dies zu erreichen, würde ich Setup den Seitentyp, wie Sie die Seite mit dem Komponisten schaffen würde.
(fügen Sie den Inhaltsblock an den Komponisten und die Standardausgabe des Seitentypen)

Nach Erstellen der Seite, werden Sie der Komponist gebundenen Inhaltsblock auf der Seite vorhanden ist, bemerken aber völlig leer. Dann würde ich den Block aktualisieren, anstatt zu versuchen, einen neuen Block im "Main" -Bereich zu erstellen.

Code-Beispiel ( nicht getestet):

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