using Version Drupal 5.0

ive been try in to figure out a way of creating your standard website menu described as follows:

A horizontal menu across the top of the site with titles such as Home, About Us, Services, Clients, Contact Us

I would like to click into one of these menu titles (eg, Services) and have a vertical menu that contains further menu items that correspond to the 'Services' horizontal menu title, (for example: web design, SEO, Flash, 3D Animation) show up in the Left Sidebar

This doesnt appear to exist, and searching through the forums i am alarmed to see that other users are stating that Drupal fails to achieve this basic navigational functionality that is used on sites the world over as it is generally considered to be the best navigational structure possible, certainly for larger sites.

I have found some work arounds using Blocks, whereby you assign the corresponding 'vertical' menu to the 'left sidebar' whilst in Administer >> Site Building >> Blocks and then configure the 'Block' to only show up on the pages that it applies to like this:

1. Create Primary Link menu: Home, About Us, Services, Clients, Contact Us
2. Using the 'Services' Primary Link as an example, create a 'page' (Create Content) called 'services' and link to it from the 'Settings' Primary Link
3. Create a menu called 'Services' ( and sub menu/items like Web Design, Flash, SEO, PHP) and then assign it to the 'left sidebar' in Administer >> Site Building >> Blocks. Save. Then configure it to only appear on the pages that you then create for the sub menu/items (Web Design, Flash, SEO, PHP...create a page for each link to them from the 'Services' menu items) and also the 'services' page.

Now when you click on the 'Services' Primary Link a page appears called 'Services' with a menu in the Left Sidebar called 'Services' containing items named 'Web Design, Flash, SEO, PHP'. Click on any of the sub items and you will link to the corresponding pages you created...easy

Do this for all the Primary links and you have your Horizontal/Vertical corresponding menus....seems simple

** However
Sometimes with a CMS you create a 'page' that you want to link to from 2 seperate menu items, for example the 'Web Design' item in 'Services' could be the same page as the 'Web Design' item in 'Clients' (you would have to create this in 'Clients' of course.)

If you therefore updated the 'Web Design' page, it will update in 'both' menu links, as they both link to the same page, making site maintenance easier...(if you had separate pages for each link, you would have to update both pages in order to keep the website up to date: easy on a small site, but most CMS's are used for huge sites, so you would only ever want to update one 'page' as it may be referenced from multiple menu links)

The problem is then this...(using the Block method of menus above). The 'Web Design' page will show the 'Services' menu block AND the 'Clients' menu block on its Left Sidebar, as both the 'Services' menu and the 'Clients' menu have been configured to show up on the 'Web Design' page..

Not a major problem you may think, but what if the 'Web Design' page was referenced from within a huge site by 10 separate menus...they would show all 10 menus in the Left Sidebar

Has anyone a solution to the Menu problems with Drupal, as they severely limit its consideration for large websites...which is what i am about to create...

Is there a module, or a solution, or anything....any ideas welcome....please let me know if the above is unclear

Comments

masipila’s picture

I have been struggling with this very same problem for a couple of weeks now and I'd love to hear if there is some other way to deal with this issue than "only show on pages" in block settings.

djax80 had an issue with "connected pages" where one page can exists in different submenus on the left column. I don't have that problem at my site but I'm really struggling with some other problems caused by this workaround.

I'll use the same example menu structure.

Problem 1. Breadcrumbs don't work correctly because nodes don't know their first level parents

  • Breadcrumbs don't work as expected because nodes "don't know" what their first level parent is.
  • Say you have page Services -> Web Design. Say the submenu of "Services" is called menu_services. Because there is no way a menu could have a node (here Services in the primary menu) as a parent, the breadcrumb just can't add "Services" to it. Hence the breadcrumb just shows Home instead of Home > Services or Home > Services > Web Desing. (The last is how I'd prefer it but the last link is not the issue here, it's the "services" link).

Problem 2. Pathauto doesn't work correctly

  • Pathauto is not able to create "right" URLs for the nodes in a situation like this because of the same reason. The submenu on the left column doesn't have a connection to the parent primary menu item so there is no way pathauto could guess it.
  • In fact, pathauto doesn't seem to create anything for [menu] and [menupath] if the menu is only visible on some pages!. I reported this as a bug 4 weeks ago but I haven't heard anything since.

Problem 3. Pages that belong to a menu but that are hidden

Okay, I know this sounds a bit freaky at first but please let me explain what I mean by an example.

  • Have a look at this page (Yeah, I know. It's in Finnish but I'll explain the problem in English :)
  • This page is "Home" -> "Sarjat ja kilpailut" -> "Arvokisat ja edustusjoukkueet"
  • On this page I have a table of nodes generated by Views
  • These nodes listed here (Kisa XYZ, for example) are children of "Arvokisat ja edustusjoukkueet" on a conceptual level. I haven't figured out a way to tell Drupal about this connection so look what happens to the left menu when you click on Kisa XYZ! It closes the item "Arvokisat ja edustusjoukkueet" because the only thing that keeps the menu visible in the first place is the URL-pattern of the node "Kisa XYZ"!
  • What I would need here is a way to connect the node "Kisa XYZ" to its parent "Arvokisat ja edustusjoukkueet" and at the same time hide it from the menu.
    • Connecting "Kisa XYZ" by defining its parent item to be "Arvokisat ja edustusjoukkueet" is not an option if "Kisa XYZ" then becomes visible on the menu. There will be a huge number of those nodes and the menu would explode usability wise (that's why the table is there!)

Dear Drupal Community! Please tell me there is a module or something that solves these issues.

Or if there is not, then let's solve this problem together so that everybody can enjoy from the solution in the future.

I'm not familiar enough with Drupal's architecture to add these features myself. I haven't contributed to open source projects before so I'm kinda newbie in this area. What I know I can do well is to write specs and tell what user needs are. I just don't know where to start looking for help on implementation...

Markus Sipilä
Finnish Curling Association
markus [d.o.t] sipila [a t] curling [d o t] fi

masipila’s picture

I've been searching for a solution to this issue today. It looks like category module might be an answer.

I'll give it a shot. I'll report here how it went when I've had time to try it.

A tutorial that looks quite good: Creating a basic hybrid structure

-Markus

Edit: fixed the latter link