Boucles articles imbriquées ou......

Bonjour,
J’ai à mettre en place des articles contenants des blocs de texte communs à plusieurs articles.
Il est commode de gérer ces blocs de texte sous forme d’articles pour faciliter les mises à jour éventuelles sans avoir à inclure du texte html.
Avant de me lancer j’ai pensé à plusieurs solutions basées sur un modèle de la forme :
<inclusion|article_id=« id_article »> et de mettre ces appels du modèle aux endroits où ils sont nécessaire.

Exemple :

  • Modèle « inclusion.html » :
    [(#REM) inclure un article dans un autre article]
    <INCLURE{fond=inclure/bloc,id_article=#ENV{article_id}>

  • Squelette « bloc.html » :

<BOUCLE_inclure(ARTICLES){id_article}{statut IN publie}>
#TEXTE
</BOUCLE_inclure>

  • Texte de l’article principal :

Duplexque isdem diebus acciderat malum, quod et Theophilum insontem atrox interceperat casus, et Serenianus dignus exsecratione cunctorum, innoxius, modo non reclamante publico vigore, discessit.

<inclusion|article_id=23>

Duplexque isdem diebus acciderat malum, quod et Theophilum insontem atrox interceperat casus, et Serenianus dignus exsecratione cunctorum, innoxius, modo non reclamante publico vigore, discessit.

<inclusion|article_id=47>

Duplexque isdem diebus acciderat malum, quod et Theophilum insontem atrox interceperat casus, et Serenianus dignus exsecratione cunctorum, innoxius, modo non reclamante publico vigore, discessit.

Ma méthode ne fonctionne pas. Seul le texte de l’article principal est généré.
Des idées ?

Tu n’as pas besoin de préciser le statut, si ? Les articles non publiés de sortent pas dans les boucles.

Essaye de mettre [<pre style="position:fixed;z-index:10000;top:10px;left:10px;padding:0.5em;background:#ffe;border:5px dashed #fc0;">(#ENV**|unserialize|print_r{1})</pre>] dans ton bloc.html pour voir s’il reçoit bien l’id article. Sinon, essaye ensuite ton modèle pour voir.

Merci pour la réponse.

En fait j’ai utilisé une autre méthode sans doute moins performante mais plus en conformité avec mes connaissances du fonctionnement interne de spip. J’ai choisi une solution en 3 lignes de JQuery !

  • modele inclusion.html → <inclusion|article=url_relative_article>

[(#REM) inclure un article dans un autre article. #ENV{article}-> url relative article a inclure]

<div id="inc-#ENV{article}"></div>
<script>
$(function(){
      $("#inc-#ENV{article}").load("#ENV{article}.html");.
 });
</script>
  • le squelette de l’article inclus est défini dans compositions :

<BOUCLE_inclure(ARTICLES){id_article}>
#TEXTE
</BOUCLE_inclure>

Comme tu le dis statut n’est pas nécessaire.

Ton code initial a l’air correct, mais s’il marche pas comme tu dis, c’est peut être parce que tu utilises une variable homonyme d’une variable déjà présente dans l’environnement : id_article

Donc tu pourrais essayer simplement en changeant le nom de la variable
: avec <inclusion|id_bloc=...> et une boucle (ARTICLES){id_article=#ID_BLOC} dans l’inclusion

Ou simplement sans variable à l’appel, avec <inclusion|1234> et là c’est #ID qui reçoit le paramètre donc une boucle (ARTICLES){id_article=#ID} dans le bloc inclu.

JL

Bravo super.

La deuxieme solution sans variable ne fonctionne pas mais alors la première avec id_bloc fonctionne parfaitement bien.
J’ai inclus le squelette dans le modèle : <inclusion|id_bloc=172>

<BOUCLE_inclus(ARTICLES){id_article=#ID_BLOC}>
    #TEXTE
</BOUCLE_inclus>

Ca fonctionne super. j’ai supprimé la composition et bien évidemment les perfs sont bien meilleures qu’avec mon système en JQuery.

Merci encore.

Bernard

Oups en effet : la syntaxe simplifiée est encore plus simple : <inclusion1234>
Et là c’est #ID ou #ENV{id} dans le modèle qui donne accès au 1234…

Merci j’aurai appris des trucs ! Super.

Le lun. 4 oct. 2021 à 22:57, JLuc via Discuter de SPIP <
noreply@discuter.spip.net> a écrit :

JLuc https://discuter.spip.net/u/jluc
Octobre 4

Oups en effet : la syntaxe simplifiée est encore plus simple :

Et là c’est #ID ou #ENV{id} dans le modèle qui donne accès au 1234…

Voir le sujet
https://discuter.spip.net/t/boucles-articles-imbriquees-ou/156016/6 ou
répondre à ce courriel pour répondre.

Pour se désabonner de ces courriels, cliquez ici
https://discuter.spip.net/email/unsubscribe/d6a09d827087e0e500a736acd7b27fa9c627990a69d8fff17260c6583c9dfbb4
.