Ce critère utilise un champ 'id_trad' qui n'est pas présent par défaut sur cette table (sans l'utilisation du plugin tradrub ou autre).
Du coup, sur les sites par défaut, une erreur SQL se déclenche :
Unknown column 'rubriques.id_trad' in 'where clause'
SELECT rubriques.lang, rubriques.id_rubrique, rubriques.titre FROM spip_rubriques AS `rubriques` WHERE (rubriques.statut = 'publie') AND (((rubriques.id_trad = 0) AND (rubriques.id_rubrique = 2)) OR ((rubriques.id_trad > 0) AND (rubriques.id_trad = '')))
Faudrait-il, au choix :
- enlever cette boucle ?
- tester que le champ id_trad existe (dans ce squelette) pour utiliser cette boucle
- modifier le critère traduction pour qu'il mette un where 0=1 dans le cas ou id_trad n'existe pas sur la table ? éventuellement un log d'information en plus ?
- ou accepter {traduction ?} qui dans ce cas ne lèverait pas d'erreur si id_trad n'existe pas et ajouterait where 0=1
Ce critère utilise un champ 'id_trad' qui n'est pas présent par défaut
sur cette table (sans l'utilisation du plugin tradrub ou autre).
Faudrait-il, au choix :
- enlever cette boucle ?
À première vue je proposerais bien de virer cette boucle, étant donné que les squelettes par défaut ont une prise en charge limitée du multilinguisme (due au fait qu'il y a plusieurs méthodes pour le mettre en place). De plus, cela ferait une modif dans le core pour une fonction disponible uniquement à l'aide d'un plugin. Mais...
- modifier le critère traduction pour qu'il mette un where 0=1 dans le
cas ou id_trad n'existe pas sur la table ? éventuellement un log
d'information en plus ?
- ou accepter {traduction ?} qui dans ce cas ne lèverait pas d'erreur si
id_trad n'existe pas et ajouterait where 0=1
Une de ces deux solutions (avec une préférence pour la dernière) me semble plus sympa que la première
Ce qui m'ennuie juste c'est que ça fait exécuter la requête SQL même si on sait (à l'avance) qu'elle va échouer si id_trad n'est pas là.
Peut être qu'on peut essayer de reprendre du code du critère SI justement, pour que {traduction ?} ajoute un SI sur la présence du champ id_trad sur la boucle, ce qui aurait l'avantage de ne pas l'exécuter du tout si le champ n'est pas là.