A CMS provides webmasters with tools for building sites. A CMF provides an advanced programming interface so developers can configure and customize their own tools
Drupal:anoverviewMatt WeaverWeb LibrarianWestlake Porter Public Libraryfacebook.com/mattweaver@mattrweaver
What is Drupal?• Content management system(CMS) / content management framework (CMF)• Open source• File structure written in PHP• Supports several databases: MySQL, postgresql the most common• Prefers Apache (over Microsoft IIS)• Prefers Linux
What is Drupal? • “Drupal is like a Lego kit. Skilled developers have already made the building blocks - in the form of contributed modules - that you need to create a site that suits your needs…”-- http://drupal.org/getting -started/before/overview
Some Drupal terms• Nodes = “content types” stories, pages, blog entries, custom• Comments – attached to nodes• Blogs – every user gets one• Blocks – containers for content• Users Roles• Modules• Themes• Taxonomy
Modules• PHP-written functions that are executed to do something: Create a node Display an image Organize taxonomy terms Set access restrictions et cetera• Core and contributed
Themes• The layout of the site• CSS• Template files: php Custom templates for node types, front page, user login…• Core and contributed
Drupal: the deets• Nearly 11,000 modules• Nearly 1,200 themes• Current supported versions are 6 & 7 Which should you choose? Depends on our site’s needs: ▫ D7 is slick, but lots of modules haven’t been written for it yet.
The Case for Drupal• Versatile: allows for customization• Extensible: “there’s a module for that”• Sometimes Wordpress is not enough• One Web Librarian can build a lot of functionality with those Lego blocks
The Case for Drupal• For Libraries: Strong library community incl. library-related modules ▫ XC (extensible catalog) ▫ Sopac (integrates catalog to drupal website) ▫ Biblio (manage and display lists of scholarly publications ) ▫ MARC (imports MARC records to nodes) ▫ and others
Obstacles• Learning curve can be steep, which can increase development time/costs• Nearly 11,000 modules and 1,200 themes ▫ Sometimes poorly maintained/abandoned ▫ Only as good as the developer who wrote them• Quality of support
Obstacles• Getting more complex: ▫ Lines between data structures getting blurred/overridden/emended• Can be overkill for a small site ▫ Sometimes Wordpress is better
The DrupalDevelopmentstack:The further down yougo, the more damageerrors can do to yoursite.
Essential Modules• Content Construction Kit (CCK) ▫ Custom node type: eresource taxonomy Node Title Default node “body” Link fields Attached image/image field
Essential Modules• Views module: framework for displaying database data from queries• User interface, not SQL commands• Simple to complex A table view of a custom content type
Essential Modules:Panels • Panels: templates for pages/nodes • Override theme restrictions • Incorporate blocks, nodes, views • Can restrict access to specific panels
A Panel DissectedCustom Rotatingcontent imagejust in this Slideshow(panel. Views)Tabbed Block: usedblock on other(quicktabs pagesmodule)thatdisplays Block ofviews Feed data (aggregatorAnother Module)QuicktabsblockNode content(page)
Drupal at WPPLIntranetOnline forms w/ email notification: Online Incident Report Form (CCK): automatically emails form to director/assistant directors Online meeting signup Maintenance Request formSubsite for tech support staff: knowledge management system/repository
Multisite• One instance of Drupal core• If one module is used in all sites (CCK, Views, Panels) install it once• Install distinct modules for subsite in that site directory only• Easier to maintain, lightweight• Lots of ways to do multisite• Some reconfiguring of Apache, other subsystems.
XHTML & CSS• Themes ▫ Choosing/buying ▫ Rolling your own ▫ Theming hacks (views, node templates)• Node content ▫ Text editors offer some control, depending on the user.
Other usesOpportunities to create cost savings by building functionality provided by vendors ▫ Room reservation ▫ Course reserves ▫ libguides
Drupal Skills• Get your hands dirty• Foundation of XHTML & CSS will serve you very well• Database stuff ▫ Basic SQL commands ▫ Understanding the Drupal database ▫ Maintenance: module updates/upgrades ▫ Errors: Can destroy your site
Drupal Skills <?php• PHP $path_pieces = explode(/, ▫ At least a little drupal_get_path_alias($_GET ▫ Use/hack existing [q]));?><p style="text-align: center;"><a scripts/snippets href="/movielists/? ▫ Develop your own q=taxonomy/term/<?php print $path_pieces; ? theme >/moviecatexport" ▫ Theming Views onMouseOver="ImageOnly1.s ▫ Errors: Can break rc=/sites/www.westlakelibrary .org.movielists/modules/movie your site. cat/images/new_download_h over.png"… A real drupal snippet, trapped in the wild.
Development guidelines • Never do development on a production server This setup is good Test site: Production server:(all development work from experimental to production quality)
Development guidelines This setup is better Test site Production server(crash test dummy) Staging Server: Stores backup of production site: Minor tweaks
How to play with Drupal• Xampp: preconfigured web server environment (free) Apache Mysql PHP Phpmyadmin (GUI for database) For Mac, Linux and Windows• Plenty of tutorials for installing xampp• Drupal.org• A good tutorial on installing Drupal 6 on xampp: ▫ http://bit.ly/ds3Wp