[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