Skip to content
● Grav 2.2 is out: 2x faster cold starts and 96% less memory on big sites. Read the announcement →

What's the right way to enable a plugin's blueprint?

Started by Julien 6 years ago · 0 replies · 585 views
6 years ago

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():

PHP
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:

PHP
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?

Suggested topics

Topic Participants Replies Views Activity
General · by Andy Miller, 7 days ago
0 117 7 days ago
General · by lynbor, 1 month ago
3 445 2 weeks ago
General · by lynbor, 3 weeks ago
7 564 2 weeks ago
General · by Harry, 2 weeks ago
0 164 2 weeks ago
General · by Old Man Umby, 1 month ago
2 310 4 weeks ago