Spip: 10 casi di utilizzo avanzato
In questo post parliamo di Spip, un CMS opensource che utilizziamo spesso per i nostri progetti. Nello specifico vedremo alcuni tip and tricks; casi particolari di utilizzo avanzato del codice.
Per qualsiasi informazione sul CMS e la guida base di Spip rimandiamo al sito ufficiale: www.spip.net
1. Passare variabili agli include
Con spip, per includere un file nella nostra squelette si utilizza questa sintassi
<INCLURE{fond=include/sottoMenu}>
per utilizzare nel file sottoMenu i valori della squelette, ad esempio ci servisse l’id della rubrica per estrarre solo gli articoli di quella rubrica (il caso tipico di un sottomenu), dovremmo passare il parametro id_rubrique nello script di inclusione
<INCLURE{fond=include/sottoMenu}{id_rubrique}>
2. I segnaposti di Spip nel codice php
il codice di Spip può interagire senza problemi con il php. Un semplice esempio pratico può essere utilizzare i segnaposti di spip per creare una condizione in php
<?php if(#TITRE ==titolo2 || #TITRE == titolo2){
echo("titolo 1 o titolo 2");
} ?>3. Passare un’ancora da url
Può essere necessario passare dei parametri o un’ancora tramite url ad una squelette personalizzata. Il link sarà simile a questo:
#URL_PAGE{miaPagina, lang=it#ancora}
Nel nostro esempio passiamo il parametro della lingua e un’ancora ad un articolo specifico. Per passare l’ancora di un articolo generato dinamicamente possiamo scrivere:
#URL_PAGE{miaPagina, lang=#LANG##ID_ARTICLE}
Considerando che il link sia dentro un ciclo dal quale estrarre ID_ARTICLE (notare il doppio # davanti a ID_ARTICLE).
4. Recuperare un parametro
Per recuperare un valore passato nell’url basta semplicemente passare una parametro personalizzato, in questo caso "mia_variabile"
miosito.it/spip.php?page=miapagina&mia_variabile=valore
e recuperarla nella squelettes tramite il segnaposto che dovrà avere lo stesso nome del parametro.
#MIA_VARIABILE
5. Il codice di Spip in uno script javascript!
il codice di Spip si integra perfettamente anche con javascript. Può essere utile ad esempio per richiamare un div che ha il nome dell’id generato dinamicamente, nel nostro caso utilizzando come suffisso del nome l’anno di pubblicazione di un articolo (per esempio possiamo creare delle tab divise per anno).
<script type="text/javascript">
$(document).ready(function() {
$('div#div_menu_[(#DATE|annee)]').show();
});
</script>6. Utilizzare un segnaposto di un ciclo contenitore
Per recuperare un elemento di un ciclo esterno a quello in cui ci troviamo possiamo utilizzare questa sintassi: [(#_nomeCicloEsterno:TITRE)]
<BOUCLE_uno(RUBRIQUES)>
<BOUCLE_due(ARTICLES)>
[(#_uno:TITRE)] > #TITRE
</BOUCLE_due>
</BOUCLE_uno>nel nostro esempio stampiamo il titolo della rubrica. In questo caso il titolo della rubrica verrà ciclato tante volte quante sono il numero degli articoli.
7. Filtrare gli allegati per tipo
Potrebbe essere utile in alcuni casi inserire un thickbox nel caso gli allegati di un articolo fossero immagini, ma allo stesso tempo poter dare la possibilità di scaricare altri tipi di allegato, per esempio il pdf. Può esserci di aiuto filtrare gli allegati per tipo di file.
[(#TYPE_DOCUMENT|=={PDF}|?{' ',''})<a href="#URL_DOCUMENT">[(#LOGO_DOCUMENT)] [(#FICHIER)]</a>]
[(#TYPE_DOCUMENT|=={PDF}|?{'',' '})<a href="#URL_DOCUMENT" class="thickbox">[(#LOGO_DOCUMENT)]</a>]Nel nostro esempio se i file allegati sono PDF mostriamo l’icona e il nome del file, se non sono PDF diamo al link la classe "thickbox" e non mostriamo il nome del file.
8. Raggruppare in liste secondo un criterio
Creare delle liste chiare e con un codice pulito è molto importante. Si può presentare la possibilità di dover ordinare delle lunghe liste secondo un criterio. Nel nostro esempio abbiamo una lista di allegati che vengono ordinati secondo la "descrizione" (#DESCRIPTIF). Nella descrizione abbaino scritto il tipo di file (ad esempio zip, pdf…). quello che vogliamo ottenere è una lista di questo tipo:
PDF
file uno
file due
…
ZIP
file uno
file due
…
il codice è questo:
<ul>
<BOUCLE_allegatiTipo(DOCUMENTS){id_article}{par descriptif}>
[<li class="tipoDoc">(#DESCRIPTIF|unique)</li>]
<li>
<BOUCLE_allegato(DOCUMENTS){id_document}>
<a href="#URL_DOCUMENT" title="#TITRE">#LOGO_DOCUMENT</a>
</BOUCLE_allegato>
</li>
</BOUCLE_allegatiTipo>
</ul>da notare il filtro "unique" nel segnaposto #DESCRIPTIF, che stampa la descrizione una sola volta, e le parentesi quadre prima e dopo il tag LI, che ci permette di non stampare il codice quando il #DESCRIPTIF è vuoto, quindi SEMPRE tranne la prima volta.
9. Maschera sulle immagini
Una semplice funzionalità per rendere accattivanti le vostre immagini è il filtro maschera sulle immagini. Spip permette di utilizzare una maschera sulle vostre immagini.
[(#FICHIER|image_masque{squelettes/images/mask.png})]
Alcune cose utili da sapere:
. l’immagine "maschera" deve essere una png24 (quindi con il canale alpha)
. se l’immagine è più grande della maschera si ridimensiona automaticamente con le dimensioni di quest’ultima
. la maschera modifica anche la luminosità dei colori: per utilizzare solo la proprietà di "taglio" della maschera basta creare la png24 con i grigi al 50%
10. Estrarre dati da una tabella aggiuntiva
In alcuni casi si può presentare la necessità di inserire una tabella nel database esterna a quelle di spip. Recuperare i dati è molto semplice:
<BOUCLE_1(fotografie)>
<ul>
<li>#NOME</li>
<li>#FORMATO</li>
</ul>
</BOUCLE_1>Nell’esempio il ciclo estrae i campi della tabella "fotografie" e i segnaposti stampano i campi della tabella stessa.
