Resumen
El sistema de plugins del CMS grav cuenta con una serie de funcionalidades, entre ellos los hooks y la priorización de inicio de estos dentro del sistema. Este sistema funciona como una cadena para iniciar las funcionalidades de grav una por una y en el orden que se le determina, de esta manera determinar que funciones son más importantes o por la tarea a realizar deben estar antes o después de otra.
Detalle
Antes de entrar en materia de la priorización de plugins en Grav, hay varios conceptos a tener en cuenta:
El CMS de grav cuenta con un sistema de plugins similar a la mayoría de CMS, en el cual se puede ampliar las funcionalidades originales del CMS.
Cada plugin puede contener un sistema de hooks, con los cuales puedes llamar funciones entre plugins y compartir funcionalidades. Estos hooks son llamados por medio de eventos, estos eventos determinan en que momento se debe realizar una acción.
La lista de estos eventos la puedes encontrar aquí, por orden de ejecución:
Event Hooks | Grav Documentation (getgrav.org)
Si revisamos el archivo php principal de un plugin de grav, podrémos encontrar una estructura similar a esta:
‘onPluginsInitialized’ => [‘onPluginsInitialized’, 0],
Esta estructura inicializa las funciones con un evento, siendo:
evento => [función, prioridad].
Entre más alto el número de prioridad, antes se iniciará la función.
¿Para qué funciona el número de prioridad?
Si existen dos funciones con el mismo evento (por ejemplo: ‘onPluginsInitialize’), pero se necesita que una de las dos inicie antes de la otra, porque por ejemplo: una depende de la otra, se debe utilizar el número de prioridad.
¿Cómo se puede cambiar la prioridad de un plugin existente sin cambiar el plugin desde su raíz?
Para hacer esto, se debe crear un nuevo archivo, en la dirección:
user/config/priorities.yaml
En el cual podemos crear una priorización personalizada para las funciones, utilizando el siguiente formato:
pluginName: eventName: handlerName: [integer]
En el cual pluginName sería el nombre del plugin a personalizar, eventName el nombre del evento que inicia la función y el handlerName, el nombre de la función, algo como lo siguiente:
vitalPlugin: onPluginInitialized: FuncionPrioritaria: 100
Como vemos el número 100 significa que tendrá una prioridad muy alta y empezará antes de prácticamente cualquier otra función.
De esta manera afectará únicamente a esa función.
Eso sería todo, muchas gracias por leer.