Skip to content
Grav 2.1 is out: every page speaks Markdown. Read the announcement →

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

Started by Julien 6 years ago · 0 replies · 537 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 jeremycherfas, 1 week ago
4 179 2 days ago
General · by lynbor, 5 days ago
2 119 3 days ago
General · by Old Man Umby, 1 week ago
1 100 1 week ago
General · by Sebastian, 1 week ago
1 124 1 week ago
General · by Andy Miller, 3 weeks ago
0 246 3 weeks ago