[Résolu] Modèle de listes d’articles avec array

Bonjour

Je cherche à créer un modèle de listes d’articles avec un array du type :

<monModele
|id = 12,24,30
|texte=
Mon texte 01,
Mon texte 02,
Mon texte 02
>

Voici le modele :

#SET{maListe,#LISTE{#ENV{id}|textebrut}|implode{','}}
<BOUCLE_liste_articles(ARTICLES) {id_article IN #GET{maListe}|explode{','}}>
      [(#LOGO_ARTICLE)]
      <div class="h4">? #TITRE</div>
       #ENV{texte}
</BOUCLE_liste_articles>

Mais, je n’arrive pas à lier les paramètres ‘Texte’ aux paramètres ‘id’.
Sans doute en intégrant les deux paramètres dans un tableau, mais je ne vois pas trop comment faire.

Merci de votre aide

Ce n’est pas très clair le besoin. Tu voudrais que chaque « element » du texte correspond à un article ?

Dans tout les cas

#SET{maListe,#LISTE{#ENV{id}|textebrut}|implode{','}}me parait bizarre

#SET{maListe,#ENV{id}|explode{','}}

et plus loin tu supprime le |explode

Merci pour ta réponse Maïeul

Oui, je veux pouvoir importer différents articles (logo et titre) dans un autre article via ce modèle, avec un texte (une sorte de légende) personnalisée. Mais comme je l’ai dit, je m’y prends peut-être pas comme il faudrait.

Concernant les implode explode, si je les enlève, je n’ai qu’un seul résultat dans la boucle…

et donc pour 12 tu associe « Mon texte 01 », pour 24 « Mon texte 02 », pour 30 « Mon texte 02 » (encore) ?

Oui, c’est ça.

Et donc

#SET{ids,#ENV{id}|explode{','}}
#SET{texte,#ENV{texte}|explode{','}}
<BOUCLE_liste(ARTICLES){id_article IN #GET{ids}}>
      [(#LOGO_ARTICLE)]
      <div class="h4">? #TITRE</div>
			#GET{texte/#COMPTEUR_BOUCLE|moins{1}}
</BOUCLE_liste>

Commentaire :

  • ligne 1 : prendre le id, séparé en tableau en utilisant la virgule comme délimitateur, mettre dans la variable ids (note stylistique : éviter les monXX, qui ne veulent pas dire grand chose, cela sert surtout dans les tuto de demonstration, mais une variable n’appartient pas plus à la codeuse qu’à qui que ce soit…)
  • l.2 meme chose pour le texte, à mettre dans la variable texte
  • l.3 boucle sur les articles à partir du tableau ids (note que je pense qu’on aurait pas besoin de faire un tableau, on pourrait sans doute faire {id_article IN #ENV{id}}
  • l.6 Dans le tableau texte aller chercher l’entrée du compteur courant de boucle. Note le |moins : c’est parce que les tableaux PHP comptent à partir de 0, alors que #COMPTEUR_BOUCLE compte à partir de 1

Merci Maïeul, c’est parfait.
La classe…

Et une autre chose que je n’arrive pas à faire fonctionner avec les modèles, je ne trouve pas de doc à ce propos.
Sur le site privé on peut indiquer artXX ou rubXX comme raccourci pour un lien interne.
Est-ce que c’est possible aussi avec un modèle du type (?) :

<monModele
|monLien=artXX
>

Quel code faut-il mettre dans le modèle ?

Merci

Comme cela, je testerai un truc du style

[(#VAL{[text->#ENV{monLien}]}|typo)]

En gros, transformer en raccourci SPIP, puis appliquer le fitlre |typo dessus (à confirmer)

C’est plutôt expanser_liens.

Et je me suis fait une fonction pour l’appeler : soyezcreateurs_fonctions.php · master · spip-contrib-squelettes / soyezcreateurs · GitLab

C’est très bien, la fonction génère le raccourci vers un lien texte.
Je la note dans ma doc.

Mais dans le cas présent, j’ai juste besoin du lien href.
J’ai trouvé la fonction traiter_lien_implicite(), qui fonctionne, avec des variables pour faire la différence entre les liens externes et internes.
Ça a l’air de marcher.

[(#REM) btn<!--
  <bouton|lien=https ou artXX|texte=texte>
-->]
#SET{vLien,#ENV{lien}}
#SET{fenetre,nouvelle}
[(#ENV{lien}|substr{0,3}|=={art}|ou{[(#ENV{lien}|substr{0,3}|=={rub})]}|oui)
  #SET{vLien,#ENV{lien}|traiter_lien_implicite}
  #SET{fenetre,non}
]
<a href="[(#GET{vLien})]"[ target="(#GET{fenetre}=={nouvelle}|oui)_blank]">[(#ENV{texte})]</a>

On peut marquer le fil comme résolu ?

Oui, merci encore.
Mais je ne vois pas comment ajouter [Résolu]…

C’est fait :slight_smile: