Mescolare e ordinare elementi eterogenei di SPIP

Ecco un ciclo per pubblicare e ordinare una lista di elementi eterogenei di spip (ad esempio rubriche e articoli)

Principio generale

Questo esempio mostra come pubblicare una una miscela di articoli e rubriche.

Il problema per visualizzare assieme rubriche e articoli è che è che non si può fare un ciclo che seleziona alllo stesso tempo stesso i due tipi di elementi.

È possibile creare un ciclo o di ARTICOLI o di RUBRICHE

Siamo quindi obbligati a utilizzare due cicli diversi, il che complica un po la pubblicazione dei due tipi di oggetti in una unica lista ordinata.

Qui è un ciclo che offre una soluzione per la visualizzazione in ordine di data :

Ecco un ciclo che offre una soluzione per la visualizzazione in ordine di data :

<BOUCLE_rubriques(RUBRIQUES) {par date} {inverse}>

<BOUCLE_articles(ARTICLES) {par date} {inverse} {doublons} {date>#DATE}>
Article: #DATE #TITRE<br>
</BOUCLE_articles>
Rubrique: #DATE #TITRE<br>

</BOUCLE_rubriques>

<BOUCLE_article_fin(ARTICLES) {par date} {inverse} {doublons}>
Article: #DATE #TITRE<br>
</BOUCLE_article_fin>

Il cui risultato sarà :

Rub: 2005-07-21 16:55:59 Blog
Art: 2005-07-21 16:39:54 And you, where are you?
Art: 2005-07-08 17:12:38 Resta politici brillanti (almeno 1)
Art: 2005-07-04 16:33:58 Déménagement
Rub: 2005-07-01 16:08:12 Computing
Rub: 2005-07-01 16:08:12 Out There
Art: 2005-07-01 16:08:12 Easy Personal Podcasting
Art: 2005-07-01 15:38:30 Ecole Polytechnique de ???

La soluzione è in realtà facile da capire :

  1. si comincia con un ciclo su tutte le rubriche (BOUCLE_rubriques)
  2. per ogni rubrica si controlla se ci sono articoli che devono essere pubblicati prima grazie al criterio {date>#DATE}
  3. poi si pubblica la rubrica
  4. dopo aver pubblicato tutte le rubriche si pubblicano gli articoli restanti. Quelli più vecchi di tutte le rubriche del sito

Il criterio {doublons} permette di non stampare gli articoli più di una volta.

Altri ordinamenti

Se si desidera cambiare il criterio di ordinamento bisogna modificare i criteri di conseguenza per i campi desiderati.

Per esempio se uno vuole ordinare attraverso i numeri nei titoli si può modificare il codice così :

  • {par date} {inverse} con {par num titre}
  • {date>#DATE} con {titre<#TITRE}

Sottigliezze con id_rubrique

Fate attenzione : questo ciclo selezionava tutti gli articoli e le rubriche del sito.
Se si desidera pubblicare solo gli articoli e le sottorubriche di una rubrica data è necessario modificare opportunamente il criterio id_rubrique nel ciclo degli articoli
_articles.

EImmaginiamo di essere dentro al seguente ciclo :

<BOUCLE_principale(RUBRIQUES) {id_rubrique}>

{id_rubrique} nel ciclo _articles, si selezioneranno solo gli articoli dellla rubrica del ciclo _rubriques e non quelli della rubrica del ciclo _principale
.

Dovremo dunque utilizzare questo criterio :
{id_rubrique = #_principale:ID_RUBRIQUE} che specifica che si devono prendere gli articoli della rubrica principale.

Si avrà dunque :

<BOUCLE_principale(RUBRIQUES) {id_rubrique}>

...

<BOUCLE_rubriques(RUBRIQUES) {id_parent} {par date} {inverse}>

<BOUCLE_articles(ARTICLES) {id_rubrique=#_principale:ID_RUBRIQUE} {par date} {inverse} {doublons} {date>#DATE}>
Article: #DATE #TITRE<br>
</BOUCLE_articles>
Rubrique: #DATE #TITRE<br>

</BOUCLE_rubriques>

<BOUCLE_article_fin(ARTICLES) {id_rubrique} {par date} {doublons}>
Article: #DATE #TITRE<br>
</BOUCLE_article_fin>

...

</BOUCLE_principale>

Altre miscele

Si possono mescolare tra loro allo stesso modo anche altri elementi di spip. Ad esempio articoli e brevi.

<BOUCLE_breves(BREVES) {par date} {inverse}>

<BOUCLE_articles(ARTICLES) {par date} {inverse} {doublons} {date>#DATE}>
Article: #DATE #TITRE<br>
</BOUCLE_articles>
Rubrique: #DATE #TITRE<br>

</BOUCLE_breves>

<BOUCLE_article_fin(ARTICLES) {par date} {inverse} {doublons}>
Article: #DATE #TITRE<br>
</BOUCLE_article_fin>

Ci si può spingere oltre e mescolare tre elementi differenti :

<BOUCLE_rubriques(RUBRIQUES) {par date} {inverse}>
<BOUCLE_articles(ARTICLES) {par date} {inverse} {doublons} {date>#DATE} {lang}>
<BOUCLE_breves(BREVES) {par date} {inverse} {doublons} {date>#DATE} {lang}>
Brev: #DATE #TITRE<br>
</BOUCLE_breves>

Art: #DATE #TITRE<br>
</BOUCLE_articles>

<BOUCLE_breves2(BREVES) {par date} {inverse} {doublons} {date>#DATE} {lang}>
Brev: #DATE #TITRE<br>
</BOUCLE_breves2>

Rub: #DATE #TITRE<br>

</BOUCLE_rubriques>

<BOUCLE_article_fin(ARTICLES) {par date} {inverse} {doublons} {lang}>
<BOUCLE_breves_fin1(BREVES) {par date} {inverse} {doublons} {date>#DATE} {lang}>
Brev: #DATE #TITRE<br>
</BOUCLE_breves_fin1>
Art: #DATE #TITRE<br>
</BOUCLE_article_fin>

<BOUCLE_breves_fin2(BREVES) {par date} {inverse} {doublons} {date>#DATE} {lang}>
Brev: #DATE #TITRE<br>
</BOUCLE_breves_fin2>

In questo modo si mescolano rubriche articoli e brevi. Si è aggiunto un ciclo BREVES che sono considerate prima di tutto il resto.
Si ha dunque :

  1. il ciclo _breves nel ciclo _articles che trova le brevi più giovani dell’articolo corrente,
  2. il ciclo _breves2 nel ciclo _rubriques che trova tutte le brevi più giovani della rubrica ma più vecchi dell’articolo più giovane della rubrica,
  3. il ciclo _breves_fin1 nel ciclo _article_fin che trova le brevi più giovani dell’articolo più vecchio di tutta la rubrica.
  1. il ciclo _breves_fin2 che trova le brevi più di tutti gli articoli e rubriche

Non è bello tutto questo ?

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom