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.
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 !
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.
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>