Bonjour,
travaillant actuellement sur un site multilingue, j’ai utilisé la technique décrite dans le Wiki (
http://wiki.modxcms.com/index.php/Make_Multi_Lingual_Site). Cà fonctionne bien sauf que maintenant, je voudrais rafiner le comportement dans le cas où l’article (français par exemple) a été dupliqué dans l’arbre anglais (par exemple), les variables de templates ayant été correctement remplies (en=?? et fr=??) et la traduction n’ayant pas encore été faite....
Autrement dit, voilà ce que je voudrais :
- si la traduction est publiée, alors le drapeau de la langue s’affiche
- sinon, le drapeau ne s’affiche pas.
J’ai trouvé une technique manuelle qui est de réinitialiser la chaine de la variable de template à une chaîne vide mais çà fait deux opérations à faire systématiquement en cas de publication/dépublication...
J’ai apporté une toute petite modif au code du snippet Language pour tenir compte de la publication ou pas de l’article traduit : j’ai déplacé la ligne qui permet d’extraire le code de langue et l’id du doc cible et ai écrit la ligne en gras.
// get entries in languages list
$entries = explode(",", $languages);
// loop through language entries
for ($e = 0; $e < count($entries); $e++)
{
// seperate into lang code and target document id
list($lang, $targetid) = explode("=", $entries[$e]);
if ($modx->runSnippet(’GetField’,array(’docid’=>$targetid,’field’ => ’published’)))
{
$image = ’<img src="assets/templates/Trades/’.$lang.’.gif" alt="’.$langnames[$lang].’" />’;
if (strlen($output))
{
$output .= ’ ’;
}
$output .= ’<a href="’.$modx->makeUrl($targetid).’">’.$image.’</a>’;
}
}
Cà me semble correct mais çà ne marche pas, le drapeau apparaît même en cas de non publication de la page cible.
Une idée pour me sortir de là??.... merci d’avance.