BP My Home tricks !

Petite collection de trucs pour "hacker" BP My Home.

par imath Le janvier 16, 2011

6 réactions
facebook share mail email A+ A-

À propos de l'auteur

je "bricole" sur le web en manipulant des outils comme html/css, php, asp 3.0 (si si!!), javascript, actionscript 1-2-3, Ajax, flash, flex.. i am a Mac/linux allergique à Windows ;)


Sur le même sujet

Dans son forum BuddyPress, dans son forum WordPress et dans les commentaires de ce blog, il m’a été demandé comment réaliser des adaptations du plugin BP My Home afin de “hacker” son comportement pour répondre à d’autres besoins que ceux qui sont prévus “out of the box”.

Comme mes réponses sont légèrement éparpillées, j’ai pensé que les réunir ici pourrait vous intéresser.

Ajouter un WordPress Sidebar Widget dans BP My Home

Dans le functions.php de votre thème actif, ajouter les lignes suivantes

register_sidebars( 1,
  array(
    'name' => 'imath-bpmh-first',
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div>',
    'before_title' => '<h3 class="widgettitle">',
    'after_title' => '</h3>'
  )
);

Ensuite, BPMH contient un widget exemple pour permettre de coder ses propres widgets, il suffit donc de le modifier en remplaçant la fonction de display du BPMH widget par celle-ci :

function bpmh_example_widget_display(){
  ?>
  <?php dynamic_sidebar( 'imath-bpmh-first' ) ?>
  <?php
}

Enfin, il ne vous reste plus qu’à vous rendre sur l’Admin WordPress > Apparence > Widgets et glisser le WordPress sidebar widget voulu dans la dynamic sidebar “imath-bpmh-first“.

Attention cependant, si vous souhaitez ajouter plusieurs WordPress sidebar widgets dans des BPMH widgets différents, il faudra cloner le BPMH widget ‘example’ en changeant pour chacun d’entre eux les éléments en gras ci-dessous et en enregistrant autant de nouvelles dynamic sidebars.

<?php
/*
bpmh widget name: nom du widget
bpmh widget function: prefix_function
bpmh widget column: 1
bpmh widget URI: http://example.com/widget_page
bpmh widget Description: Example of Widget.
bpmh widget Author: Mr Example
bpmh widget Author URI: http://example.com/
*/

/**
* Box header and config link
*/
function prefix_function_dragbox_title(){
  ?>
  nom du widget
  <?php
}

/**
* main function called by BP My Home
*/

function prefix_function_widget_display(){
  ?>
  <?php dynamic_sidebar( 'nouvelle-dynamic-sidebar' ) ?>
  <?php
}
?>

Personnaliser le template de la page des BPMH widgets

Dans votre thème actif, créez le répertoire my-home-tpl puis copiez le fichier /wp-content/plugins/bp-my-home/includes/templates/my-home-tpl/my-home.php et collez le dans le répertoire que vous venez de créer. Vous pouvez maintenant adapter le fichier my-home.php depuis votre thème, c’est ce fichier qui sera affiché par votre site et non plus celui de l’extension.

Pour illustrer et répondre en passant au commentaire de @LSM : imaginons que je veuille ajouter un raccourci vers la création de groupe si un utilisateur dispose d’un xprofile BuddyPress particulier. Je rajoute donc depuis l’admin WordPress – menu BuddyPress – sous menu config. des Profils un nouveau champ que j’appelle “community role” et qui sera un menu déroulant ayant pour valeurs “subscriber” et “community-manager”.
Ensuite je modifie le template my-home.php de mon thème en ajoutant au-dessus de la fonction bp_my_home_load_widgets ce code :

<?php if(xprofile_get_field_data( 'community role', bp_current_user_id() )=="community-manager"):?>
  <div id="menu-additionnel" style="margin-bottom:10px">
    <a class="button" href="<?php echo bp_get_root_domain() . '/' . BP_GROUPS_SLUG . '/create/' ?>"><?php _e( 'Create a Group', 'buddypress' ) ?></a>
  </div>
<?php endif;?>

Désormais, à chaque fois qu’un membre affiche sa page de BPMH widgets et que son “community role” xprofile est community-manager, alors, il dispose d’un lien pour créer un groupe.

Changer le style des dragboxes des BPMH Widgets

Par défaut, le style chargé par l’extension est contenu dans ce fichier /wp-content/plugins/bp-my-home/style.css. Pour changer par exemple la couleur du header des widgets et l’image du collapse, direction le functions.php de votre thème actif pour rajouter ces quelques lignes de codes :

function load_bpmh_custom_style(){
  global $bp;
  if ( $bp->current_component == BP_MYHOME_SLUG ){
    ?>
    <style>
    .column .dragbox{
      border:1px solid #84C9E4;
  }
    .column .dragbox h2{
      background:#84C9E4;
      color:#FFF;
    }
    .handle_div h2.collapse{
      background:#84C9E4 url('<?php echo get_bloginfo('stylesheet_directory');?>/images/votre-image.png') no-repeat top right;
      background-position:3px;
    }
    </style>
    <?php
  }
}

add_action('wp_head','load_bpmh_custom_style');

Si vous voulez changer plus d’élément au style, il suffit de récupérer les éléments à personnaliser depuis la feuille de style de l’extension et d’ajouter vos nouveaux réglages.

Voici une illustration de ces 3 tricks combinés ci-dessous :

illustration hack style et template

Masquer la possibilité de définir la page des BPMH widgets comme accueil principal du site

Par défaut, le plugin laisse la possibilité aux membres de définir leur page de widgets comme accueil du site. Pour retirer cette option, il suffit d’ajouter une nouvelle fonction dans le functions.php de votre thème actif.

function hide_bp_my_home_set_as_home(){
  global $bp;
  if($bp->current_action == 'my-settings'){
  ?>
  <script type="text/javascript">
    jQuery("#user_home_page").parents("tr").hide();
  </script>
  <?php
  }
}

add_action('wp_footer','hide_bp_my_home_set_as_home');

Voilà ! à vous de hacker le plugin maintenant ;)

Suivez nous sur Twitter et sur Facebook.