Top 5 Non-Obvious Drupal Modules Presented by: Russ Bomhof & Geoff Hing Chicagoland Library Drupal Group  December 7, 2009
About CRL Consortium of 250+ North American Universities and Colleges Primary Resources for faculty and students Cooperative Acquisition and preservation of international resources for research and teaching Top 5 Non-Obvious Drupal Modules
CRL Then and Now VBScript ASP / MS Access DB Static HTML w/ Dreamweaver Templates Drupal 6!
Too often, web site owners allow their maintenance methods and their personnel skills to drive decisions about how the web site works. That's completely backwards. You should first figure out how you want your web site to work, then employ solutions/people/skills to make that happen. -  Scott Crevier on the uwebd mailing list Things We Learned
As far as we know, there is no module that will force a team to communicate and collaborate. Things We Learned
There’s more than one way… Photo by Karamellzucker via Flickr  Things We Learned
Obvious Views Content Construction Kit (CCK) Panels Node Import Workflow Drush Google Analytics Top 5 Non-Obvious Drupal Modules
Non-Obvious Nodequeue Module Grants Menu Block Split Views Accordion Pathauto + Custom Token Top 5 Non-Obvious Drupal Modules
So what news items did you want on the front page? We need to have the 3 most recent news and  events, but not the one about the meeting.  Oh, and that event is too old. Oh, make sure to add ... Ummmm.  Right. Just send me that list in e-mail.
1. Nodequeue http://drupal.org/project/nodequeue Top 5 Non-Obvious Drupal Modules
By the way, I need you to build this huge new section of the site from a bunch of incoherently named Word  documents, e-mails, and spreadsheets. Ok.  When does this need to be done? If you could get this done by the end of the day, that would be great.  Oh, and it will need to be approved before it gets published.
Rapid content development Review and collaboration vs .
2. Module Grants http://drupal.org/project/module_grants Top 5 Non-Obvious Drupal Modules
Or, use Deploy From the amazing demo of the Deploy module, http://www.youtube.com/watch?v=7PjwT0HWHxw
What module should  I use for menus? Well, there’s Menu Block, or Nice Menus.  Submenu Tree, … Category, Menu HTML, Menuwriter, … Menu Firstchild, Multiple Node Menu, ...
3. Menu Block Split http://drupal.org/project/menu_block_split Top 5 Non-Obvious Drupal Modules
We need our Topic Guide links to open and close like the E-Collections, web specialist. No problem. What content would you like to use? It should open and close.
 
 
 
 
 
4. Views Accordion http://drupal.org/project/views_accordion Top 5 Non-Obvious Drupal Modules
Where should that page go in the menu? Home » Archiving & Preservation » Current Projects & Initiatives » Shared Print Archive Proposal Uhh.  Make sure you wipe those breadcrumbs off your chin.
Old and busted: http://www-old.crl.edu/content.asp?l1=3&l2=55
5. Pathauto + Custom Token http://drupal.org/project/pathauto Top 5 Non-Obvious Drupal Modules
$replacement = ''; if ($node) { $values = array(); // Try to get the menu data. $mlid = db_result(db_query("SELECT mlid FROM {menu_links} WHERE link_path = '%s'", 'node/'. $node->nid)); // Now get the menu related information. if (!empty($mlid) || !empty($node->menu['mlid']) || !empty($node->menu['plid'])) { $menu_link = menu_link_load($mlid); $menus = menu_get_menus(); $menu = isset($menus[$menu_link['menu_name']]) ? $menus[$menu_link['menu_name']] : ''; $trail_raw = _menu_titles($menu_link, $node->nid); $trail = array(); foreach ($trail_raw as $title) { $trail[] = check_plain($title); } $values['menupath-raw']  = implode('/', $trail_raw); } else { $values['menupath-raw']  = ''; $values['menu-link-title']  = ''; $values['menu-link-title-raw'] = ''; } $replacement = $values['menupath-raw']; // Start with the default ['menupath-raw'] $replacement = str_replace('Collaborations/Area Studies', 'Area Studies',  $replacement); $replacement = str_replace('Collaborations/GRN', 'GRN', $replacement); $replacement = str_replace('Collaborations/Collaborative Digitization', 'Collaborative Digitization', $replacement); } return $replacement;
/** * Implementation of  hook_token_list() . */ function crl_helpers_token_list($type = 'all') { if ($type == 'global' || $type == 'all') { // We don't implement any global tokens yet. } if ($type == 'node' || $type == 'all') { // Node tokens here $tokens['node']['crl-menupath-raw'] = t('A customized version of the [menupath-raw] token for the CRL menus that puts certain items (e.g. GRN) at the top level.'); } return $tokens; } /** * Implementation of  hook_token_values() . */ function crl_helpers_token_values($type, $object = NULL) { // Very similar to code in previous slide // … } Alternately, write a custom module
Thanks! Top 5 Non-Obvious Drupal Modules Russ Bomhof –  [email_address] Geoff Hing –  [email_address] www.crl.edu

Top 5 Non-Obvious Drupal Modules

  • 1.
    Top 5 Non-ObviousDrupal Modules Presented by: Russ Bomhof & Geoff Hing Chicagoland Library Drupal Group December 7, 2009
  • 2.
    About CRL Consortiumof 250+ North American Universities and Colleges Primary Resources for faculty and students Cooperative Acquisition and preservation of international resources for research and teaching Top 5 Non-Obvious Drupal Modules
  • 3.
    CRL Then andNow VBScript ASP / MS Access DB Static HTML w/ Dreamweaver Templates Drupal 6!
  • 4.
    Too often, website owners allow their maintenance methods and their personnel skills to drive decisions about how the web site works. That's completely backwards. You should first figure out how you want your web site to work, then employ solutions/people/skills to make that happen. - Scott Crevier on the uwebd mailing list Things We Learned
  • 5.
    As far aswe know, there is no module that will force a team to communicate and collaborate. Things We Learned
  • 6.
    There’s more thanone way… Photo by Karamellzucker via Flickr Things We Learned
  • 7.
    Obvious Views ContentConstruction Kit (CCK) Panels Node Import Workflow Drush Google Analytics Top 5 Non-Obvious Drupal Modules
  • 8.
    Non-Obvious Nodequeue ModuleGrants Menu Block Split Views Accordion Pathauto + Custom Token Top 5 Non-Obvious Drupal Modules
  • 9.
    So what newsitems did you want on the front page? We need to have the 3 most recent news and  events, but not the one about the meeting.  Oh, and that event is too old. Oh, make sure to add ... Ummmm.  Right. Just send me that list in e-mail.
  • 10.
    1. Nodequeue http://drupal.org/project/nodequeueTop 5 Non-Obvious Drupal Modules
  • 11.
    By the way,I need you to build this huge new section of the site from a bunch of incoherently named Word documents, e-mails, and spreadsheets. Ok. When does this need to be done? If you could get this done by the end of the day, that would be great. Oh, and it will need to be approved before it gets published.
  • 12.
    Rapid content developmentReview and collaboration vs .
  • 13.
    2. Module Grantshttp://drupal.org/project/module_grants Top 5 Non-Obvious Drupal Modules
  • 14.
    Or, use DeployFrom the amazing demo of the Deploy module, http://www.youtube.com/watch?v=7PjwT0HWHxw
  • 15.
    What module should I use for menus? Well, there’s Menu Block, or Nice Menus. Submenu Tree, … Category, Menu HTML, Menuwriter, … Menu Firstchild, Multiple Node Menu, ...
  • 16.
    3. Menu BlockSplit http://drupal.org/project/menu_block_split Top 5 Non-Obvious Drupal Modules
  • 17.
    We need ourTopic Guide links to open and close like the E-Collections, web specialist. No problem. What content would you like to use? It should open and close.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    4. Views Accordionhttp://drupal.org/project/views_accordion Top 5 Non-Obvious Drupal Modules
  • 24.
    Where should thatpage go in the menu? Home » Archiving & Preservation » Current Projects & Initiatives » Shared Print Archive Proposal Uhh. Make sure you wipe those breadcrumbs off your chin.
  • 25.
    Old and busted:http://www-old.crl.edu/content.asp?l1=3&l2=55
  • 26.
    5. Pathauto +Custom Token http://drupal.org/project/pathauto Top 5 Non-Obvious Drupal Modules
  • 27.
    $replacement = '';if ($node) { $values = array(); // Try to get the menu data. $mlid = db_result(db_query("SELECT mlid FROM {menu_links} WHERE link_path = '%s'", 'node/'. $node->nid)); // Now get the menu related information. if (!empty($mlid) || !empty($node->menu['mlid']) || !empty($node->menu['plid'])) { $menu_link = menu_link_load($mlid); $menus = menu_get_menus(); $menu = isset($menus[$menu_link['menu_name']]) ? $menus[$menu_link['menu_name']] : ''; $trail_raw = _menu_titles($menu_link, $node->nid); $trail = array(); foreach ($trail_raw as $title) { $trail[] = check_plain($title); } $values['menupath-raw'] = implode('/', $trail_raw); } else { $values['menupath-raw'] = ''; $values['menu-link-title'] = ''; $values['menu-link-title-raw'] = ''; } $replacement = $values['menupath-raw']; // Start with the default ['menupath-raw'] $replacement = str_replace('Collaborations/Area Studies', 'Area Studies', $replacement); $replacement = str_replace('Collaborations/GRN', 'GRN', $replacement); $replacement = str_replace('Collaborations/Collaborative Digitization', 'Collaborative Digitization', $replacement); } return $replacement;
  • 28.
    /** * Implementationof hook_token_list() . */ function crl_helpers_token_list($type = 'all') { if ($type == 'global' || $type == 'all') { // We don't implement any global tokens yet. } if ($type == 'node' || $type == 'all') { // Node tokens here $tokens['node']['crl-menupath-raw'] = t('A customized version of the [menupath-raw] token for the CRL menus that puts certain items (e.g. GRN) at the top level.'); } return $tokens; } /** * Implementation of hook_token_values() . */ function crl_helpers_token_values($type, $object = NULL) { // Very similar to code in previous slide // … } Alternately, write a custom module
  • 29.
    Thanks! Top 5Non-Obvious Drupal Modules Russ Bomhof – [email_address] Geoff Hing – [email_address] www.crl.edu

Editor's Notes

  • #2 Russ: - Thanks for having us, we have been wanting to attend this group for a while First heard about it at Last year’s Drupal camp at the University of Illinois Geoff and I are both web and digital library specialists at CRL
  • #3 CRL is an academic library consortium based at the University of Chicago’s campus in Hyde Park. Although U of C was one of our charter members, that is the extent of our relationship. Our members are based primarily in North America, but also include several Canadian universities and some global members like the university of Hong Kong. Since we deal mostly with primary sources, most of our members are larger research institutions, but we also have many smaller schools who are members by way of various library consortia. Collections: various archival material, to a collection of more than 800,000 foreign doctoral disertations, which are all cataloged. Newspapers from around the world at about 10,000 titles nearly 70,000 serial titles, which includes items like trade journals from the late 19 th century. government documents, including our very popular collection of presidential and ministerial reports from Brazil. - but that’s not all! We also provide a framework that gives technical and administrative support to programs that pool the resources and expertise of our members. These groups are mostly interested in international resources. Examples are the Global Resources Network (GRN) and the Area Microform Projects (AMPS)
  • #4 Here we can see the aesthetic changes to our website that took place over the last year, but what about the framework? The content? - Drupal: the tough sell. -No real in-house expertise; steep learning curve - Up until that point, we were a windows shop using Access, MSSQL, ASP for scripting, etc. We needed a new box, Linux admin expertise Starting point: Drupal camp! – Meeting like minded individuals (librarians), getting excited at the various presentations. Theming didn’t seem that difficult, we were thinking about potential integration of our catalog (millenium module, SOPAC, etc.) Road blocks: modules and custom development. Ex. FOCUS – we tried several newsletter modules that were either much too complex, or not powerful enough. Ended up creating our own content types for issues and articles. Basic content was finally in and edited. But what about the custom development we needed? Geoff!
  • #10 *Read Comic* - Many staff members – particularly heads of department – have a lot at stake when it comes to news and events. While we did set up a workflow to make it easier to submit them, we had limited real estate on the front page. - We needed a way to pick and choose arbitrary nodes and display them on the front page