themosis / plugin

Themosis framework plugin boilerplate.
54 stars 19 forks source link

Load templates from plugin #13

Closed MorganAkki closed 6 years ago

MorganAkki commented 6 years ago

Hello,

I would like to know how can I use templates from a custom plugin. I have a templates.config.php with the right prefix in resources/config but I don't know how to load it. In the documentation we can find this line, but where can I use it ? $templates = Config::get('com_domain_shop_templates');

Thank you !

jlambe commented 6 years ago

Normally the plugin boilerplate is setup to load your plugin configuration files. The issue here is that you can't call your file templates.config.php as it is going to conflict with the one set into the theme.

When setting up the plugin, a "namespace" must be defined to avoid file conflicts (not talking about a PHP namespace here). For example: com_example_shop is a valid namespace string. So based on that, your configuration file name should be: com_example_shop_templates.config.php and you can then retrieve the information like so:

$templates = Config::get('com_example_shop_templates');
MorganAkki commented 6 years ago

Sorry my message wasn't very clear. I already named my file with the namespace of my plugin but it doesn't seems to be loaded. This is the content of my templates.config file :

return [ 'search-template' => ['Search template', ['page']], ];

Do I have to add the "Config::get" line in the functions.php of the theme directory ?

jlambe commented 6 years ago

Hmm as explained, the boilerplate is configured to bootstrap your configuration file. See code line here: https://github.com/themosis/plugin/blob/ae38b46f6b7b766ef4efff6c67a9eda417ba3053/plugin-name.php#L82

Perhaps verify your path or did you correctly setup these lines (namespace): https://github.com/themosis/plugin/blob/ae38b46f6b7b766ef4efff6c67a9eda417ba3053/plugin-name.php#L45

MorganAkki commented 6 years ago

Sorry for english people but it will be easier for me to answer in french...

En fait, tous mes autres fichiers de config sont bien pris en compte. Il n'y a vraiment que le templates.config qui n'est pas chargé d'après moi. Mon plugin se nomme akki-elasticsearch, j'ai bien mon tableau :

$vars = [
    'slug' => 'akki-elasticsearch',
    'name' => 'Akki Elasticsearch',
    'namespace' => 'com.akki.elasticsearch',
    'config' => 'com_akki_elasticsearch',
];

Dans mon répertoire "resources->config" j'ai les fichiers suivants :

En suivant juste la doc je n'ai pas réussi à faire en sorte que mon template soit visible en back-office. J'ai réussi à l'activer en ajoutant les lignes suivantes dans le .php à la racine de mon plugin :

$theme = container();
$templates_config = Config::get('com_akki_elasticsearch_templates');
$templates = new Themosis\Config\Template($templates_config, $theme['filter']);
$templates->make();

Est-ce le comportement normal ? Car effectivement je pensais que mon fichier config concernant les templates serait pris en compte automatiquement.

jlambe commented 6 years ago

Non effectivement, créer un fichier de configuration ..._templates.config.php ne génère pas automatiquement le chargement de ces templates .

Le code ajouté dernièrement dans ton exemple est correct et il doit bien être ajouté dans le fichier racine de ton extension.

MorganAkki commented 6 years ago

Je te remercie et désolé pour le manque de clarté dans ma question initiale.