[support] Menu question
sander-martijn
sander at sander-martijn.com
Fri Aug 17 23:07:57 UTC 2007
here's the solution I found for the left nav requirements:
<?php
$trail = _menu_get_active_trail();
$mid = $trail[1];
$output .= theme('menu_item', $mid);
$output.= theme('menu_tree',$mid);
print('<div id="menubox"><ul class="menu">');
print $output;
print('</ul></div>');
?>
I'm QUITE certain there's a more elegant way of accomplishing this, but
until I find out what it is this at least works.
To test it I had to add in my first 3rd level page and was right about
nice_menus showing that, so I have to either find a way to stop that or
find another solution.
sander-martijn wrote:
> They're actually css menus only. The thing is, i'm quite certain I
> can build what i need to with drupal i'm just having trouble with the
> documentation. I won't rant about it, i don't really have the time
> and i'm sure you don't either.
>
> The main things I'm dealing with is
> 1: very specific (but not that unusual) requirements of what menus
> should do on the site
> 2: a site that got mostly built already in a commercial cms that can't
> handle even the most basic requirements - I'm in damage control mode
> now trying to salvage a project by bringing it to drupal.
>
> In the meantime I used the nice_menus module for the top nav which
> pretty much can do what I need it to do in the short term, but may
> cause problems once there is a third level which shouldn't show in the
> top nav. Now I'm trying to get the left nav to display how that
> should. I'm basically doing a lot of print_r in my templates right
> now so I can get an idea of what's going on.
>
> given this structure:
> - home
> - top level links
> - 2nd level
> - 3rd level
>
> top nav: show on all pages, display top level links and their 2nd
> level links (through css dropdowns)
> left nav: show on top level links and below, list top level link and
> 2nd level links when on top level, list top level link, 2nd level
> links and current 2nd level link's children indented when on 2nd or
> 3rd level
>
> So I don't need javascript or JQuery for this - if I can get arrays
> containing these elements then I can use template override functions,
> custom php code or whatever else to get what I need. I'd rather not
> write a module for this but if that's the only option I'll go that route.
>
> thanks
> .sander
>
> Metzler, David wrote:
>> You might consider abandoning the primary links construct and just
>> create a custom region for your theme and put the primary links block
>> in that region. If the "menu-block" gives you what you wan't that
>> might work. You then disable primary and secondary links in the menu.
>>
>> That being said. It sounds like your problems are that your
>> javascript is doing a a lot of DOM walking specific stuff (otherwise
>> why would extra divs be a problem?). Is that accurate? This is
>> part of what JQUERY was written for. In JQUERY you can bind to
>> on-click events using typical CSS selectors. That rocks for this
>> kind of work (even if I don't do a ton of it).
>>
>> I realize that you have some already tested code. But if it's highly
>> specified to the organization of the document it could cause you a
>> lot of problems in the long run, so I thought you'd want to know
>> about JQuery.
>>
>> Hope some of this helps anyway.
>>
>>
>> Dave
>>
>>
>>
>> ------------------------------------------------------------------------
>> *From:* support-bounces at drupal.org
>> [mailto:support-bounces at drupal.org] *On Behalf Of *sander-martijn
>> *Sent:* Thursday, August 16, 2007 5:15 PM
>> *To:* support at drupal.org
>> *Subject:* Re: [support] Menu question
>>
>> Making some progress here. I've realized that to some extent what I
>> want to do is override theme_menu_tree and theme_menu_item. That
>> gives me some of the control I need BUT the default menu system still
>> has extra junk I don't want (such as a Primary links header) AND I
>> need two types of menu trees that display different things - one
>> horizontal in the top (primary links) and one vertical down the left
>> (current section and its children).
>>
>> so far i think menus are a pain in the ass in drupal. a tradeoff for
>> the power but I think the multiple meanings that the word "menu" has
>> in drupal just adds to the confusion of it all. What I need is
>> really not that complicated, but it's becoming incredibly complicated
>> fast.
>>
>> sander-martijn wrote:
>>> I want to customize my menus, but since I want it to work with the
>>> html/css/javascript code I've already written and tested I want to get
>>> the system to output the menu in html as I want it. Actually what I
>>> need is quite simple. I don't really want to try to customize someone
>>> else's module and I'd rather not build one. After some digging around I
>>> figured out that I could override the theme_menu_links method in my
>>> template.php file. Now that's exactly what I need... I got really
>>> excited but I must have some things missing/misunderstood.
>>>
>>>
>>> what I have in the menu system under primary links:
>>> primary links
>>> - menu item 1
>>> - menu 1 subitem 1
>>> - menu 1 subitem 2
>>> - menu item 2
>>> - menu 2 subitem 1
>>>
>>> etc - fairly standard
>>>
>>> What I need to output is the following:
>>>
>>> <ul id="nav1" class="nav">
>>> <li><a href="#">menu item 1</a>
>>> <ul>
>>> <li><a href="#">menu 1 subitem 1</a></li>
>>> <li><a href="#">menu 1 subitem 2</a></li>
>>> </ul>
>>> </li>
>>> </ul>
>>> <ul id="nav2" class="nav">
>>> <li>menu item 2
>>> <ul>
>>> <li><a href="#">menu 2 subitem 1</a></li>
>>> </ul>
>>> </li>
>>> </ul>
>>>
>>> etc. - also pretty straight forward.
>>>
>>> SO - I put in page.tpl.php the following:
>>> <?php print theme('menu_links', $primary_links); ?>
>>>
>>> and put in template.php the following:
>>> function tpg_menu_links($links){
>>> if (!count($links)) {
>>> return '';
>>> }
>>> $level_tmp = explode('-', key($links));
>>> $level = $level_tmp[0];
>>> $output = "<ul id=\"nav\" class=\"nav\">\n";
>>> foreach ($links as $index => $link) {
>>> $output .= "<li>". l($link['title'], $link['href'],
>>> $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
>>> }
>>> $output .= '</ul>';
>>>
>>> return $output;
>>> }
>>> ?>
>>>
>>> Which is basically a modified version of theme_menu_links in menu.inc
>>>
>>> It works as a start, but there are a couple of issues.
>>> 1. even though my class attribute in $output is hard coded, it's still
>>> being replaced by class="active" when you're on the page. Not a
>>> disaster, i can always modify my css to do the same thing for
>>> class="active" as class="nav".
>>> 2. this is the bigger issue. It's not outputting the subitems. I'd be
>>> happy to add in the proper call in the foreach loop to either call
>>> another function that i also override or to load them directly in here
>>> if anyone can point me in the direction of what i need to call in order
>>> to load them.
>>>
>>>
>>>
>>
>> --
>> ------------------------------------------------------------------------
>>
>> sander-martijn <mailto:sander at sander-martijn.com>
>> interface developer | architect
>> sander at sander-martijn.com <mailto:sander at sander-martijn.com>
>> www.sander-martijn.com <http://www.sander-martijn.com>
>>
>> ------------------------------------------------------------------------
>
> --
> ------------------------------------------------------------------------
>
> sander-martijn <mailto:sander at sander-martijn.com>
> interface developer | architect
> sander at sander-martijn.com <mailto:sander at sander-martijn.com>
> www.sander-martijn.com <http://www.sander-martijn.com>
>
> ------------------------------------------------------------------------
--
------------------------------------------------------------------------
sander-martijn <mailto:sander at sander-martijn.com>
interface developer | architect
sander at sander-martijn.com <mailto:sander at sander-martijn.com>
www.sander-martijn.com <http://www.sander-martijn.com>
------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20070817/b559aa5f/attachment-0001.htm
More information about the support
mailing list