Skip to content
Grav 2.0 is officially stable. Read the announcement →
General

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

Started by Julien 6 years ago · 0 replies · 510 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 jean-louis67, 3 weeks ago
2 306 3 weeks ago
General · by Andy Miller, 3 weeks ago
0 310 3 weeks ago
General · by Veehem, 3 weeks ago
0 263 3 weeks ago
General · by milkboy, 4 weeks ago
0 264 4 weeks ago
General · by ian russell, 1 month ago
2 335 1 month ago