Les ongletsHa ce morceau...
Pour résumer : sur
l'um1 nous avons, au dessus des articles, des onglets (général, animation, gameplay etc...). Ce qui est très bien, sauf que cela a été fait il y a plusieurs années, par quelqu'un qui ne maitrisait pas bien dokuwiki et php. Donc, le code est un assemblage de trucs piqués ici et là (dont des morceaux inutiles) et surtout : je ne peux pas remettre le thème à jour parce que cette fonction me bloque. C'est tentaculaire, tel que c'est fait, et je finis toujours par casser des trucs en nettoyant parce que c'est pas clair du tout. Il me faut un truc que je puisse ensuite coller où je veux dans mon nouveau thème. Mais c'est moins trivial que ça n'en a l'air car tous ceux à qui j'ai tenté de confier le job se sont enfuis en hurlant, visiblement rendus fous par les appels à des choses immondes dont nul ne devrait parler.
La problématique est aussi détaillé (avec le code actuel et des idées) ici :
https://git.khaganat.net/khaganat/website_jukni/issues/8Je finirais par y arriver. Si.
Un lien dans l'UM1 ressemble ensuite en gros à ceci (après
https://khaganat.net/um1/ ) :
$lang:$tab:<ns>:$id
où :
- $lang est le code de langue déclaré dans le plugin translate
- $tab est le nom des onglets (chez nous, donc, "Général, Animation, Gameplay, Développement, Discussion")
- <ns> : il peut potentiellement y avoir des sous-espaces de nom, même si en théorie, non...
- $id : le nom de la page
En théorie, le lien commence toujours par "$lang:$tab:" et se termine toujours par ":$id". Et en gros, il faut que j'arrive à générer ces variables proprement, suivant où le visiteur se situe dans l'arborescence.
L'un de mes premiers problèmes est de détecter si on est sur du wiki multilingue, et si oui, prendre l'espace de nom avec le code de lang et le traiter à part. Alors, oui : sur Khaganat le multilangue est activé partout, mais je souhaiterais partager ce thème à la communauté Dokuwiki (quelle ambition) et donc je ne dois pas supposer que forcément, il existe...
Détecter si le plugin est actif, ça se fait comme ça :
if ($translation)
echo "translate" ;
else
echo "notranslate";
Et il y a le code suivant qui me retrouve les langues configurées pour le wiki :
$tab_lang = explode(" ", $conf["plugin"]["translation"]["translations"]) ;
Seul souci, je ne sais pas comment traiter ce que je reçois avec explode. Ok, je récupère "en", "fr" et autre ; je sais que comme la condition du plugin existant est rempli, je trouve ça en début de chaine. Mais je ne vois pas trop la suite. Probable même que ça ne me serve à rien, tout ça...