La sintassi dei segnaposti di SPIP

Ogni tipo di ciclo permette di selezionare elementi del database di SPIP: articoli, rubriche, brevi, eccetera. Ognuno di questi elementi è costituito a sua volta da elementi precisi: un titolo, una data, un testo, ecc. All’interno di un ciclo bisogna quindi poter indicare in quale posto del codice HTML si mette questo o quell’elemento specifico.

A tal fine utilizzeremo i segnaposti di SPIP.

Funzionamento semplificato

Un segnaposto di SPIP si inserisce all’interno di un ciclo (poiché è necessario sapere se si vuole recuperare un elemento di un articolo, di una rubrica, ecc.). Di solito, il nome di questi segnaposti è semplice, e noi daremo l’elenco completo dei segnaposti che si possono utilizzare per ogni tipo di ciclo.

Un segnaposto è sempre preceduto dal segno cancelletto (#).

Per esempio, visualizziamo un elenco di nomi di articoli:

<BOUCLE_articoli(ARTICLES){id_rubrique}>
#TITRE<br />
</BOUCLE_articolo>

Quando il ciclo viene eseguito, il segnaposto di SPIP #TITRE verrà sostituito ogni volta dal titolo dell’articolo in questione:

Titolo dell’articolo 1<br />
Titolo dell’articolo 2<br />
...
Titolo dell'ultimo articolo<br />

Nulla di complicato, quindi. Ci si accontenta di indicare all’interno del codice HTML il nome dell’elemento desiderato, e questo viene sostituito dal contenuto estratto dal database.

Codici opzionali

Nella pratica, un elemento del contenuto è spesso accompagnato dal codice HTML che deve essere mostrato solo se quell’elemento esiste, senza il quale l’impaginazione diventa imprecisa.

Per esempio: esiste un segnaposto di SPIP per indicare l’occhiello di un articolo. Ora, molti articoli non hanno nessun occhiello.

Completiamo l’esempio precedente:

<BOUCLE_articoli(ARTICLES){id_rubrique}>
#SURTITRE<br />
#TITRE<br />
</BOUCLE_articoli>

che, di solito, ci dà un elenco di articoli, con l’indicazione del titolo e dell’occhiello di ogni articolo. Ma cosa succede se l’articolo non ha l’occhiello? Si ottiene il codice: «<br />», ovvero una riga bianca (un ritorno a capo).

Quel che noi dobbiamo fare è di non mostrare il codice «<br />» se non è presente l’occhiello per quell’articolo.

Pertanto, la sintassi del segnaposto di SPIP diventa:

[ testo opzionale prima (#SEGNAPOSTO) testo opzionale dopo ]

Il segnaposto che determina l’opzione viene incluso tra parentesi, e l’insieme del testo condizionale è tra parentesi quadre. Il testo opzionale prima e il testo opzionale dopo vengono mostrati solo se nel database è presente un elemento corrispondente a questo segnaposto.

Il nostro esempio diventa:

<BOUCLE_articoli(ARTICLES){id_rubrique}>
[(#SURTITRE)<br />]
#TITRE<br />
</BOUCLE_articoli>

Si ottiene quindi il risultato cercato: se è presente un occhiello per questo articolo esso viene mostrato e seguito da <br />; se invece l’occhiello non esiste viene nascosto anche <br />.

Utilizzi avanzati

A partire dalla versione [SPIP 1.8] è possibile nidificare i segnaposti estesi gli uni negli altri. Quindi, se nel nostro esempio si desidera visualizzare il logo dell’articolo solo se l’occhiello contiene del testo, potremmo scrivere:

<BOUCLE_articoli(ARTICLES){id_rubrique}>
[[(#LOGO_ARTICLE)<br />](#SURTITRE)<br />]
</BOUCLE_articoli>
Nota: non è mai possibile mettere un ciclo nel codice opzionale di un segnaposto. Tuttavia, se si vuole visualizzare un ciclo in base a un determinato segnaposto, è possibile utilizzare <INCLUDE{...}> all’interno di un codice opzionale.

Segnaposti non ambigui

Quando si nidificano cicli potrebbe succedere che due cicli abbiano segnaposti omonimi.

Per esempio, nel codice seguente:

<BOUCLE_rubriche(RUBRIQUES){id_rubrique}>
     <BOUCLE_articoli(ARTICLES){id_rubrique}>
         #TITRE
     </BOUCLE_articoli>
</BOUCLE_rubriche>

il segnaposto #TITRE indica il titolo di un articolo. Pertanto, se si desidera visualizzare il titolo della rubrica all’interno del ciclo _articoli, non sarebbe possibile utilizzare #TITRE.

Dalla versione [SPIP 1.8], è possibile chiamare un segnaposto omonimo di uno dei cicli nidificati esplicitando il nome del ciclo al quale il segnaposto appartiene. È quindi necessario specificare il nome del ciclo tra il carattere # e il nome del segnaposto.

Quindi, si scrive il segnaposto #SEGNAPOSTO del ciclo _nomeciclo [1] nella maniera seguente: #_nomeciclo:SEGNAPOSTO. Per esempio:

<BOUCLE_rubriche(RUBRIQUES){id_rubrique}>
     <BOUCLE_articoli(ARTICLES){id_rubrique}>
         #_rubriche:TITRE > #TITRE
     </BOUCLE_articoli>
</BOUCLE_rubriche>

visualizza il titolo della rubrica, un > e il titolo dell’articolo: il segnaposto #TITRE per il ciclo _rubriche diventa #_rubriche:TITRE per non essere confuso con il segnaposto #TITRE del ciclo _articoli.

Filtrare i risultati

Spesso si vorrà modificare un elemento estratto dal database, o per ottenere una visualizzazione diversa (per esempio, visualizzare il titoto tutto in maiuscolo), oppure per recuperare un valore attinente a questo elemento (per esempio, mostrare il giorno della settimana corrispondente a una tale data).

Con SPIP possiamo applicare dei filtri direttamente agli elementi recuperati dal database, indicandoli nella sintassi dei segnaposti di SPIP, che diventa quindi:

[ opzione prima (#SEGNAPOSTO|filtro1|filtro2|...|filtron) opzione dopo ]

La sintassi è cioè far seguire il nome del segnaposto, tra parentesi, dai filtri, separati da una barra verticale (solitamente chiamata pipe).

Alcuni filtri forniti da SPIP:

-  majuscules, cambia il testo in lettere maiuscole (più potente dell’analoga funzione PHP, che non funziona correttamente con i caratteri accentati); per esempio:

[(#TITRE|majuscules)]

-  justifier, visualizza il testo giustificato (cioè, <P align=justify>); per esempio:

[(#TEXTE|justifier)]

La presente documentazione dedica un articolo ai diversi filtri forniti con SPIP.

Aggirare il trattamento di testi di SPIP

SPIP applica delle regole tipografiche a tutti i testi estratti dal database. In particolare, esso inserisce degli spazi indivisibili prima di alcuni simboli (punto e virgola, punto interrogativo, ecc.), e analizza le scorciatoie tipografiche.

In alcuni casi si potrebbe aver bisogno di aggirare questa funzionalità allo scopo di recuperare direttamente il testo puro così com’è nel database. A tal fine, è sufficiente aggiungere un asterisco (*) dopo il segnaposto di SPIP. Quindi avremo:

[ opzione prima (#SEGNAPOSTO*|filtro1|filtro2|...|filtron) opzione dopo ]

I parametri dei segnaposti

Dalla versione [SPIP 1.8], alcuni segnaposti [2] accettano dei parametri. Pertanto si passa un elenco di parametri tra parentesi graffe « { » e « } » con virgole « , » per separare ogni paramatro. Per esempio: #ENV{lang,fr}.

Un parametro può essere una costante o un altro segnaposto. Solo i segnaposti in formato semplice possono essere passati come parametri (cioè, niente codice opzionale o filtri). È possibile mettere i parametri tra virgolette singole "'...'" se si desidera che essi non siano interpretati da SPIP.

Note

[1Precisazione: non dimenticare il carattere underscore "_" iniziale nel nome del ciclo nel caso che esso non cominci con un numero.

[2#ENV e #EXPOSER

Autore Fausto Barbarito Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands, òc lengadocian, русский, українська