Voici comment – après quelques heures de bidouillage – j’ai pu arriver à intégrer correctement le bouton Facebook Like dans le flux d’activités de BuddyPress.

Ce qu’il faut savoir c’est que le loop de BP nous renvoie un tableau assez volumineux contenant toutes les entrées du flux d’activités sans égard à son type (à moins que l’utilisateur ait fait sélectionné une méthode de tri).

Ainsi, chaque type (mise à jour, inscription à un groupe, publication sur un forum, etc.) a sa propre façon de gérer ses URLs et cette dernière n’est malheureusement pas passée en argument dans le Loop : il faut donc la construire.

Le bout de code qui suit ajoutera automatiquement le iFrame de vote pour Facebook à la droite des boutons de réponse en se suppléant au marqueur do_action(‘bp_activity_entry_meta’); présent dans le thème par défaut à l’endroit souhaité.

Vous remarquerez que personnellement, j’ai choisi d’exclure du processus (en ne leur attribuant pas d’URL) les types tels que : joined_group, new_member, friendship_accepted, et friendship_created pour une raison évidente : on s’en fou de signaler notre intérêt (like) pour ces éléments!!

Voici donc quoi ajouter dans le fichier functions.php de votre thème BuddyPress :

<?php
/*
 * FACEBOOK LIKE
 *   ajouter le bouton Facebook Like dans le flux des activités
 *   utilise le listener 'bp_activity_entry_meta' du thème par défaut de BP
*/

add_action( 'bp_activity_entry_meta' , 'facebookLikeActivity');
function facebookLikeActivity()
{
	global $bp,$activities_template;
	// si objet inexistant
	if(!is_object($activities_template)) return;
	// current ID
	$id = $activities_template->current_activity;
	// trouver le bon lien
	switch($activities_template->activities[$id]->type) {
		case 'activity_update' :
			$link = $activities_template->activities[$id]->primary_link;
			$link .= 'activity/' . $activities_template->activities[$id]->id.'/';
			break;		
		case 'new_forum_topic' :
		case 'new_blog_comment' :
		case 'new_blog_post' :
		case 'new_forum_post' :
			$link = $activities_template->activities[$id]->primary_link;
			break;
		case 'created_group' :
			preg_match_all('/href="([^"]*)"/i', $activities_template->activities[$id]->action, $matches);
			$link = $matches[1][1];
			break;
		case 'joined_group' :
		case 'new_member' :
		case 'friendship_accepted' :
		case 'friendship_created ':
		default :
			$link = NULL;
			break;
	}
	//ajouter le bouton
	if($link) : ?>
        <iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode($link); ?>&amp;layout=button_count&amp;show_faces=false&amp;width=90&amp;action=like&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="position:relative;top:7px;border:none; overflow:hidden; width:90px; height:21px;" allowTransparency="true"></iframe>
    <?php endif;
}
?>

Commentaires Facebook

Ajouter un commentaire

Additional comments powered by BackType

Twitter @emilegirard

RSS Liens partagés

Mots-clefs

Ailleurs

Méta