Bonjour,
J'ai défini la boucle PRODUITS comme suit :
<?php
global $table_des_tables;
$table_des_tables['produits'] = 'produits';
$spip_produits = array(
"id_produit" => "BIGINT(21) NOT NULL",
"id_rubrique" => "BIGINT(21) NOT NULL DEFAULT '0'",
"id_secteur" => "BIGINT(21) NOT NULL DEFAULT '0'",
"titre" => "TEXT NOT NULL",
"texte" => "LONGBLOB NOT NULL",
"lang" => "VARCHAR(10) DEFAULT '' NOT NULL"
);
$spip_produits_key = array(
"PRIMARY KEY" => "id_produit",
"KEY id_rubrique" => "id_rubrique",
"KEY id_secteur" => "id_secteur",
"KEY lang" => "lang"
);
global $tables_principales;
$tables_principales['spip_produits'] = array('field' => &$spip_produits, 'key' => &$spip_produits_key);
?>
Voilà le squelette produit.html :
<BOUCLE_produit(PRODUITS) {id_produit}>
<INCLURE {fond=inc_haut} {id_produit} {id_rubrique} {lang}>
<h1>#TITRE</h1>
<p>#LANG</p>
<a href="#URL_PRODUIT"><:ajouter_au_panier:></a>
<INCLURE {fond=inc_bas} {lang}>
</BOUCLE_produit>
Le produit est dans un secteur anglais (la valeur de lang dans mysql vaut en), la langue principale du site est le français. Les 2 inclusions (contenant des chaînes de langue) et <:ajouter_au_panier:> s'affichent en français, alors que #LANG affiche "en"...
En debug, pour la première inclusion j'ai :
fond : inc_haut
id_produit : 76
id_rubrique : 60
lang : fr
C'est plutôt bizarre non ?
SPIP devrait aller chercher la valeur de lang dans le contexte, ici la table spip_produits (dans ce cas "en") puisque c'est la boucle englobante, mais ce n'est pas le cas. Je sais qu'en rajoutant &lang=en à l'url du produit le squelette reprend un comportement cohérent. Cependant j'aimerais me passer de cette astuce.
Avez-vous des pistes ?
Cordialement,
Pierre.