Tuesday, November 17, 2009

Views Carousel Fun

I ran all these Drupal updates a few days ago and as a result my book carousel started displaying incorrectly. Apparently our custom theme needs to be manually added into the viewscarousel.module script in the actual Views Carousel directory. This means each time we upgrade Views Carousel, that script gets written over and we have to add it again.

Here's the documentation for future reference:

Creating Your Own Views Carousel Skin

Tuesday, November 10, 2009

new.ppld.org Demo

We demonstrated the new website to the Drupal Southern Colorado Users Group (DSCUG) last Thursday, November 5. I think we got a very positive response and some good suggestions, including using GMap module and Location module for our Google Maps

We appreciate everyone taking the time to look at the site!

Tuesday, November 3, 2009

Jobs and Volunteers

We've finished our Jobs and Volunteers pages for the new website. HR can now enter job vacancy descriptions into Drupal for indexing and can easily change their status. Also, we've added a Benefits section and an FAQ section that should answer some of the questions that applicants generally ask.

The Volunteers page works in the same manner, with opportunities entered into Drupal and either unpublished by hand when filled, or automatically unpublished when expired. The only problem I'm having here is when you view this page in IE the space between entries is larger than it should be. It's a CSS thing, but I can't find the source of the problem. It's not a deal-breaker, just annoying.


In the ongoing insanity that is the renaming of the eBranch, we've discarded the name "PPLD Downloads" and are going to give "CyberShelf" a try.

Our most recent usability test showed that patrons don't associate the term "Downloads" with eBooks, so we need something more descriptive. CyberShelf is catchy yet descriptive so I'm cautiously optimistic it will fly. If not, I'm going with either eMedia or keeping eBranch, both of which feel like a cop-out.

We'll run another usability test in the spring and see how the new name is received.

eBranch has been our biggest naming challenge so far, so I hope we've hit on a solution with which everyone can be happy.

Home Page Slideshow

We're using JWImageRotator for our home page slideshow. It makes a lovely slideshow BUT you can't link the slides to specific nodes or websites. At least, not that we've been able to figure out. So we need another solution.

We really like Acquia's slideshow on their home page, but apparently that's a custom module that they aren't releasing to the Drupal community at this time.

We'll keep looking around...

Wednesday, October 14, 2009

Front Page Carousel

Today I altered our Front Page Carousel to access a new Content Type.

Basically, we wanted to be able to enter titles and book jackets from NextReads and have them appear on the Carousel, linking to the Catalog record.

Here's how we accomplished this:

Create a Content Type called NextReads, with a Title field and an Image field that links to the Catalog.

The problem here was the Image type in CCK doesn't link to external websites without downloading and enabling a module called LinkImageField. Once I did that and configured the Image type properly, everything worked well except the default URL wouldn't show up.

Create a View that uses Nodequeue and View Carousel to display Content Type

In this case, I cloned the existing Front Page Carousel View that was accessing just an image and altered it for the new content type. The only trouble I see in the future is I'm not sure if I can delete the old view without deleting the cloned view.

Add a new Queue in Nodequeue that points to the NextReads content type

Be sure to reference the correct queue in your View. Also, be sure to add an "add" and "remove" link for the content type.

Populate the content type with NextReads content

Right now I will likely have users upload a Book Jacket from the Catalog by saving it to their computer first. We may then need to go in by hand and edit the image to provide a drop shadow and make sure it looks nice. This will be part of the Workflow for that content type.

Users will also need to copy the URL in the URL Description and paste it into the URL field and add the ISBN at the end of it, until I can figure out why the default URL isn't showing up in the form.

We'll need to create a NextReads role and test user to make sure this all goes smoothly. I'll also need to officially document the procedure for users.

BUT, at least it works! Except the View Carousel doesn't really scroll...

Usability Test #2 - Patrons and Staff

We conducted our second usability study on Wednesday, October 7. Everything went very smoothly. The major issues we noticed were:

  1. The links on our sidebars are hard to read. The font is not dark enough and the link colors don't contrast enough.

  2. The term "PPLD Downloads" is not a good substitute for the term "eBranch". I'm not sure what we're going to do about this. I may just give up and continue to name the service "eBranch". Sigh.

  3. The term "Community" means different things to different people. I changed the name to "Local Information" to see if it's more obvious what is contained therein.

There were a few additional minor changes made that I won't mention here. Overall, the studies were very beneficial to the redesign. If you are deciding to usability studies, but aren't sure if the effort is worth it, do it!

Tuesday, October 6, 2009

Mobile Library Services

The Mobile Library Services page is done, including a massive Google Map that will need to be changed depending on time of year.


We're also ready for our Usability Testing tomorrow.

Development/Production Environment - Redux

After some discussion with our consultants and server administrator, we have the following ideas for implementing a development/production environment and version control:

Development/Production Environment
We plan to set up a virtual server that mirrors the production server and do our testing and development on that platform. When tests/development are completed and ready for production, at this point we plan to recreate the changes on the live site by hand.

We plan to use the Backup/Migrate module to attempt to keep the correct version of our live database backed-up and consistant with our development database. I'm not sure how this will work yet. We may call a halt on data entry on the live site when we're ready to move development work to the production server.

Version Control
We plan to try out Subversion and see if it does what we need for our situation. Being a small shop, I suspect it may be overkill, especially since it is completely new to us and seems to have a steep learning curve. However, our consultants had this to say about our concerns:

Yes, Subversion can help coordinate changes among multiple developers, but the main reasons we recommend it (or any version control system) are valuable even for a team of one:

1) revision tracking, and
2) ease of moving changes from development to staging to production servers

Number 1 will give you the ability to rollback changes, but it also inherently backs up your site files (complementing a database backup system) and gives you an analysis tool if you need to sort things out. Number 2 is quite valuable even thought it only handles the files aspect of your site, not the configuration.

So we'll give Subversion a try, which means we'll need to subscribe to a svn repository as well.

Wish us luck...

Wednesday, September 23, 2009

Development/Production Environment

Right now I'm researching the best way to have a production and development environment for the new website. This is necessary because it seems when we are developing, we tend to break stuff on the website and we'd like to do that not in the public eye.

The problem is, there is no one standard way to do this with Drupal that I can find. The current recommendation is to use Subversion to make file changes and use backup/migrate to update the database. However, Subversion is very daunting to me as I have no experience in this area.

I need a plan and I need it soon, as our consultant contract runs out at the end of the month.

Tuesday, September 15, 2009

Creating Branch Pages

I've spent the last week or so creating our Branch pages for http://new.ppld.org/. Here's what I did, for future reference:

PART 1: Create the page

  1. Create new Branch (content type). Open an existing Branch page for reference.

  2. Track down a Branch image from Flickr or elsewhere and edit it for the page. Upload the image into the content type.

  3. Add general information.

  4. Go to Google Maps and create a map for the Branch. Create a custom embed at 290x300 and paste into Map field in content type. Input format is Full HTML.

  5. Go to Flickr and create a Set with branch images (if they exist).

  6. Go to Flickr Slideshow and create a slideshow for the set at 250x300. Embed the slideshow into the Slideshow field in the content type. Input format is Full HTML.

  7. Look up Zip Codes for the Branch in Associate Director's report and add them to the Zip Code field in the content type.

  8. Publish and save the page.

  9. Add page to About the Library Block.

  10. Add links to page on Library Branches and in pull-down menu.

Part 2: Create the tabbed menu

  1. Open menu option in Drupal. Open an existing Branch menu for reference

  2. Create the menu and add items. You will need to make feeds for Programs: Adults, Programs: Kids, and Classes. Add these links to the corresponding menu blocks.

  3. Add tabbed menu links to the tabbed menu block.

Test in multiple browsers and resolutions.

Monday, September 14, 2009


Sharon and Nancy got the subdomain new.ppld.org to work, so the whole world can see what we're up to with the redesign.

We await the stampede, harhar.

Wednesday, September 9, 2009

Seriously, What the Hell?

I've been working on the branch pages lately. I made these tabbed menus for each branch page that link to related branch information. However, in IE 7, the tabbed menus in the corresponding "Programs-Adults" page don't display, for ANY branch. Every other tab works.

What the hell...

I'm seriously stumped here.

09/10/09 UPDATE:
After storming out of the office yesterday leaving a trail of obscenities, I finally managed to figure out the problem this morning. The tab label "Programs - Adults" was too long for the tab and as a result broke the entire menu when it was in the active state in IE 7. Weird that it only happened in the active state. I looked at the tabbed menu CSS but couldn't figure out how to make the active state expand more and since the tabbed menus are so finicky I decided to rename the tab to "Programs: Adults" instead of taking the time and effort to fix the CSS. Lame, I know, but there's only 1.5 of me and I need to move on.

"How Do I?" Revisited

I wrote earlier about making a "How Do I?" pull-down menu for the left navigational area of the new website. Yesterday I tried to do the same thing for a "Library Branches" pull-down menu on the right navigational area. However, I couldn't get it to work for that region, even though everything seems to be the same.

In the end, I found a more simple form command to use for these menus. The weird thing about them is they need to go to a URL when an option is selected. Here's the basic template for what I did:

Easy peasy

Thursday, August 27, 2009

Daily Views Lesson

Today while theming Views, I came across a View that was displaying bizarrely. Basically, our Book Clubs block display showed multiple instances of the same entries. It was the only display that did this, all the other block views filtered by taxonomy term and worked fine.

Connor, our intern, observed that the default Fields for the View included 'taxonomy: term', which in turn showed up in the book clubs block, even though we weren't using that field for that block. I removed the 'taxonomy: term' Field from the Book Clubs Block display and the problem went away.

The moral of this story: For each View display, use ONLY the necessary elements for the query. Don't leave Fields, Filters, etc in the display that aren't being used.

Adjusti-Search Module

Our genius intern, Connor Kelly, developed a solution for the search mechanism on new ppld.org. Basically, he constructed a module that allows users to search either the website, The Catalog, the Events Calendar, or anything else, using a pulldown menu. What's more, he submitted this solution to Drupal.org as a contributed module, called Adjusti-Search.

If you are in the market for a Drupal search mechanism that lets you search more than one website using the same Search bar, check it out!

Wednesday, August 12, 2009

My First Themed View!

Success! I just themed my first Views using customized tpl.php files. It was a very simple customization, but still, it's good to get something right on the first try.

Here's how to do it:

  1. In Views, edit the specific View display you would like to theme.

  2. Click on the theme link in Basic Settings. Mine said "Information".

  3. Pick the specific aspect of the theme you'd like to theme. In my case it was "Display Output".

  4. The tpl.php that is being used is in bold. Open that file with an editor (my file was located in Views/themes).

  5. Save the file in your theme directory, renaming it to the most specific name option in the theming information list. In my case, the file being used was views-view.tpl.php, which I renamed to views-view--press-releases--page-2.tpl.php and saved in my theme directory.

  6. Make the changes you need in the new file and save.

  7. Click the "Rescan Template Files" button at the bottom of the View theming information area.

Tuesday, August 11, 2009

Feeding the Brain Rot

I don't know if I've mentioned the problems we've had with pulling in feeds from our Events Calendar, run by Evanced. If not, let's just say that both Aggregator module and the far more robust and complicated FeedAPI module didn't do what we wanted, which was order the events by most recent date first (FeedAPI had further formatting issues I don't want to go into). I had made over 45 feeds in Aggregator before I realized this problem.

Luckily Connor, my rockin' intern, developed a php template I could use to embed feeds into Pages. It's simple to use and does everything I need.

Unluckily, I had to remake and relink ALL the feeds, which rivaled Subject Guides in its tediumality, extreme pain in the arsetitude, and time-consumingness. Great words, I know, but I have brain rot right now, so I'm sticking with them.

Connor is currently researching how to contribute this handy tool as a Drupal module...

Tuesday, August 4, 2009

Subject Guides: The FINAL Final Confrontation

Finally, with the help of my coworker Cheryl, I figured out the answer to the Subject Guide problems, including the placement of tabbed menu. We created a new region called "content-tabs" and placed it between the header and the main content area in page.tpl.php. Then I put all my tabbed menus there. They now appear between the title and the body in each page, including Views! Why didn't I think of that before??

Of course, as a result I had to redo all my work... again. This is the LAST time I'm going to do this. It seriously took all day to reassign the links, menus, blocks, and remove the pages and views.

However, I hope this will solve the jQuery error I was getting in Firefox (see previous post).

Other accomplishments since I last wrote:

  • PPLD Downloads page. Talk about pulling teeth with staff on this one

  • Library Cards. Pending staff approval

  • Board of Trustees

  • Job Help

  • Printer-friendly style sheet

Next up:

  • Train my intern to work with Drupal. He's very bright, so I don't see any trouble, except for time expenditure

  • PPLD Newsroom

  • Upgrade Kiosk

  • Any changes to Library Card pages

  • General formatting of existing pages

Monday, July 6, 2009


So lately I've been getting the following error in all browsers except Chrome when I try to configure blocks and views:

Needless to say, it's very annoying as it slows down an already slow process. I can choose either option and the page loads fine, so I guess it could be worse.

Here's what I did to troubleshoot the issue and the insanity that ensued:

  1. Upgraded to Drupal 6.13 and upgraded all modules to the most recent version. This went very smoothly, but didn't fix the issue

  2. Changed theme to default to see if the theme was responsible. Nope.

  3. Disabled ALL contributed modules to see if this removed the error. Yes. So I knew it was a contributed module that did this.

  4. Re-enabled contributed modules one by one to determine the culprit. It was Views!

  5. Checked drupal.org for anyone else getting this error. No one else is having this problem. I suspect one (or more) of my Views is causing this. I have 2 views that have 30 or more block/page displays assigned to them. I wonder if there's a limit to how many displays you can assign per view.

Anyways, when I disabled the Views module the following happened:

  • All of my Views blocks got disabled and I had to reconfigure and reorder them by hand. We're talking over 60 blocks here, folks.

  • All the the Views permissions got disabled. It took me quite awhile to figure this out because I incorrectly surmised the only symptom was the Views displayed differed by browser. Actually, it differed by login...

And after all that, I still get the error message. Sigh.

UPDATE (7/8/09): After all of this, the error seems to only be appearing in Firefox when I try to configure blocks. That's an improvement...

Wednesday, July 1, 2009

DrupalCamp Colorado

This weekend I attended DrupalCamp Colorado in Denver. Here are some highlights:

  1. Collaborating with library workers in the Denver area, culminating with a Libraries BoF

  2. Mark Jarrell's sessions on Theming Views and Customizing Forms

  3. Information about WebForm and ApacheSolr

While some of the sessions weren't as prepared as I would have liked, overall I found the camp to be very beneficial, especially for the price ($20)!

Thursday, June 25, 2009

Subject Guides: Bigger, Longer & Uncut

I presented the current new website to PPLD's Management Team this past Monday. They were very happy with it, except for one concern. When I was showing the Subject Guides, someone mentioned that having the tabbed menus above the header made it difficult to figure out the tabbed menus were actually for each subject guide. At first I was skeptical, but I checked with a few other staff and they were confused by that as well.

The problem here is that I was using Page Views with arguments for the subject guides and couldn't insert the tabbed menu below the header and above the content (that I know of, anyways). So in order to fix this issue, I had to completely redo the subject guides from scratch.

Phase 1:

  1. Made Block Displays for each subject guide category in Databases View

  2. Cloned Databases View to make Recommended Websites View

  3. Made changes as needed in Recommended Websites View

Phase 2:

  1. Created a Page for each category and category type

  2. Assigned these pages to their corresponding Blocks

  3. Changed pages in corresponding tabbed menu blocks

  4. Added pages to Research subnav block and removed old page links

  5. Assigned Blocks to proper region and lined them up appropriately

  6. Changed links in corresponding tabbed menus

  7. Changed links in Subject Guide page

Aside from a few exceptions, this ended up working pretty well. I hope this is the last time I have to do this...

Wednesday, June 17, 2009

How Do I?

I just finished the "How Do I?" pull-down list on the home page of the new website. I started off thinking I would use an exposed filter in a View and somehow link to taxonomy terms or a specific content type. As I went through this relatively complicated process, I started to realize this at best was making the process way too difficult, and at worst wouldn't do exactly what I wanted.

In the end, I used Douglas County Libraries and Jackson District Library as examples. They both used a form with a pull-down list and an 'onChange' JavaScript command. Since I'm just linking to pages, I'm not even going to use taxonomy or a content type for the information. I'm just going to link directly to the pages.

The neat thing I learned while screwing around with exposed filters in Views, is that you can change "Exposed form in block" to "Yes" in Basic Settings and the exposed filter will show up as a block (NOTE: the exposed filter doesn't show up in the View anymore). This may come in handy for the Branch Locator.

Tuesday, June 16, 2009

Subject Guides, the Final Showdown

Finally, with help from Growing Venture Solutions (GVS), I figured out how to get my subject guide menus to tab. Here's what I did:

  1. Go to any page content type, log in as admin, and use FireBug to track down the style for the edit tabs. In this case, it was the "ul.primary" classes in tabs.css of the Zen theme.

  2. Go to a subject guide and using FireBug narrow down the specific class of the menu style. In this case, I decided to use the ".region-content_top .menu" classes, as all my menus were in the Content Top region and no non-tabbed menus are utilized in that region.

  3. Copy the "ul.primary" classes from tabs.css and paste into your custom theme's main css file. Substitute ".region-content_top .menu" for "ul.primary" and update other sub-classes as necessary.

  4. Copy tab images from Zen/images directory and paste in custom theme's image directory.

This sounds easier than it was to actually accomplish. It definitely took some trial and error on my part to settle everything down, especially with the sub-classes. It's still not perfect, but I pretty happy with the results for the time being.

Now on to the "How Do I?" pull-down menu!

And the winner is... Google Analytics!

After a long, drawn-out analytics software solution process, we have finally made our decision to go with Google Analytics as our web statistics solution. Google Analytics is much more robust than we originally thought and pretty much does everything we need, for FREE!

The other contender was WebTrends, a company that seems to specialize in very large commerce sites. While it seemed we could do all kinds of cool things with this software, the expense and difficulty configuring the software made us think again.

We are very happy with Google Analytics, and are even happier that the process is over!

Tuesday, May 26, 2009

More Subject Guide Mayhem

Lately I've had the vision of using a tabbed menu for PPLD's Subject Guides, much like this example:


I spent some time trying to figure out the best way to do this, including using Quick Tabs module, and trying to use a "template" menu (via variables) that I could plug into corresponding Views, but in the end, the best solution was the simplest:

I made a menu for each Subject Guide and populated it with the corresponding resources. Then I attached each menu to its corresponding resource by assigning them as blocks.

Now I need to figure out how to theme the menus so they display as tabs...

Monday, May 18, 2009

Drupal Library BoF

My coworker Cheryl and I attended the Drupal Libraries Birds of a Feather (BoF) in Denver on May 14. There were a lot of people from a large cross-section of libraries there, including:

  1. Arapahoe Library District

  2. Boulder Public Library

  3. Denver Public Library

  4. Douglas County Libraries

  5. Rangeview Library District

  6. National Center for Atmospheric Research (NCAR) and University Corporation for Atmospheric Research (UCAR)

The gathering was headed up by Greg Knaddison from Growing Venture Solutions and hosted at Denver Open Media.

The group discussed Version Control, Organic Groups, Multi-site configuration, Theming with Zen, and other topics. It was great to see so many libraries drinking the Drupal Kool-Aid (gives a nasty hangover, btw). It was also reassuring to see that several of the libraries had a similar timeline to ours.

Things mentioned at the BoF that I plan to investigate:

  • Feed API in place of Aggregator for Feeds. However, if Aggregator does the trick and is core, then I'll probably just stick with that.

  • Read Version Control section of Leveraging Drupal. Determine best practice, which is not set in stone: Subversion alone, CVS and Subversion, or other. Backup and Migrate module can work for database updates

  • Block Cache Alter module caches blocks on role by role basis

  • Install Profile API module might be a possible staging solution. Greg Knaddison uses this solution

  • Zen Theme - Palantir's Zen cheat sheet

I like the idea of having Library BoFs happen on a regular basis. I hope that pans out!

New Timeline

It's been awhile since I've written, mainly because I've been working on non-redesign projects. The big news is I updated the redesign timeline and have pushed the launch of the redesigned ppld.org back to Summer/Fall 2010. There are a couple of reasons for this, not the least of which is the sheer enormity of the project.

Friday, April 10, 2009

Patron Usability Test 1

We had our first patron usability test on Monday, April 6. We had four subjects. We tested two separately and two together. Granted, they were people we know, so I'm not convinced I got as much constructive criticism as I deserved.

Based on patron feedback, we decided to make the following changes:

  • Make the website fixed width instead of fluid width

  • Rename "All Databases" to "Databases"

  • Put "Magazines/Newspapers" on home page under Research

  • Add "(Search Local Newspapers)" to the Pikes Peak Newsfinder database entry

All in all, this was a very benefical study. However, our next test will involve new questions AND patrons we don't know.

Saturday, April 4, 2009

Growing Venture Solutions, and more!

My colleagues and I met with Growing Venture Solutions yesterday. Steve and Greg helped us optimize our server, double checked our set-up, and gave suggestions on how to handle some of the more complicated tasks are are trying to accomplish. I highly recommend them as consultants for anyone attempting to launch a Drupal website.

Meanwhile, the Usability Hot Team and I are getting ready for our first patron usability test on Monday, April 6. I'll fill you in on all the gory details when it's done.

Tuesday, March 31, 2009

RSS Feeds

Well, I hit a temporary wall with Subject Guides. Mainly, I couldn't figure out how to use Arguments (nid variables) in a block view. However, I've recently conceived of another way to handle the Subject Guides by creating a View that grabs multiple Content Types and displays them by a shared taxonomy term. I think that might work. We meet with Growing Venture Solutions on Thursday, so I'll run it by them for input.

I've also started adding the Classes to the new website. These consist of RSS Feeds from Evanced, which is our Calendar software. It's not perfect, because ideal RSS Feed URLs are sometimes too long for the URL field in the Drupal Aggregator module, but I think it will work mostly well. All I have left to do in Classes is add a "view calendar" link on each feed, with a calendar image you can click on to go directly to Evanced.

Like I said, we meet with Growing Venture Solutions on Thursday and we have some questions they will hopefully be able to help us with. Also, the Usability Hot Team is meeting on Thursday morning to plan our first patron usability test this Monday afternoon.

After all that, I plan to flesh out my Subject Guides idea and crank out the Programs/Events feeds. I'm pedaling as fast as I can!

Saturday, March 21, 2009

Subject Guides

Of course I got a cold after D.C.! So frustrating because I have so much to do. I've come to terms with the fact that I'll be putting in some serious overtime to get this project done in the timeframe that is necessary.

I started the Subject Guides section of "Research" this past week. I plan to take our proprietary databases, recommended websites, related classes and events, and whatever else fits and combine and organize them on one page for easy access, organized by subject. There's a lot of set up involved in this feature, but the outcome will be well worth it.

I've gotten most of our proprietary databases entered, which is step 1 of the process. I'd like to have migrated them, but we've made some major changes that prevent that solution, so hand-entering it is. Hopefully I'll be able to migrate almost everything else.

I plan to come in for a few hours this weekend to finish the job so I can start creating Views by subject.

Monday, March 9, 2009

DrupalCon Recap

Today is my first day back from work after DrupalCon D.C. I had a great time there and learn a lot. Here is a recap:

  1. Day 1 Keynote - Dries Buytaert presented the idea of the internet as one machine, with computers, pdas, cells as views into the machine. Ideally if this were the case, your information would be centralized and you wouldn't have to enter your information on every site. Basically this is the vision for Web 3.0.

  2. Apache Solr - Faceted search system that can search multi-sites and lets you filter by type and weight the results by various criteria, such as content type, date, author, etc. Also, would likely be a hosted solution. Not sure how it works with Views. Google CSE is also a possibility. Will need to investigate library sites that have a multi-search function for the Catalog and see how they do it.

  3. Scaling Drupal - Use YSlow! to determine the speed of your website. Also advice on enabling slow query logs and utilizing load testing and caching techniques.

  4. Front-end and Back-end Optimization - Lots of tips on how to optimize your website. Will definitely need to use these notes as a reference.

  5. Drupal Security - Lots of tips on how to secure your website and server. Will also definitely need to use these notes as a reference. Interesting perspective on the use Full HTML filter,
    parameter, and embeds, all of which we are planning to use on the redesign. Luckily, two of the speakers are our consultants, so I'll be asking them about this.

  6. Taxonomy - There are some really great contrib modules out there that utilize taxonomy, including Synonym module, Vocabulary Index module (lets you browse vocabularies in admin), and Relevant Content module (returns a "more like this" type block for nodes). The actual "more like this" module may be more robust, though.

  7. Drupal Multi-media - ImageField and ImageCache modules are likely the best solution for us. Also some information that will come in handy on the ppld.tv website.

  8. Closing Keynote - Work on something that matters to you more than money. Make the outcome greater than the input. Develop for the long run.

Other really great experiences:

  • Twitter at Drupal

  • IRC at Drupal

  • New Groups: Media, Open Media, Taxonomy, Documentation

  • BoFs: Library, Usability, including a discussion about usability in content entry

  • SoPAC and the need for documentation

  • Documentation Sprint

Things I need to do:

Wednesday, March 4, 2009

DrupalCon 2009 - Day 1

Today was day 1 of DrupalCon D.C. I learn a lot and met a lot of interesting people. One of the people I met, Marjorie, asked me to post my notes from the Advanced Theming Session. Well, I did her one better and posted all my notes in Google Docs. BUT, since Google docs won't let me share my files with everyone (that I know of), I'll just have the post the notes she asked for here:

Advanced Theming Techniques
DrupalCon Day 1 – Session 5
March 4, 2009

.info files

Perfect place to
Add stylesheets
Add regions
Provide default settings
Include javascripts

Function overrides
Useful for work where more logic is required (mitigated by preprocess)
Better performance (function 5 times more efficient (docs)).

Theming at module level

Needed for theming new functionality.

Everything in a theme can be overridden.

Two types of things you can override:
1.Template Files
1.Find the original template in
2.Copy it to your theme
3.Consider using a variant

Preprocess functions are better than template files

Separate logic (PHP) from appearance (HTML)
Less code, less bugs

Overriding theme functions

find the original theme function
Copy and paste into template.php
Rename from theme_HOOK() to name_HOOK

There is no preprocess for theme hooks, but you can modify the function arguments, then call the original theme function.

Warning: a module may have already overridden the original theme_HOOK() functionality.

Find out from the theme registry or theme_exists command.


Makes theming easier

Why a Subtheme?

Exaggerate the defaults
Get closer to the final goal before writing any code
Inherit, inherit, inherit, then override

In Drupal 6, subthemes go in sites/default/themes NOT sites/default/themes/zen/

Use Zen for Subtheming

Is there a good reason not to?
Framework is already set up

Theme Registry

Most theme work never notices the registry except to clear it. Remember to clear your cache!
The rest keeps us up at night

Theming Forms
Forms are a special case
If no custom theming is provided it just uses default theme
If you are theming a specific form, you need to define it in the theme registry

Two ways to do it:

Modify individual form elements
Work around the entire form

http://trellon.com/content/blog/theming-user-register-form-d6 for instructions and example of theming forms.

Marjorie is working on a book about Views for Drupal 5 with PACKT publishing, called Drupal 5 Views Recipes.

Google Docs annoys me...

Monday, March 2, 2009

Content Ho!

Finally I got some content in the new website! I made the PPLD Computers section and the Policies section Book content types, so I can keep the About the Library sub-menu on them but still have a way to navigate through the pages. We'll see how that works out. I need to move the Book navigation menu to the top of the page and I need to assign the book block to somewhere on the pages (its not showing up right now, but it's probably my issue).

Also, tomorrow I leave for DrupalCon in D.C. I'll post some entries at the conference.


Monday, February 23, 2009

Research Hot Team - Also My Heroes!

On Friday, I met with our "Research" Hot Team, which is helping me compile resources for the Research section of our new website. In particular, we focused on the new Subject Guides we're implementing.

We have 27 categories right now, and each include the following resources (if applicable):

  • Databases

  • Recommended Websites

  • Faceted Catalog Searches

  • Programs/Events

  • Classes/Courses

  • Agencies

  • "Did You Know?"

  • Additional Resources (blogs, links to PPLD resources, etc)

The Research Hot Team agreed to help me compile faceted Catalog searches for each category. AND once the subject guides are created, Adult Services staff will be assigned to categories to maintain them.

I'm very excited about this new resource. I think the new website will really benefit from subject guides. Thank goodness for the Research Hot Team!

Wednesday, February 18, 2009

Find a Good Book Hot Team - My Heroes!

This morning I met with our "Find a Good Book" Hot Team, which is helping me organize and layout the Find a Good Book section of our new website.

We've broken this section down into 6 sub-sections:

  1. Award Books

  2. Book Clubs

  3. Genres

  4. Interact

  5. Reading Lists

  6. Recommended Reading

Each section has a ton of resources in it, but I think we got it organized in a usable fashion. We'll do some usability testing to be sure.

It's not all completely clear, but it's a lot closer. Thank goodness for the Find a Good Book Hot Team!

Now, back to the redesign. I may actually be able to get some content in today. Shocking!

Tuesday, February 17, 2009

Catalog Upgrade

This past week, I've been working on customizing and styling our upgraded Catalog. We launched it yesterday and the process seemed to go pretty smoothly. The new look should compliment our redesigned website.

Staff Usability Testing

Last week we tested 4 shelvers and they had some very useful observations for the website. As a result, we made a few changes to the new web:

  • Renamed "eBooks & More" to "eBooks, eAudios, and eVideos".

  • Renamed "News and Media" to "Press Kit".

  • Renamed "Programs" to "Programs/Events" on the main navbar.

  • Added a "Did You Know?" section to About the Library.

I also learned that it's a bad idea to remove an entire block div from the tpl.php files. It's better to just remove the content div instead:


Overall, the Staff Usability Test was a success. We plan to test patrons in late March. I need to get content on the website before then.

Thursday, February 5, 2009

Workflow Module - The Revenge

OK. I think I devised a workaround for the Workflow module issue I was having. Here's what I did:

  1. Created a new workflow just like the old one (well, with one less state).

  2. Edited the new workflow and didn't allow any roles to revert from published (state) to draft (state). I figure if we need to unpublish something, well, we'll unpublish it.

  3. Applied this new workflow to the necessary content types and deleted the original workflow.

Now, if I try to edit a node, it will still revert to draft. However, I think this is because it's a new workflow and it sees the node as being in "creation" state, not published state. It only does this on the initial edit. As long as I'm careful and change the state to published, I think this will be ok. Not exactly a fix, but an improvement.

It'd be great to be able to batch publish a content type, though.

I'll keep an eye on it and document any further weirdness.

Wednesday, February 4, 2009

Workflow Module

I've been pretty frustrated with Workflow module lately. The problem I have is when I edit a node that's already published, the workflow state of that node reverts back to draft. If I don't remember to change the state back to published, the node gets saved as draft. The most annoying part about this is, unless I check the website as an anonymous user, I don't notice the change because I'm logged in as administrator.

I'd like to be able to specify the default state of a node in edit to be its current state. For example, a published node will remain published in editing; a draft node will remain draft in editing; etc.

I've looked all over drupal.org for some guidance on this problem, but no luck. I think I'm going to have to submit an issue and hope someone points me in the right direction.

I hate submitting issues because I'm always afraid I won't do a good job of describing my issue, or worse, the documentation will already exist.

Usability Testing

Yesterday we conducted a usability test "dress rehearsal", using Website Team members as the guinea pigs. The experience was very educational:

  • Mike both the moderator and the subject

  • Keep a laptop in the observation room to make emergency changes

  • Shorter is sweeter

  • If the content you are asking the subject to find doesn't exist yet, stop them and move on when they get to the empty location

  • Provide food

  • Send thank you cards

Our first "official" usability test with staff will be on Monday, February 9.

Also, we plan to set up a trial for WebTrends analytic software on Monday.

Tomorrow I am working on the Catalog upgrade.

I'm actually a bit frustrated right now, because I don't seem to have any time to actually enter content on the new website. I need to get as much content in as possible before the Find a Good Book Hot Team and Research Hot Team meetings on February 18 and 20.

On the bright side, I met with the Denver Public Library web developers for lunch yesterday. It was great to get to know them and talk about our projects. They are redesigning using Drupal as well. I can't wait to see their finished product!

Friday, January 30, 2009

Almost there, sort of

  • I've got most of my modules installed, enabled, and configured.

  • I've got a rough archetecture in place, including menus and taxonomy.

  • I've got home page, research, and find a good book mock-ups.

In short, I'm just about ready to really start creating content types and entering the content. And I think I'm ready for the usability test dress rehearsal on Tuesday.

Thursday, January 29, 2009

Training with Growing Venture Solutions

I attended the Introduction to Drupal 6 training offered by Growing Venture Solutions and learned some useful things:

  • Global Redirect and Path Redirect modules help you link to nodes in the body of a node

  • Synonyms module indexes synomyms in Taxonomy

  • Porter-Stemmer module breaks a search term down to its basic root

  • You can create automated URL aliases using Pathauto

  • Markdown filter may make a good UI for our staff

  • Devel module's Theme developer is a very useful tool for theming

  • It's not hard to add a new region within a theme

  • Module development, while complicated in practice, is not that complicated in theory

  • Don't use PHP Filter, in fact, delete it from the core modules directory

  • Watch your input formats and file permissions

  • Eclipse, FireBug, and YSlow, are good programs for development and performance monitoring

Most importantly, PPLD has decided to hire Growing Venture Solutions on a consultant basis during the redesign. We're thrilled to get help from Greg and his team!


I swear, it seems all I've doing lately is going to meetings, co-ordinating meetings, taking minutes about meetings, and corresponding with meeting attendees.

I've managed investigate a few modules on the side, but as far as actually website content entry and development, no luck. It's actually getting kind of frustrating.

On the bright side the following is in the works:

  1. The Usability Hot Team is conducting a usability test dress rehearsal on Feb 3 to make sure our testing goes smoothly for staff and patrons.

  2. Prototypes for the Research/Subject Guides and Find a Good Books sections of the new website have been approved by their corresponding Hot Teams.

  3. The Research Hot Team and Find a Good Book Hot Team are going to take on the daunting task of organizing and presenting all corresponding resources for those sections. It'll then be my job to construct a method of populating and displaying said resources on the new website.

  4. The Analytics Hot Team is going to test drive WebTrends and investigate Google Analytics.

Whew, quite a lot going on at once, I'll say...

Thursday, January 22, 2009

Pathauto and Custom Breadcrumbs

Today I configured Pathauto URL aliases. In automatic alias settings, I was able to define the URL alias by content type. Instructions on how to do this are in the readme.txt of the module, but I also found good instructions (albeit for an older version) here.

I also installed and fiddled with Custom Breadcrumb module. There is some good documentation here. However, I couldn't get the [menu-raw] and [title-raw] to display the correct URL aliases. For example, if I had a Breadcrumb called Home > Find a Good Book > Book Clubs, it was displayed perfectly in the breadcrumb, but when you click on the breadcrumb, instead of going to find-good-book or find-good-book/book-clubs (the correct URL alias), the URL would continue to point to Find a Good Book or Find a Good Book/Book Clubs as the path, which of course returns a 404 error.

I spoofed the correct URL alias, I just suspect that the "raw" indicator isn't functioning properly in Custom Breadcrumbs. So I disabled the module and will check out Taxonomy Breadcrumb instead and/or talk to Greg if necessary.

Finally, I installed and enabled the Synonym module, which kicks butt. All you do is include synonyms in your taxonomy and they are indexed for the Search box. Sweet.

Tomorrow I have other modules to investigate, then I need to start populating the simple pages.

Moving Along

Well, we're chugging right along on the redesign. My assistant Cheryl created a rough mock-up of the new home page that was approved by our Community Relations Officer (with a few minor changes).

I installed the Workflows module on the new website so that all entries will go to a Draft state and then be proofread and published by Community Relations. Although I can't test the email as SMTP is not enabled on the new server yet.

Taxonomies are fairly well honed for this point in time, and I'm sure they will be further tweaked as the content gets entered.

Bill Thomas, our Usability Hot Team leader, has developed a rough draft of our Usability Test Plan that I haven't had a chance to look at yet, but will at some point today.

Saturday, January 17, 2009

Creating Multi-sites with cPanel

Last week's homework for Growing Venture Solution's Introduction to Drupal 6 presented me with an opportunity to install my first Drupal multi-site on my test website, vfranklyn.com. I don't normally work in a LAMP environment, so this was a real learning experience for me.

Fortunately, Drupal.org's rockin' community had some excellent documentation:

Multi-site setup in 6.x using cPanel

Of course, I had to wait several hours for the domain name to propagate, but hw.vfranklyn.com is up and running (although quite lame as it is a homework assignment.

Monday, January 12, 2009

Creating Multi-sites with WAMP

This is just for my own future knowledge, as I'm sure multi-sites are inevitable:

Multi-Site on Windows

Saturday, January 10, 2009

Drupal Training with Growing Venture Solutions

I'm in Drupal training for the next 3 Saturdays with Growing Venture Solutions. I've upgraded vfranklyn.com to 6.8 so I can use it as a sandbox for the class. Notes I take on this training will likely be found here:


Wednesday, January 7, 2009

I Just Hurt My Brain

While setting up the new website, I notice that PPLD's Web Picks had categories for almost everything. I was initially just going to link to Web Picks, but realizing how huge and encompassing the resource is made me want to incorporate it into Drupal on the initial release of the redesign. We were planning to incorporate it eventually, but I think the website will be so much more robust if we add it right off the bat. It's a huge undertaking on an already huge project, but I think it will be worth it.

Another really cool feature would be to include databases in their related pages. Which means I have to think in terms of taxonomy. Would it be better to have one subject guide taxonomy and one resource type taxonomy? Or should I keep the taxonomies for Web Picks and Research separate?

What's more, should I turn the database categories in Research to subject guides? That way it could include databases, recommended websites, AND catalog searches. If so, how do I handle that taxonomy?

My initial reaction is to make a taxonomy for the Research categories (subject guides), a taxonomy for Web Picks (recommended websites), and a taxonomy for resource type (database, website, catalog search, book title, etc). Yeah. That's it, I think.


Tuesday, January 6, 2009

Getting There

Well, we have most pages and nav elements created on the new website. We've also drawn up a rough home page in Photoshop. We presented the website and home page to the Website Team and they had some good suggestions.

Next we need to add content to the pages, Start on elements that require CCK/Views, develop a Usability Plan, and flesh out the home page (with different color schemes).

Saturday, January 3, 2009

Getting Closer

Well, I came in on a Saturday to get some of this done. Things are coming along almost on schedule now. All I have left is Research, which is the most complicated.

I need to figure out how to remove taxonomy terms from nodes.
I also need to figure out the best way to link to other nodes within a node.

After Research is done, I need to go through everything, make notes and make sure all my descriptions and taxonomy terms are consistant.

Finally, on Monday I need to work with the Web Technician to develop a home page paper prototype for the Web Team meeting on Tuesday.

Friday, January 2, 2009


Man, with all of the menus, pages, blocks, and taxonomy, organizing this website is a handfull. I'm trying to make sure I tag everything with taxonomy and label all my menu items with a description. If an item goes into more than one menu, then I'm trying to keep the description the same throughout.

I'm on Events right now, and am coming into work tomorrow (Saturday) to try to finish this up. Monday I plan to work with the Web Tech on a home page layout.


And now for something completely different

I usually don't get into memes, but I liked this one from Stephen's Lighthouse:


Things you’ve already done: bold
Things you want to do: italicize
Things you haven’t done and don’t want to - leave in plain font

1. Started your own blog. (obviously)
2. Slept under the stars. (back in the hippie days quite a bit)
3. Played in a band. (Colorado Skye pipes and drums!)
4. Visited Hawaii.
5. Watched a meteor shower. (see #2)
6. Given more than you can afford to charity.
7. Been to Disneyland/world. (I grew up in Florida and know Disney World like the back of my hand)
8. Climbed a mountain. (I live and hike in Colorado)
9. Held a praying mantis.
10. Sang a solo. (Thankfully it didn't specify how well, or this might have been a 'no')
11. Bungee jumped.
12. Visited Paris.
13. Watched a lightning storm at sea. (From a boat 'no', from shore 'yes')
14. Taught yourself an art from scratch.
15. Adopted a child.
16. Had food poisoning. (I'll spare you the details)
17. Walked to the top of the Statue of Liberty.
18. Grown your own vegetables.
19. Seen the Mona Lisa in France.
20. Slept on an overnight train.
21. Had a pillow fight. (who hasn't?)
22. Hitch-hiked.
23. Taken a sick day when you’re not ill.
24. Built a snow fort.
25. Held a lamb.
26. Gone skinny dipping. (see #2)
27. Run a marathon.
28. Ridden a gondola in Venice.
29. Seen a total eclipse.
30. Watched a sunrise or sunset.
31. Hit a home run.
32. Been on a cruise.
33. Seen Niagara Falls in person.
34. Visited the birthplace of your ancestors.
35. Seen an Amish community.
36. Taught yourself a new language.
37. Had enough money to be truly satisfied.
38. Seen the Leaning Tower of Pisa in person.
39. Gone rock climbing.
40. Seen Michelangelo’s David in person.
41. Sung Karaoke. (once again, if it had specified how well, this would be a 'no')
42. Seen Old Faithful geyser erupt.
43. Bought a stranger a meal in a restaurant.
44. Visited Africa.
45. Walked on a beach by moonlight. (I'm from Florida)
46. Been transported in an ambulance.
47. Had your portrait painted.
48. Gone deep sea fishing. (see #45)
49. Seen the Sistine chapel in person.
50. Been to the top of the Eiffel Tower in Paris.
51. Gone scuba diving or snorkeling. (see #45)
52. Kissed in the rain.
53. Played in the mud. (see #2)
54. Gone to a drive-in theater.
55. Been in a movie. (assuming short films count)
56. Visited the Great Wall of China.
57. Started a business.
58. Taken a martial arts class (assuming Tai Chi is a martial art)
59. Visited Russia.
60. Served at a soup kitchen.
61. Sold Girl Scout cookies.
62. Gone whale watching.
63. Gotten flowers for no reason.
64. Donated blood.
65. Gone sky diving.
66. Visited a Nazi Concentration Camp.
67. Bounced a check.
68. Flown in a helicopter.
69. Saved a favorite childhood toy.
70. Visited the Lincoln Memorial.
71. Eaten Caviar.
72. Pieced a quilt.
73. Stood in Times Square.
74. Toured the Everglades. (once again, see #45)
75. Been fired from a job.
76. Seen the Changing of the Guard in London.
77. Broken a bone.
78. Been on a speeding motorcycle.
79. Seen the Grand Canyon in person.
80. Published a book.
81. Visited the Vatican.
82. Bought a brand new car.
83. Walked in Jerusalem.
84. Had your picture in the newspaper.
85. Read the entire Bible.
86. Visited the White House.
87. Killed and prepared an animal for eating.
88. Had chickenpox.
89. Saved someone’s life.
90. Sat on a jury.
91. Met someone famous.
92. Joined a book club.
93. Lost a loved one.
94. Had a baby.
95. Seen the Alamo in person.
96. Swam in the Great Salt Lake.
97. Been involved in a law suit.
98. Owned a cell phone.
99. Been stung by a bee.