question: j'essaie de créer un nouvel élément de navigation secondaire pour les groupes sur le contact d'amis. J'utilise bp_core_new_subnav_item
pour le faire et passe le screen_function
, mais l'onglet ne s'affiche pas sur la page du groupe.
Des idées où je devrais regarder à ce sujet?
Heres notre code.
bp_core_new_nav_item( array(
'name' => 'Document List',
'slug' => 'group-document-list',
'parent_url' => $bp->loggedin_user->domain . $bp->groups->slug . '/',
'parent_slug' => $bp->groups->slug,
'screen_function' => 'group_document_list_function_to_show_screen',
'position' => 55 ) );
function group_document_list_function_to_show_screen() {
//add title and content here - last is to call the members plugin.php template
add_action( 'bp_template_title', 'group_document_list_function_to_show_screen_title' );
add_action( 'bp_template_content', 'group_document_list_function_to_show_screen_content' );
bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
}
function group_document_list_function_to_show_screen_title() {
echo 'Documents for this group';
}
function group_document_list_function_to_show_screen_content() {
display_group_document_list();
}
Assurez-vous que vous essayez uniquement de configurer les éléments une fois que BP a défini sa navigation de base. Vous pouvez vous en assurer en raccordant à bp_setup_nav
avec une priorité supérieure à 10
.
Ainsi:
function bbg_setup_nav() {
bp_core_new_subnav_item( array(
'name' => 'Document List',
'slug' => 'group-document-list',
'parent_url' => $bp->loggedin_user->domain . $bp->groups->slug . '/',
'parent_slug' => $bp->groups->slug,
'screen_function' => 'group_document_list_function_to_show_screen',
'position' => 55
) );
}
add_action( 'bp_setup_nav', 'bbg_setup_nav', 100 );
Gardez à l'esprit que, tel que rédigé, ce code est destiné à ajouter un onglet de sous-navigation à la sous-variable Groups
d'un profiluser. Si vous souhaitez l'attacher à un seul groupe, vous devez le relativiser avec des groupes, en utilisant un parent_slug
et un parent_url
différents:
// ...
'parent_slug' => bp_get_current_group_slug(),
'parent_url' => bp_get_group_permalink( groups_get_current_group() )
// ...
Pour être honnête, cependant, si vous souhaitez ajouter des éléments de sous-réseau aux groupes de partenaires, il est préférable d’utiliser l’API d’extension de groupe de groupes http://codex.buddypress.org/developer-docs/group-extension-api/ . Vous venez de renseigner quelques méthodes et toute la logique de navigation spécifique à votre BP est faite pour vous. S'il existe des méthodes (telles que create_screen()
que vous n'utiliserez pas, laissez-les vides.