Obiettivo
Immaginiamo che il sito contenga gli articoli con i seguenti titoli :
titolo | id |
---|---|
a | 10 |
b | 3 |
c | 4 |
m | 11 |
z | 6 |
e che si voglia pubblicare 5 articoli in ordine alfabetico con l’articolo corrente al centro. Per esempio, se l’articolo corrente è “c” :
- a
- b
- c
- m
- z
Con un ciclo ?
Si potrebbe fare un solo ciclo per pubblicare 5 articoli consecutivamente, ordinati per titolo :
<B_articolo>
<ul>
<BOUCLE_articolo(ARTICLES){par titre} {0,5}>
<li>#TITRE</li>
</BOUCLE_articolo>
</ul>
</B_articolo>
Il problema è che non c’è modo per dire a SPIP che l’articolo corrente deve essere al centro di questa lista. Inoltre, non è possibile manipolare gli ID per fare questo tipo di selezione, poiché non c’è nessuna garanzia che gli articoli siano stati creati in ordine alfabetico.
Gli articoli prima e dopo
Si può infatti selezionare tutti gli articoli prima e dopo l’articolo corrente con la combinazione di cicli seguente :
<B_articolo_corrente>
<ul>
<BOUCLE_articolo_corrente(ARTICLES){id_article}>
<BOUCLE_prima(ARTICLES){titre <= #_articolo_corrente:TITRE}{exclus}{id_rubrique}{par titre}{inverse}>
<li>#TITRE</li>
</BOUCLE_prima>
<li><em>#TITRE</em></li>
<BOUCLE_dopo(ARTICLES){par titre}{titre>#_articolo_corrente:TITRE}{id_rubrique}>
<li>#TITRE</li>
</BOUCLE_dopo>
</BOUCLE_articolo_corrente>
</ul>
</B_articolo_corrente>
Il problema è che se si limita il primo ciclo a selezionare 2 articoli con il criterio {0,2}
, SPIP li ordina per titolo dalla Z alla A, oltre a selezionarne solo 2. Si avranno quindi i due articoli che ci interessano, ma ordinati al contrario. Riprendendo l’esempio precedente :
- b
- a
- c
- m
- z
Giocare con il criterio doublons
Ciò che resta da fare è di giocare con il criterio doublons per fare la cosa seguente :
- selezionare i 2 articoli prima : BOUCLE_seleziona_prima,
- escludere tutti gli altri articoli : BOUCLE_escludi,
- pubblicare gli articoli prima selezionati nel giusto ordine : BOUCLE_pubblica_prima.
<B_articolo_corrente>
<ul>
<BOUCLE_articolo_corrente(ARTICLES){id_article}>
<BOUCLE_seleziona_prima(ARTICLES){doublons
prima}{0,2}{titre <= #_articolo_corrente:TITRE} {exclus} {id_rubrique}{par titre}{inverse}>
</BOUCLE_seleziona_prima>
<BOUCLE_escludi(ARTICLES){doublons
prima} {doublons escludi}>
</BOUCLE_escludi>
<BOUCLE_pubblica_prima(ARTICLES){doublons escludi}{par titre}>
<li>#TITRE</li>
</BOUCLE_pubblica_prima>
<li><em>#TITRE</em></li>
<BOUCLE_dopo(ARTICLES){par titre}{titre>#_articolo_corrente:TITRE}{0,2}{id_rubrique}>
<li>#TITRE</li>
</BOUCLE_dopo>
</BOUCLE_articolo_corrente>
</ul>
</B_articolo_corrente>
Avvertenze :
- utilizzando i criteri
{titre <= #_articolo_corrente:TITRE} {exclus}
, ci si assicura che gli articoli aventi lo stesso titolo dell’articolo corrente saranno posizionati prima di esso,- questo ciclo è adatto solo se si vuole ordinare più di un articolo prima e dopo in ordine alfabetico. Se si vogliono fare delle cose più semplici, si veda “Article Précédent / Article Suivant”.
Discussions par date d’activité
Une discussion
Cette page est en italien
oui, et alors ?
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |