Couldn't find anything about it, so hopefully anyone can help me:
In the install.php, let's say I want to add content to the sidebar of the home page, I can do it like this:
//sidebar content
$bt = BlockType::getByHandle('content');
$data = array();
$data['uID'] = $this->installData['USER_SUPER_ID'];
$data['content'] = t('Text on my sidebar...');
$home->addBlock($bt, "Sidebar", $data);
But I would like to not only add this block to one page, I want it to be the default on the added page type and also add it to any other existing page sharing the same page type (e.g left_sidebar). How can I do this?
Is your installer adding this new page type or is it working with a page type that already exists in the system?
If it's adding the new page type, do this:
$pkg= parent::install();
Loader::model('collection_types');$data=array('ctHandle'=>'my_pagetype_handle','ctName'=> t('My Page Type Name'),'ctIcon'=>'main.png',);$myNewPageType= CollectionType::add($data,$pkg);$myNewPageDefaults=$myNewPageType->getMasterTemplate();//sidebar content$bt= BlockType::getByHandle('content');$data=array();$data['uID']=$this->installData['USER_SUPER_ID'];//<-- NOTE that this isn't necessary because the block will be installed under the current user's ID if you don't provide your own$data['content']= t('Text on my sidebar...');$myNewPageDefaults->addBlock($bt,"Sidebar",$data);
If you want to add it to an existing page type, do this:
Loader::model('collection_types');$myPageType= CollectionType::getByHandle('my_pagetype_handle');$myPageDefaults=$myPageType->getMasterTemplate();//sidebar content//...same as above...