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

Community guidelines

Please keep discussions civil and on-topic. Repeated violations may lead to a temporary ban.

General

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

Started by Julien 6 years ago · 0 replies · 400 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 Jerry Hunt, 4 days ago
2 95 14 hours ago
General · by pamtbaau, 20 hours ago
1 61 19 hours ago
General · by Andy Miller, 1 day ago
0 47 1 day ago
General · by Marcel, 12 months ago
6 356 5 days ago
General · by Duc , 6 days ago
3 44 6 days ago