[support] Menus Won't Display Properly

Steve Edwards killshot91 at comcast.net
Tue Nov 4 23:26:08 UTC 2008


No, not really.  All that did was add another tab on at 
resource-center/reg-assoc..  I still get no tabs at all at 
resource-center/affiliate.

Steve

Michael Prasuhn wrote:
> It looks like you are not defining your MENU_DEFAULT_LOCAL_TASK  
> correctly. Creating a page Y with X tabs requires X+1 entries in  
> hook_menu().
>
> See this example from node.module:
>
> $items[] = array(
>    'path' => 'admin/content/types',
>    'title' => t('Content types'),
>    'description' => t('Manage posts by content type, including default  
> status, front page promotion, etc.'),
>    'callback' => 'node_overview_types',
>    'access' => user_access('administer content types'),
> );
> $items[] = array(
>    'path' => 'admin/content/types/list',
>    'title' => t('List'),
>    'type' => MENU_DEFAULT_LOCAL_TASK,
>    'weight' => -10,
> );
> $items[] = array(
>    'path' => 'admin/content/types/add',
>    'title' => t('Add content type'),
>    'callback' => 'drupal_get_form',
>    'callback arguments' => array('node_type_form'),
>    'type' => MENU_LOCAL_TASK,
> );
>
> In this case, the MENU_DEFAULT_LOCAL_TASK is actually just to define  
> the tab, which is the same as 'admin/content/types'.
>
> So basically it looks if you change your 'resource-center/reg-assoc/ 
> basic' and 'resource-center/affiliate/basic' items to MENU_LOCAL_TASK,  
> and create an item such as 'resource-center/reg-assoc/view' and only  
> give it a title "view" or some such, a weight (usually -10), and the  
> path 'resource-center/reg-assoc/view' and type MENU_DEFAULT_LOCAL_TASK.
>
> I think that's what you're trying to do, let me know if that works.
>
> -Mike
>
>
>
> On Nov 4, 2008, at 2:28 PM, Steve Edwards wrote:
>
>   
>> I've been fighting with this for a couple weeks now with no  
>> resolution, so I'm hoping someone can shed some light on this for  
>> me.    I tried using the menu tabs capability in Views with no luck,  
>> so I'm trying to accomplish the same thing in a module, still with  
>> no luck, and I don't have much hair left to pull out...
>>
>> What I want to do is create a page with three tabbed menu items.   
>> The text will be from a Page node, and the three tabs will be  
>> views.  There are three roles - regular, associate, and affiliate -  
>> that need to have access.  Regular and Associate can see all items,  
>> and Affiliate role can only see what has been flagged as being  
>> visible to the Affiliate role.  There are three categories - Basic  
>> Information, Best Practices, and Technology.  I've created six views  
>> accordingly.  What I'm trying to do is create two menu items: one  
>> for Regular/Associate, and one for Affiliate, with the same intro  
>> text.  Each will have three tabs, but the views will be different    
>> Here is my hook_menu:
>>
>> function mymodule_menu($may_cache) {
>>   $items = array();
>>
>>   if ($may_cache) {
>>     $items[] = array(
>>       'path' => 'resource-center/reg-assoc',
>>       'title' => t('Resource Center - Regular'),
>>       'description' => t('Resource center for regular and associate  
>> members'),
>>       'callback' => 'resource_center_base_page',
>>       'access' => user_access('regular'),
>>       'type' => MENU_NORMAL_ITEM,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/reg-assoc/basic',
>>       'title' => t('Basic Information'),
>>       'description' => t('Basic Information'),
>>       'callback' => 'resource_center_basic',
>>       'callback argument' => 'resources_reg_assoc_basic',
>>       'access' => user_access('regular'),
>>       'type' => MENU_DEFAULT_LOCAL_TASK,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/reg-assoc/best-practices',
>>       'title' => t('Best Practices'),
>>       'description' => t('Best Practices'),
>>       'callback' => 'resource_center_best',
>>       'callback argument' => 'resources_reg_assoc_best',
>>       'access' => user_access('regular'),
>>       'type' => MENU_LOCAL_TASK,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/reg-assoc/technology',
>>       'title' => t('Technology'),
>>       'description' => t('Technology'),
>>       'callback' => 'resource_center_technology',
>>       'callback argument' => 'resources_reg_assoc_technology',
>>       'access' => user_access('regular'),
>>       'type' => MENU_LOCAL_TASK,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/affiliate',
>>       'title' => t('Resource Center - Affiliate'),
>>       'description' => t('Resource center for affiliate members'),
>>       'callback' => 'resource_center_base_page',
>>       'access' => user_access('affiliate'),
>>       'type' => MENU_NORMAL_ITEM,
>>     );
>>      $items[] = array(
>>       'path' => 'resource-center/affiliate/basic',
>>       'title' => t('Basic Information'),
>>       'description' => t('Basic Information'),
>>       'callback' => 'resource_center_basic',
>>       'callback argument' => 'resources_affiliate_basic',
>>       'access' => user_access('affiliate'),
>>       'type' => MENU_DEFAULT_LOCAL_TASK,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/affiliate/best-practices',
>>       'title' => t('Best Practices'),
>>       'description' => t('Best Practices'),
>>       'callback' => 'resource_center_best_practices',
>>       'callback argument' => 'resources_affiliate_best',
>>       'access' => user_access('affiliate'),
>>       'type' => MENU_LOCAL_TASK,
>>     );
>>
>>     $items[] = array(
>>       'path' => 'resource-center/affiliate/technology',
>>       'title' => t('Technology'),
>>       'description' => t('Technology'),
>>       'callback' => 'resource_center_technology',
>>       'callback argument' => 'resources_affiliate_technology',
>>       'access' => user_access('affiliate'),
>>       'type' => MENU_LOCAL_TASK,
>>     );
>>   }
>>   return $items;
>> }
>>
>> The URLs for the views match the paths for the MENU_LOCAL_TASK items.
>>
>> Here is the function to call the page (as referred to in the menu  
>> callback:
>>
>> function resource_center_base_page() {
>>   $output = '';
>>
>>   $base_node = node_load(84);
>>   $display = node_view($base_node);
>>
>>   $output = $display;
>>
>>   return $output;
>> }
>>
>> and then the functions to call the views:
>>
>> function resource_center_basic($view_name) {
>>   $view = views_get_view($view_name);
>>   print views_build_view('embed', $view, array(), false, false);
>> }
>>
>> function resource_center_best_practices($view_name) {
>>
>>   $view = views_get_view($view_name);
>>   print views_build_view('embed', $view, array(), false, false);
>> }
>>
>> function resource_center_technology($view_name) {
>>
>>   $view = views_get_view($view_name);
>>   print views_build_view('embed', $view, array(), false, false);
>> }
>>
>> After all that, what's happening is that the menu items are only  
>> available to my admin user (the first one created).  When I go to  
>> resource-center/reg-assoc, I get my page and the tabs, but when I go  
>> to resource-center/affiliate, I just get the page with no tabs.   
>> When I log in as a regular role, I don't see the menu items at all,  
>> and if I go to resource-center/reg-assoc, I get Access Denied.  Am I  
>> doing something wrong, or is this a bug in the menu system.
>>
>> Thanks.
>>
>> Steve
>>
>>
>>
>>
>> -- 
>> [ Drupal support list | http://lists.drupal.org/ ]
>>     
>
> __________________
> Michael Prasuhn
> mike at mikeyp.net
> http://mikeyp.net
>
>
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20081104/2389f4d6/attachment.htm 


More information about the support mailing list