Esta web utiliza cookies propias y de terceros para su funcionamiento. ¿Aceptas? Leer más
Desarrollo sobre FacturaScripts 2018

El sistema de prioridades de plugins

Lo primero que debe tener claro es el sistema de prioridades por el que se rige FacturaScripts. El último plugin activo tiene prioridad sobre el anterior, y así sucesivamente. Cuando se consulta una página, se carga un modelo, una vista HTML, XML o un archivo javascript, se utiliza el archivo del plugin con mayor prioridad que tenga ese archivo.

Gracias a este sistema podemos modificar el comportamiento de cualquier página. Simplemente copiamos (o extendemos si se trata de una clase PHP o vista de Twig) el archivo necesario a nuestro plugin, hacemos ahí los cambios, y al activar el plugin, como ha sido el último en activar, tiene preferencia sobre el resto y se utiliza el archivo que hemos modificado, pero solamente ese, quedando intacto el resto.

¿Quiere modificar el comportamiento de ListCliente.php?

Cree el archivo ListCliente.php en la carpeta Controller de su plugin. Herede de la clase original y modifique el archivo de su plugin a su gusto. Active su plugin y verá como se usa su archivo en lugar del original.

<?php
namespace FacturaScripts\Plugins\MyNewPlugin\Controller;

use FacturaScripts\Core\Controller\ListCliente as ParentController;

class ListCliente extends ParentController
{
}

¿Quiere modificar el SendMail.html.twig?

Copie el archivo SendMail.html.twig a la carpeta View de su plugin, modifique el archivo a su gusto. Active su plugin y verá como se usa su archivo en lugar del original.

Herencia

Tanto en los modelos, controladores, como en las vistas Twig puede heredar de los originales. Así no perderá ninguna de las mejoras que estos sufran.

Herencia en twig

En el caso concreto de una vista de Twig, es posible extender a una plantilla concreta externa a nuestro plugin, como podría ser de Core con @Core o de un plugin concreto @Plugin{NombrePlugin}, precediendolo a la ruta de la vista. De este modo se simplifica aplicar cambios concretos, sin tener que re-escribir el archivo entero, y sin perder cambios de la plantilla padre.