Meego Help Site

Intel recently partnered with Nokia to launch Meego, a Linux flavored operating system targeting the mobile and device platform space.

MeeGo is an open source, Linux project which brings together the Moblin project, headed up by Intel, and Maemo, by Nokia, into a single open source activity. MeeGo integrates the experience and skills of two significant development ecosystems, versed in communications and computing technologies. The MeeGo project believes these two pillars form the technical foundations for next generation platforms and usages in the mobile and device platforms space.

Intel is taking advantage of Drupal reqularly these days, including the Atom Developer Program, which I consulted on, and Meego.com. It only made sense to build the Meego help system with Drupal as well. Intel initially contacted me about helping with a services layer on top of the help system allowing devices to access help content via open web standards. This will still likely happen, but it was temporarily put on hold. In the mean time, we worked on the actual organization and display of the help topics. There are obviously many approaches to solving this fairly simple problem with Drupal, the most obviously probably being Taxonomy and Views. With the various minor customizations we wanted, though, and in the spirit of keeping things as lightweight as possible, I decided to forgo Views entirely and just use core Taxonomy module plus some fairly simple glue code to make it all work. The basic setup is as follows:

  • Create a vocabulary to hold all the help categories.
  • Define a menu item for each term in the vocabulary, with a custom page callback that varies depending on depth.
  • On the page callback, show the term description and any applicable nodes, followed by a list of all nodes grouped by child terms. There's some specific variation depending on the depth of the term being viewed.
  • Breadcrumbs and active menu items are also handled on the page callback.

There's a bit more there, but that's pretty much it. A few hundred lines of simple code, leveraging Drupal core and Taxonomy, and you have a nimble and flexible help system. At least in this case, I think this approach worked better than using Book or Views modules, as we would have spent lots of time fighting the default user experience those modules provide and/or dealing with complex overrides.

I did encounter one very frustrating bug/feature with the Taxonomy API. The call to taxonomy_select_nodes() will limit the number of returned nodes to the feed_default_items variable, or default to 10 if it's not set. There's no way to override this, or manage the setting in code (unless you are using StrongArm), which forces you to update the setting on any site you deploy this to.

Meego Help

Nice site!

Nice site Lev! Feels really fast. Are you using anything fancy for caching or hosting? I ran into the very frustrating taxonomy_select_nodes() limit before and ended up writing a function to do the DB query I needed directly. Luckily D7 addresses this by adding a $limit argument.

Intel is handling the infrastructure

Thanks Martin. Intel is handling the infrastructure, and I think they might be using nginx, but I'm not sure what other caching mechanisms, if any, are in place. Regardless, only using a handful of modules, all of them core, certainly helps!