Nes permite incorporar o modificar funcionalidades mediante Plugin. Por ejemplo los formularios seguros y el captcha están implementados mediante Plugins.
Se ha reservado un Tag (&) para el caso en que el Plugin tenga que definir uno:
{: & tag (param...) :}Como ejemplo en el Plugin Captcha el tag es:
{: & captcha (param...) :}Y en el Plugin Forms el tag es:
{: & form (param...) :}
Los Plugin se cargan en el Tag NES antes o después de tu script Perl según los requerimientos del Plugin:
{: NES 1.0 ('{: * cfg_plugin_top_dir :}/plugin.pl','my_file.pl') :}El orden de carga es muy importante, supongamos un hipotético Plugin Cache que lee las páginas Web del cache para aliviar de carga al servidor, perdería toda su gracia si se cargase al final, después de haber hecho todo el trabajo. O otro hipotético Plugin Filter que filtra direcciones email o spam de nuestras páginas, obviamente debería cargarse al final, cuando todo el contenido está preparado para la salida:
{: NES 1.0 ( '{: * cfg_plugin_top_dir :}/cache.pl', 'my_file.pl', '{: * cfg_plugin_top_dir :}/filter.pl' ) :} (*Hemos partido aquí esta linea por razones de legibilidad, pero es un error ya que NES es el único Tags que no permite partir lineas)
También se pueden cargar automáticamente en el archivo de configuración para todos los archivos nhtml del directorio actual:
.nes.cfg # Cargar Plugins al inicio, sólo para el nhtml de la URL auto_load_plugin_top_first = {: * cfg_plugin_top_dir :}/cache.pl,./my_script.pl # Cargar Plugins al inicio, para todos los archivos incluidos auto_load_plugin_all_first = {: * cfg_plugin_top_dir :}/plugin.pl, ... # Cargar Plugins al final, sólo para el nhtml de la URL auto_load_plugin_top_last = {: * cfg_plugin_top_dir :}/filter.pl, ... # Cargar Plugins al final, para todos los archivos incluidos auto_load_plugin_all_last = {: * cfg_plugin_top_dir :}/plugin.pl, ...
El API para la creación de Plugin está en desarrollo.