BP My Home tricks !

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() {
   dynamic_sidebar( 'imath-bpmh-first' );
}

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() {
    echo 'nom du widget';
}

/**
 * main function called by BP My Home
 */
function prefix_function_widget_display(){
   dynamic_sidebar( 'nouvelle-dynamic-sidebar' );
}

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 :

<?php
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 des tricks précédents

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.

<?php
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 ūüėČ

6 commentaires sur “BP My Home tricks !

  1. Bonjour,

    C’est un plugin formidable!

    Il y a longtemps que je voulais avoir cette fonction pour les utilisateurs, mais je ne savais pas comment faire!!:)

    Serait-il possible d’afficher les ¬ę¬†thumbnails¬†¬Ľ des postes avec le titre du post a cot√©?

    Et peut on annuler la partie de configure des widgets?
    Je voudrais que les gens se servent de bookmark buttons seulement, √ßa risque d’etre un peu compliqu√© pour un utilisateur average.

    Merci d’avance pour votre aide!

  2. Bonsoir @caramel,

    Figures-toi que @georglob a cr√©√© un widget qui va √† mon avis t’int√©resser pour la premi√®re partie de ton commentaire :
    il est disponible ici : http://glob.bargeo.fr/fr/web/wordpress/un-widget-lasts-posts-pour-le-plugin-bp-my-home-de-budypress/

    Ensuite pour la seconde partie, tu as 2 choix :
    – soit revoir individuellement le code source des widgets et mettre en commentaire les fonctions qui se terminent par _dragbox_config_link
    Les widgets sont dans /wp-content/plugins/bp-my-home/widgets/nom_widget/nom_widget.php
    – soit tout neutraliser d’un coup en √©ditant /wp-content/plugins/bp-my-home/includes/bp-my-home-core.php en supprimant les lignes 204 √† 208 puis 228 √† 232.

    Merci pour ton commentaire et √† plus ūüėČ

  3. Bonsoir,

    J’ai encore une petite question:

    Serait il possible d’afficher les thumbnails des bookmarks dans la section my bookmarks?

    Merci d’avance!

    1. Bonjour,

      Int√©ressant. Dans l’absolu tout est possible. Le seul frein que je vois est que cela obligerai √† faire un fopen ou utiliser curl pour r√©cup√©rer le code source de la page mise en favori si celle-ci est externe au r√©seau de blog. Or certains h√©bergeurs n’activent pas forc√©ment ces fonctions. Je ferai des tests.
      Merci pour ton commentaire.
      A+

Les commentaires sont fermés.