Fil RSS et site multilingue : exemple

Avec l’extension xili-language, il est possible de créer des flux RSS sélectifs pour une langue donnée. Sur le menu, à droite, dans la liste des langues disponibles, le logo RSS est disponible et le lien sous-jacent change selon que l’on soit sur une liste d’articles d’une catégorie ou sur un article donné.

Cela est possible, car l’on peut utiliser les ancrages (hook) de la fonction xili_language_list dans le fichier functions.php du thème courant.

add_action('xili_language_list','xiliml_infunc_language_list',10,3);

De plus xili_language_list() par son troisième paramètre permet de définir différents types de listes (ici dans le header et dans le sidebar).

Voici donc des extraits de la fonction xiliml_infunc_language_list :

} elseif ($theoption == 'siderss') {
		if (is_category()) {  
			$catcururl = xiliml_get_category_link();
			$currenturl = $catcururl.'&';
			//print_r();
			$cat_ID = $wp_query->query_vars['cat'];
			$currentrss = get_bloginfo('siteurl').'?feed=rss2&cat='.$cat_ID; 
		} else { // home
		 	$currenturl = get_bloginfo('siteurl').'/?';
		 	$currentrss = get_bloginfo('siteurl').'/?feed=rss2';
		}
		$listlanguages = get_terms_of_groups_lite (the_cur_langs_group_id(),TAXOLANGSGROUP,TAXONAME,'ASC');	
 
		foreach ($listlanguages as $language) {
			if ($language->slug != 'ar_ar' && $language->slug != 'ar_ma') {
				if ($before=='<li>') {
					if (the_curlang() == $language->slug) { 
						$beforee = '<li class="current-cat" >';
					} else {
						$beforee ='<li>';
					}
				}
 
				$a .= $beforee ."<a href='".$currenturl.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> <a href='".$currentrss.'&amp;'.QUETAG."=".$language->slug."'><img src='".get_bloginfo('template_directory')."/images/rss.png' alt='rss'/></a>".$after;
			}
 
		}
 
		if (is_category()) {
			$currenturl = xiliml_get_category_link();
			$a .= $before."<a href='".$currenturl."' title='".__('Posts of current category in all languages',THEME_TEXTDOMAIN)."' >"." <img src='".get_bloginfo('template_directory')."/images/flags/www.png' alt='' /> ".__('in all languages',THEME_TEXTDOMAIN)."</a> <a href='".$currentrss."'><img src='".get_bloginfo('template_directory')."/images/rss.png' alt='rss'/></a>".$after;
			}
		echo $a;	
 
	} else {

et dans la sidebar, le template tag sera :

<ul class="langs">
		<?php if (function_exists('xili_language_list')) {
			xili_language_list('<li>','</li>','siderss');
		} ?>
	</ul>

La seule précaution à prendre, pour avoir un flux correct est de ne pas utiliser le mode permalink mais le mode ?feed=… pour construire le lien rss dans ce code.
Le lien rss sous l’icone sera du type – feed://dev.xiligroup.com/?feed=rss2&cat=393&lang=fr_fr – et sera compris par le serveur même si le permalink est activé par défaut.
Bon codage,

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

2 réponses à Fil RSS et site multilingue : exemple

  1. Jean dit :

    Bonjour,
    j’essaye d’afficher le lien RSS à côté de chaque langue mais je n’y arrive pas, je pense qu’il manque la fonction xiliml_infunc_language_list. Pouvez-vous me dire où elle se trouve?

  2. xiligroup dev dit :

    Cet article n’est pas une solution « tourne les pouces », il faut que vous contruisez vous même la fonction demandée dont est publié ici un petit extrait qui sera dans le fichier functions.php de votre thème courant. Je vous invite pour cela à lire d’abord l’article https://dev.xiligroup.com/?p=989 qui a un exemple de fonction qui personnalise la liste et à laquelle vous allez ajouter ce qui est décrit ici…
    avec quelques copier-coller et quelques changements de noms c’est aisé !
    Bon codage !
    M.

Laisser un commentaire