Voici un petit bout de code jQuery bien utile pour convertir tout lien pointant vers une image à une miniature de celle-ci pointant vers l’originale. Très utile pour un blogue ou un forum!

//set image max width
imgMaxWidth = 150;
//define regex pattern to detect images
regexImg = /^http:\/\/(.)+\.(jpg|jpeg|gif|png)$/gi;
//parse links
$('DIV.activity a').each(function(){
	//if a link points to an image
	if($(this).attr('href').match(regexImg)) {
		//add classes
		$(this).addClass('fetchedImgLink');
		//edit target
		$(this).attr('target', '_blank');
		//show image instead of text
		$(this).html("< img class='fetchedImg' src='" + $(this).attr('href') + "' />");
		//check for size
		var currentImg = $(this).find('img');
		var iw = currentImg.width();
		var ih = currentImg.height();
		var ratio = (ih!=0) ? iw/ih : 1;
		//resize if needed
		if(iw > imgMaxWidth) {
			currentImg.width(imgMaxWidth);
			currentImg.height(ih - ((iw-imgMaxWidth) / ratio));
		}
	}
});

J’expérimente Buddypress depuis quelques jours avec les configurations suivantes :

Le but est donc d’avoir un environnement multilingue (via WPML) pour Buddypress sur une installation unique de WP (et non WPMU). Le problème? C’est que ça ne fonctionne pas. En tout cas, ça ne fonctionne pas bien puisque les URLs ne sont pas réécrites correctement pour faire passer le paramètre de langue.

J’ai trouvé sur le forum officiel de WPML que leur traduction, avec le plugin Buddypress Multilingual servant de pont avec le CMS, ne fonctionne que si Buddypress est installé sur la version WPMU (multi-users) de WordPress, et qu’ils ne prévoient pas de soutenir la compatibilité pour la single install considérant qu’en version 3.0, WordPress intègrera les composantes multi-utilisateurs.

Alors en attendant on fait quoi?

Un peu de javascript…

Voici donc ma recette pour – temporairement, le temps que WP 3.o émerge en mai prochain – forcer l’insertion du paramètre de langue dans toutes les URLs d’un site tournant sous Buddypress.

1) Il faut s’assurer que le plugin WPML est configuré de sorte que le paramètre de langue soit passé en query string, du genre : http://monsite.com/buddypress/article?lang=en et non la formule par défaut.

2) Ensuite on ajoute ce bout de code nécessitant jQuery :

//set image max width
imgMaxWidth = 150;
//define regex pattern to detect images
regexImg = /^http:\/\/(.)+\.(jpg|jpeg|gif|png)$/gi;
//parse links
$('DIV.activity a').each(function(){
	//if a link points to an image
	if($(this).attr('href').match(regexImg)) {
		//add classes
		$(this).addClass('fetchedImgLink');
		//edit target
		$(this).attr('target', '_blank');
		//show image instead of text
		$(this).html('');
		//check for size
		var currentImg = $(this).find('img');
		var iw = currentImg.width();
		var ih = currentImg.height();
		var ratio = (ih!=0) ? iw/ih : 1;
		//resize if needed
		if(iw > imgMaxWidth) {
			currentImg.width(imgMaxWidth);
			currentImg.height(ih - ((iw-imgMaxWidth) / ratio));
		}
	}
});

Ce que ce code fait, c’est qu’il détecte si on est dans une version linguistique autre que celle par défaut (donc on a un paramètre de langue initialement). Si tel est le cas, le paramètre est ajouté à chaque lien de la page, mais pas à ceux de la boîte de sélection de langue de WPML (DIV#lang_sel).

Et ça dépanne, en attendant.

Voilà une excellente nouvelle que cette annonce à l’effet que BuddyPress pourra maintenant rouler comme un plugin de WordPress, et n’aura plus (nécessairement) besoin de WordPress MU.

J’ai toujours été extrêmement septique à l’endroit de MU – dont on annonce déjà la mort lors du passage en version 3.0 de WP – et de savoir qu’on pourra utiliser les fonctionnalités incroyable de BuddyPress sur une installation simple m’emballe.

Amis développeurs, avez-vous eu l’occasion de le tester un peu?

Twitter @emilegirard

RSS Liens partagés

Mots-clefs

Ailleurs

Méta