Wrapper

Wrapper Vs Include

Podemos incluir con include casi cualquier tipo de archivo en nuestras plantillas, otra cosa distinta es hacer esto:

http://example.com/file.html
ó
http://example.com/file.php

Y que el archivo sea tratado como una plantilla NHTML además de como HTML o PHP. A eso no referimos cuando decimos "usar Nes como Wrapper".



Tanto con include como con Wrapper cuando el archivo lleva al inicio el Tag {: NES 1.0 ('file.pl') :} es tratado como una plantilla nhtml, esto es, puede contener Tags Nes aunque sea un HTML o PHP, si no incluye este Tag el archivo no será tratado como plantilla y aunque incluya Tags estos no serán sustituidos. Para forzar la sustitución aunque no tengamos script Perl podemos incluir "none" {: NES 1.0 none :}

Para usar include no es necesaria ninguna configuración Apache, para Wrapper sí.

HTML Wrapper

Podemos usar Nes para cargar otros tipos de archivos y añadirles la funcionalidad de Nes. En el caso de los HTML debemos añadir la extensión html al tipo perl-nes en nuestro archivo .htaccess:

# Plantillas Nes nhtml
AddHandler perl-nes .nhtml
AddHandler perl-nes .nhtm

# HTML wrapper
AddHandler perl-nes .htm
AddHandler perl-nes .html

# Acción para el tipo perl-nes de Nes
Action perl-nes /cgi-bin/nes/dispatch.cgi

A partir de este momento los archivos HTML funcionaran igual que los NHTML. Si contiene el Tag {: NES 1.0 ('file.pl') :} será tratado como plantilla Nes, de lo contrario como cualquier HTML más.



PHP Wrapper

La siguiente configuración .haccess es necesaria para usar Nes como PHP Wrapper:

# Plantillas Nes nhtml
AddHandler perl-nes .nhtml
AddHandler perl-nes .nhtm

# PHP Wrapper
AddHandler perl-nes .php

# Acción para el tipo perl-nes de Nes
Action perl-nes /cgi-bin/nes/dispatch.cgi

A partir de este momento los archivos PHP funcionaran igual que los NHTML. Si contiene el Tag {: NES 1.0 ('file.pl') :} será tratado como plantilla Nes, de lo contrario como cualquier PHP más. Pero existe una particularidad con el Tag NES en PHP Wrapper, ha de incluirse así:

<?php /*{: NES 1.0 ('file.pl') :}*/ ?>
<?php
    ...
    
Esto es debido a que lo primero que se ejecuta es el script PHP y PHP dará un error si encuentra una linea como esta: {: NES 1.0 ('file.pl') :} dentro del código PHP.

Por el mismo motivo no es posible inclir Tag Nes dentro del código PHP cuando utilizamos Nes como Wrapper:

<?php
    define('PHPVAR',{: $ var :}); <- ERROR
    ...
?> 
   
Esto es, sólo podemos poner Tag Nes en el HTML y no en el código PHP. No ocurre lo mismo cuando incluimos PHP con include que podemos incluir Tags Nes en cualquier parte y el Tag NES como en el resto de las plantillas nhtml.



.nes.cfg

Existen dos programas distintos para lanzar script PHP: php-cli y php-cgi, el primero para la linea de comandos y el segundo para CGI. Para include necesitamos php-cli y para PHP Wrapper php-cgi, si tu instalación no dispone de alguno de los dos deberás instalarlos e incluir su ruta en el archivo .nes.cfg que por defecto tiene estos valores:

# linea de comando para PHP CLI:
php_cline     = /usr/bin/php

# linea de comando para PHP CGI  
php_cgi_cline = /usr/bin/php-cgi