C’est fait ! xili-language est réécrit en OOP avec hook !

La réécriture de l’extension xili-language (0.9.7.1) en mode OOP (programmation objet) rajoute de la souplesse et des nouveaux ancrages pour enrichir (hook) le theme wordpress de type CMS ou autre.

La mise à jour ne pose pas de problème particulier sauf les functions que vous auriez pu rajouter dans le fichier functions.php pour optimiser l’affichage de la liste des langues par exemple : Avant il fallait impérativement que cette fonction ait le nom imposé par le plugin. Aujourd’hui avec les fonctions « hook » comme add_action ou add_filter ce n’est plus nécessaire.

Prenons un exemple de la liste des langues avec drapeau (c’est le template tag dans votre sidebar) :

<ul class="navigation">
		<?php if (function_exists('xili_language_list')) {
			xili_language_list();
		} ?>
	</ul>

Par défaut la fonction affiche une liste sans drapeau. Que faire pour les afficher ?.
1) prévoir dans le dossier images du thème un dossier contenant les drapeaux avec un nom semblable à celui de la langue concernée : fr_fr.png ….

2) ajouter – dans le functions.php de votre thème – la fonction qui se base sur celle dans le code du plugin mais qui ajoute au début du lien le drapeau.

function my_xiliml_language_list($before = '<li>', $after ='</li>') {
	$catcur = get_bloginfo('siteurl').'/?';
 
	$listlanguages = get_terms(TAXONAME, array('hide_empty' => false));
	foreach ($listlanguages as $language) {
		$a = $before ."<a href='".$catcur.QUETAG."=".$language->slug."' title='".__('Posts selected',THEME_TEXTDOMAIN)." ".__('in '.$language->description,THEME_TEXTDOMAIN)."'>"." <img src='".get_bloginfo('template_directory')."/images/flags/".$language->slug.".png' alt='' /> ". __('in '.$language->description,THEME_TEXTDOMAIN) ."</a>".$after;
	echo $a;
	}	
}

3) activer cette fonction en ajoutant le « add_action ».

add_action('xili_language_list','my_xiliml_language_list');

Et comme sur ce site (menu à gauche), la liste est personnalisée et en harmonie avec le thème du site.

A suivre… (un autre exemple où l’on change les règles de changement de langue par exemple selon l’affichage d’un article ou d’une catégorie)

MS 090305

Ce contenu a été publié dans Plugins WP, xili-language, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

3 réponses à C’est fait ! xili-language est réécrit en OOP avec hook !

  1. admin dit :

    Question : c’est quoi un hook ?
    Réponse : C’est un crochet, un ancrage qui permet d’enrichir ou de détourner une fonction, une méthode. Si cette ancrage est là, une fonction basique peut ainsi être complétée de qualités non présentes à la base. L’extension (plugin) utilise les ‘hooks’ prévus dans le noyau de WordPress mais les fonctions et méthodes du plugin lui-même, ont leurs propres filtres et actions. C’est par ce moyen que l’on peut sans modifier le code de l’extension xili-language enrichir par exemple la liste des langues en ajoutant les drapeaux et une classe pour le tag hml li afin de voir la couleur en orange de langue active sur le thème. Cette fonction d’enrichissement est dans le fichier functions.php du thème puisqu’elle ne concerne que le thème en jeu.

  2. admin dit :

    Question : La date en haut à gauche du site est multilingue : comment cela est-il possible ?
    Réponse : Le fichier .mo de chaque langue ne peut en effet que contenir le format des dates comme dans la fonction php strftime() mais pas les mots des jours etc… En fait, il faut avant ajouter la ligne : setlocale(LC_TIME, $curlang); où $curlang est la langue active.
    Afin de faciliter le travail du créateur de thème, xili-language dans sa prochaine version apportera le template_tag : echo the_xili_local_time(‘%A %B %d, %Y’); où n’importe quel format de date pourra être passé à la fonction. Bien sûr, il faut que le serveur apache/php soit correctement configuré pour gérer setlocale(LC_TIME,…

  3. admin dit :

    Question : Les thèmes avec ‘localization’ comme Gear ou Fusion sont-ils compatibles xili-language ?

    Réponse : OUI, comme kubrick, Gear et Fusion sont transformables d’un thème ‘localizable’ en thème multilingue moyennant des modifications mineures qui feront l’objet d’un article spécifique dans quelques jours.

Laisser un commentaire