I’m writing a plugin that comes with some partial blueprints. When I tried to import these in my theme’s blueprints, nothing would show up in the admin. A quick search revealed that you first have to put some code in the plugin’s php file to enable the blueprint. However, I found two ways of achieving it and both seem to work. They can also be combined and everything still seems to work.
Approach 1 - via getSubScribedEvents()
:
public static function getSubscribedEvents()
{
return [
'onGetPageBlueprints' => ['onGetPageBlueprints', 0]
];
}
public function onGetPageBlueprints(Event $event)
{
$types = $event->types;
$types->scanBlueprints('plugin://' . $this->name . '/blueprints');
}
Approach 2 - via $this->enable
:
public static function getSubscribedEvents()
{
return [
'onPluginsInitialized' => ['onPluginsInitialized', 0]
];
}
public function onPluginsInitialized()
{
if ($this->isAdmin()) {
$this->enable([
'onGetPageBlueprints' => ['onGetPageBlueprints', 0]
]);
}
}
public function onGetPageBlueprints(Event $event)
{
$types = $event->types;
$types->scanBlueprints('plugin://' . $this->name . '/blueprints');
}
- What’s the difference in these approaches?
- Which one seems to be the more appropriate for the job?