Planning Hierarchy / Navigation on a Large Enterprise Site

rockitdev - June 22, 2009 - 23:12

I am looking for some best practice advice (perhaps recommend some modules) surrounding navigation/hierarchy/taxonomy.

We're looking to migrate a large site over to Drupal. The site has a hierarchy approx 3-4 levels deep, and i'm looking for some advice on best way/practices to manage the navigation and hierarchy. It's a Hospital Site and in our new I.A. we probably have around 200+ sections of the site. The solutions needs to be scalable, simple to maintain and simple for end users to publish content to their respective sections of the site.

I've built several drupal sites now, but mostly they were smaller sites with like 20 pages of static type content and they created mostly news items etc. that belonged in a single section. Also, another constraint is it has to be extremely user friendly since we have several content contributors who we allow to publish content in our current cms now, so access control is key as well.

I know there are many ways to skin a cat here. Here is what we need to be able to achieve:

  • Navigation Scheme based on hierarchy. I'm thinking a combination of taxonomy and the http://drupal.org/project/taxonomy_menu module.
  • Default page behaviour similar to /index.html on a static html site. I'm thinking a combo of CCK (define a field that you can check-off a node as landing page or a new content type called landing page) with a combination of views
  • Access control to nodes. Members of a department will need to be able to create/update/delete their departments content only and cannot do this on another departments content. Seems like http://drupal.org/project/taxonomy_access may be the right fit here or maybe set up departmental sites as organic groups??? possibilities seem endless.

Sounds like a case for organic groups to me

Sheldon Rampton - June 23, 2009 - 01:45

For access control to nodes, organic groups sounds to me like a better approach than taxonomy_access. With organic groups, each group can have its own owner and administrators (who don't have to be website administrators). This means that they can determine who else has access to that group, without the site administrator needing to be involved. With taxonomy_access, a site administrator would have to go in and modify individual user roles every time someone joined or left a department. And if your site has 200+ sections, that's a lot of user roles to be creating.

I'm not sure what you mean by "default page behavior similar to /index.html on a static html site," but if you're trying to create a node type that serves as a landing page for a section or department within your website, that also sounds like something that organic groups does pretty naturally.

For a navigation scheme based on hierarchy, taxonomy_menu might work, but some combination of taxonomy, CCK, views and OG might also do the trick. For example, you could use OG in combination with CCK to create departments (each department is a group), each of which has CCK-defined fields that point to attributes of that department such as staff listing, services offered, contact information or whatever.

Anyway, those are just my thoughts off the top of my head.

----------------
IT consultant, web designer, writer and researcher
http://www.sheldonrampton.com/portfolio

The organic groups option

rockitdev - June 23, 2009 - 02:03

The organic groups option seems interesting. i am working how i would build a hierarchy based on that. would i build a hierarchy of terms in a vocab and then have each OG belong to that term...? what do ya think?

regarding the default behaviour, is have a default page that is rendered based if the nid or name of the node is ommitted. think of www.domain.com/section/ it will look for an index.php or default.aspx or index.html file depending on what's your flavour. so if someone went to domain.com/about/ the our-team node would appear. basically, domain.com/about/ or domain.com/about/our-team would render for either URL. make sense?

the concept of OG & CCK seems quite interesting for departments. i'm thinking out loud here (ok, typing out loud)... i'm interested to see how i would build a hierarchy if i'm using this methodology. would i only have a term called services and all of the departments were just OG's in the services term, or would i also create terms for all the departments underneath services and create each OG in the appropriate term (i.e. create a mental health OG in the mental health term).

i'll have to think about it. thanks for the great info.

hook_menu?

Sheldon Rampton - June 23, 2009 - 02:56

If you want something like www.domain.com/section to return the same result as www.domain.com/our-team, I think a custom module with an instance of the hook_menu() function will do what you want. John VanDyk's book, "Pro Drupal Development," has a chapter about menus that explains the hook_menu function.

Regarding using taxonomy to create your hierarchy, I don't know. I've often felt frustrated in practice when I try to use taxonomies to organize content on my sites. It's possible in principle to create a hierarchy of taxonomy terms (e.g., "Mazda" is a subtopic of "auto company," which is a subtopic of "company"), but in practice categories get messy and overlap a lot. (For example, "Barack Obama" is a subtopic of "U.S. presidents" but also of "African Americans," "authors" and some other categories that don't nest neatly within a single hierarchy.) I tend therefore to use taxonomies more for free tagging than I do for something where I'm trying to create a hierarchy.

As for what WOULD work, I'm not sure. Many something like the node hierarchy module?

----------------
IT consultant, web designer, writer and researcher
http://www.sheldonrampton.com/portfolio

Node Hierarchy seems like it

rockitdev - June 23, 2009 - 10:39

Node Hierarchy seems like it could give me the functionality desired with regards to the landing page idea, and a hierarchy of nodes. It's one option i'll definately take a look at.

the relationships of terms in a Vocab for this site should be fairly straight forward, as most of the site will be hospital departmental sites.

Think:

About Us
Programs and Services
- Cardiology
* Possible Subcategory of Cardiology
* Possible Subcategory of Cardiology
- Cancer Care
- Dermatology
- Mental Health
* Possible Subcategory of Mental Health
* Possible Subcategory of Mental Health
- Orthopaedics

Taxonomy for a Hierarchy does seem a bit frustrating. it seems awesome for news/blogging, where the relationships are defined by a vocab and the nodes are sorted into a list view of some type. But not sure how it is exactly best applied to large enterprise sites that have a lot of brochure type static content (think hospital, government, university sites). Basically, i have to do a proof of concept that demonstrates how Drupal is a perfect fit. So i certainly have some flexibility with testing/breaking/testing/breaking things :).

thoughts

koffer - June 23, 2009 - 01:52

i think for landing page for a section you can use panels and views to create dinamic page populate with the articles inside the section.

About menus i think taxonomy menu will work to avoid end user need to create menu one by one.

you're probably spot on there

rockitdev - June 23, 2009 - 02:05

you're probably spot on there for the landing pages. panels probably is the best idea. i could then have each panel look at term id and pull some views around to output the page.

am i wondering though, if i were to use panels, would i have to create a seperate vocab for various area's since not it's not a given that all terms would have the same output/look and feel.

Cheers.

It's looking like i'll try a

rockitdev - June 23, 2009 - 22:09

It's looking like i'll try a blend of Organic Groups, CCK & Views.

I'll create a few diff og node types. then add specialized cck fields for some meta type data, and then build my output through views.

I'll be sure to post back on how i make out with everything.

me too

lmshawl - July 2, 2009 - 20:43

I'm looking to build a similarly structured site in Drupal 6. Here's the current (non-Drupal) site if you want to take a look: http://www.pharmacy.wisc.edu

Do you think you'll try taxonomy menu for menuing? Also, would be interested to hear how things progress with your site.

Any news?

nemchenk - October 27, 2009 - 14:46

I'm looking at a very similar problem, but in historic research rather than medicine. I too am looking at CCK, OG, Taxonomies, and Views. Would love to hear how you got on...?

Success!

nemchenk - November 11, 2009 - 11:14

I've had some success getting my build to work: http://drupal.org/node/602406#comment-2252646

 
 

Drupal is a registered trademark of Dries Buytaert.