Creating accessible menus in Drupal 7

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
donalfitz's picture

Hi there,

I hope this is the appropriate forum for my question and if not my apologies.

I'm creating a Drupal 7 site to manage academic course content for various 3rd level modules I must deliver over the next year. I had envisaged a menu structure which would react to keyboard events as well as "on-hover" ones. In other words, when the students click on the course title, a submenu would appear giving course specific information.

Are there better theme/module combinations that I should consider in order to make this as accessible as possible? I have been alerted to the fact that I may have some blind students in the class. Also, as a screenreader user myself, I'd like to produce something that I can easily use. I've been playing around with a few things for example Superfish, however on various platforms and using diverse screenreaders, all the menus I create seem to be permanently expanded. When I set things up so that the top level menu is collapsed, the keyboard does not cause the submenus to appear.

I hope my query is clear and my sincere thanks in advance for any help.

Comments

Zen + Menu_Block

conorc's picture

Hi Dónal,

For what you describe, I'd be very tempted to avoid dropdown navigation menus.

The Zen theme and the Menu_Block contributed module would be my recommendation for an accessible theme with more versatile ways of placing sub-menus within sections of a site.

Keep in mind that other contributed modules, customised views output, relaxed input filters and inputted content can reduce accessibility. Testing with assistive tech and talking to your visitors sounds like it's within your reach too.

Hope this helps,

Conor

That would work well.

donalfitz's picture

Hi Conor,

Thanks for the prompt feedback. I already have Zen installed but not the Menublock module. I think you're right when you say to separate out the menus.

Based on your comment I have one follow-up question if I may. is it possible in Drupal to create a menu which points at different nodes depending on what page it's on? In other words, let's say I have two course home pages with navigation menus in each. On both courses there would be a link for "notes", "lab exams", "assignments" and "results". However, those would obviously have to point at different content depending on the page on which they were to be found. I can create menus by hand with no difficulty of course but really don't want to.

Note I don't mind writing code to do this I just want to ascertain if it's doable.

Thanks much,

Donal

Menu in core

conorc's picture

Hi Dónal,

if I understand your goal, I think you'll easily be able to achieve what you need using Drupal's core menu system. Either use the default main menu, or create a new menu for courses. Structure the menu like this, with each list item a unique node:

  • First course
    • notes
    • lab exams
    • assignments
    • results
  • Second course
    • notes
    • lab exams
    • assignments
    • results

Then point a new menu_block block to this menu.

Alternatively, you could structure the whole section with Views Arguments/contextual filters, if your data is sufficiently well structured.

Hope the above makes sense,

Conor

Course module

Many thanks!

donalfitz's picture

Hi Conor,

Sorry for the delayed response, but I just wanted to thank you for your input as all of those suggestions worked perfectly. I went with the simple option of creating individual pages just to get the thing launched, but I'll look at the views/contextual filters option over the next few days as it would simplify my life inordinately.

Cheers,

Dónal