[SPIP] PUBLICADO : (incluir) otros esqueletos

SPIP

Artículo aprobado

El artículo " (incluir) otros esqueletos
(<INCLURE> (incluir) otros esqueletos - SPIP)" ha sido publicado por jack.


(incluir) otros esqueletos

Lunes 28 de agosto de 2023 , por dani ,
David Sánchez Crespillo

Índice

  • Sintaxis de inclusión
  • Inclusiones dependientes del contexto
  • Transmitir todo el contexto actual
  • En un contexto multilingüe
  • <INCLURE> y {doublons}
  • <INCLURE> y ajax
  • #INCLURE un archivo que no es un esqueleto
  • Véase también

Cuando hay elementos de texto y bucles comunes a varios esqueletos, es
lógico querer «factorizar» dichos elementos, es decir extraerlos de las
páginas donde se encuentran, agruparlos en un archivo separado y llamarlos
desde los otros esqueletos. De esta manera se agrupa el código común en
un archivo único, lo que facilita notablemente las modificaciones que
afectan a varios esqueletos de una sola vez.

Normalmente, este tipo de elementos se instalan en archivos independientes
llamados a partir de numerosos esqueletos:
— declaraciones de encabezado de página HTML (llamadas javascript, hojas
de estilo, etc.),
— elementos de navegación comunes a la mayoría de las páginas (parte
superior de la página, columna izquierda, etc.), banner superior
(logotipo, enlaces a los créditos del sitio, página de contacto, etc.),

— un pie de página, etc.

Sintaxis de inclusión|Volver al índice

Quienes están acostumbrados a PHP (u otros lenguajes informáticos)
conocen la función include, cuyo principio es similar al que se presenta
aquí para SPIP.

Con SPIP, se puede llamar a un esqueleto desde otro con la baliza
<INCLURE> (también se puede utilizar <INCLUDE>, que es
idéntica). Su sintaxis completa es:

<INCLURE{fond=squelette, param}>
<INCLURE{fond=squelette, param1,param2}>
<INCLURE{fond=squelette, param1,param2}{param3=#LISTE{valA,valB}}>

El «esqueleto» es el nombre del archivo que se quiere integrar en la
página.

Por ejemplo, imaginemos que todas las páginas del sitio muestran la misma
información abajo de la página. Se agrupa entonces el código HTML y SPIP
de este «pie de página» en un archivo «pie.html» (siempre siguiendo
el principio de parejas de archivos destinados a construir esqueletos SPIP
(SPIP)). Basta integrar
en cada uno de los esqueletos que llevan ese «pie de página» el
siguiente código en el lugar deseado:

<INCLURE{fond=pie}>

Inclusiones dependientes del contexto[|Volver al

índice](#s-Inclusiones-dependientes-del-contexto)

Ciertas inclusiones pueden depender del contexto. Por ejemplo, imaginemos
un esqueleto «jerarquia», que muestre el camino que lleva desde la
raíz hasta una sección; se llamaría a esta página por un URL de la
forma:
«spip.php?page=jerarquia&id_rubrique=xxx».

En los esqueletos donde se quiera mostrar el camino desde la raíz a cierta
sección (por ejemplo la sección actual de un artículo), hay que indicar
que el parámetro correspondiente es {id_rubrique}. Si fuera necesario,
creamos un bucle en el que se genera contextualmente el número apropiado
de sección, y se incorpora el siguiente código dentro de este bucle:

<INCLURE{fond=jerarquia, id_rubrique}>

Nota: en este caso, el esqueleto jerarquia.html tendrá que comenzar
con un bucle secciones con el criterio {id_rubrique}

Se puede imaginar que, en ciertos esqueletos, se desee recuperar ya no el
camino hasta cierta sección «variable» (según el contexto, por ejemplo
un parámetro pasado en la URL), sino en función de una sección cuyo
número (identificador) se sabe de antemano. Para ésto se puede fijar el
valor del parámetro así:

<INCLURE(fond=jerarquia){id_rubrique=5}>

Nota. Es posible indicar varios parámetros en la baliza <INCLURE>; sin
embargo, tal caso es poco frecuente. En todo caso, dichas variables se
acumulan por un «Y lógico» al igual que cuando se los adjunta en la
definición de los bucles. Evita añadir parámetros inútiles, que harán
la caché menos eficaz y tu sitio más lento.

Nota. El archivo incluido es, a su vez, un esqueleto y, por lo tanto,
dicho esqueleto tendrá su propio valor #CACHE [1]

Transmitir todo el contexto actual[|Volver al

índice](#s-Transmitir-todo-el-contexto-actual)

El parámetro env se utiliza para transmitir el contexto de compilación
del esqueleto actual al incluido.

<INCLURE{fond=esqueleto, env}>

En un contexto multilingüe[|Volver al

índice](#s-En-un-contexto-multilingue)

Si está activado el multilingüismo de SPIP
(SPIP), se puede
definir un idioma de entorno para un esqueleto incluido, utilizando el
parámetro {lang}.

Si no se utiliza ningún parámetro, es decir bajo la forma
<INCLURE{fond=pie}>, se llamará al esqueleto incluido con el idioma
principal del sitio,

<INCLURE(fond=pie){lang=ar}> utilizará el árabe al llamar al
esqueleto incluido. Por supuesto, basta con reemplazar «ar» por el
código ISO del idioma deseado: en para el inglés, fr para el
francés, vi para el vietnamita, etc. (ver Internacionalizar los
esqueletos (SPIP)),

y <INCLURE(fond=pie){lang}> llama al esqueleto en el idioma
actual del contexto de inclusión.

Cabe notar que esto hace posible utilizar códigos de archivos de idiomas
en los esqueletos incluidos (para mayores explicaciones sbre los archivos
de idiomas, ver Internacionalizar los esqueletos
(SPIP)).

Adicionalmente, los esqueletos incluidos están sujetos a las mismas
técnicas de selección de idioma que los esqueletos de «primer nivel».
En otras palabras, los esqueletos incluidos (en este caso pie.html)
pueden ser especificados de acuerdo al idioma escogido (pie.ar.html, por
ejemplo) de la misma manera que cualquier otro esqueleto. Una vez más, ver
«Internacionalizar los esqueletos
(SPIP)» para más
detalles.

<INCLURE> y {doublons}|Volver al índice

Existe un criterio de bucle {doublons}
(SPIP). Sin
embargo, si se utiliza un <INCLURE> en un esqueleto, los duplicados
almacenados no se pasan al esqueleto incluido.

Es posible solucionar este problema. Basta con añadir el parámetro
{doublons}> a la llamada al esqueleto que se desea incluir. Por ejemplo,
<INCLURE{fond=mi pagina, doublons}>.

Tenga en cuenta, sin embargo, que los duplicados seleccionados en el
esqueleto incluido no se « mueven hacia arriba » en el esqueleto incluido.

<INCLURE> y ajax|Volver al índice

Es fácil utilizar la tecnología ajax, que permite hacer clic en un enlace
y actualizar la página sólo en el área que cambiaría si se volviera a
mostrar toda la página con los nuevos parámetros. Para más detalles,
véase el artículo *ajax*\ pour les `inclure`
(SPIP).

#INCLURE un archivo que no es un esqueleto[|Volver al

índice](#s-un-archivo-que-no-es-un-esqueleto)

La etiqueta #INCLURE también puede utilizarse para incluir un archivo que
no sea un esqueleto: para ello, basta con indicar directamente el archivo
incluido como primer argumento, omitiendo el « fond= » que se utiliza para
incluir esqueletos. El fichero se lee y su contenido se visualiza en el
contexto de llamada sin ser interpretado por SPIP.

Ejemplos de utilización en diferentes ficheros SPIP o plugins :
en sedna.js.html : [(#INCLURE{javascript/sedna.js}|...]
en adminer.html : [<style type="text/css">(#INCLURE{adminer.css}|compacte{css})</style>]
en portfolio_document.html :
[(#INCLURE{javascript/medias_edit.js}|compacte{js})]
en gis.js.html : [(#INCLURE{lib/leaflet/dist/leaflet-src.js})]

La mayoría de estos usos implican archivos javascript o CSS, pero es
posible incluir otros tipos de archivos:
en favicon.ico.html :
[(#INCLURE{favicon.ico}|sinon{#INCLURE{spip.ico}})]

Véase también|Volver al índice

  • *ajax*\ pour les `inclure`
    (SPIP)
  • Les aides au débuggage de squelettes
    (SPIP) et plus
    particulièrement l’appel de « var_mode=inclure »

En Programmer.spip.net

[1] Recuerde que la variable #CACHE define la frecuencia con la que se
actualiza la caché.Puede resultar práctico para separar la actualización
de elementos complejos y pesados del sitio, que no cambian; y la de
elementos dinámicos que necesitan una actualización frecuente (por
ejemplo, la sindicación).

— Enviado por SPIP (https://www.spip.net/)