UMW Blogs Taxidermy

I’ve been meaning to blog for a while on the “soft” launch this fall of a new look for UMW Blogs. It had been two years since we last redesigned the home page for the site, and in those years several pieces of the page had broken (due to outdated plugins).

This summer, I spent some time building a new theme more or less from scratch for the site and it allowed me to improve some features as well as learn a few new things.

Out with the Old. . .

To start with, I decided to build the new theme on top of theĀ 960 grid system. I’ve been using it off and on for about a year on some other sites, and have come to love how simple it makes layout. I know it adds a bit of extra code to the site, but it’s far less code than we all used to use with tables, and, from a developer’s standpoint (at least THIS developer’s standpoint), it’s worth it.

Jim and I spent an hour or so one morning early this summer brainstorming the overall layout of the site. We decided to keep the animated, tabbed menu but we cut some of the tabs that were pointing to pages that no longer exist (due to a failed experiment with BuddyPress).

We also decided we wanted to keep the featured post slide show, but we wanted to get away from Featurific. It’s an okay plugin, but we hated the branding watermark and that fact that it was Flash-based.

Most of the other elements stayed — the search box for the whole install of UMW Blogs, the Flickr photos (a gallery of public images tagged with “University of Mary Washington”), the featured sites, and the latest posts. We eliminated the tag cloud because it just had never been very meaningful as a way to find stuff on the site.

A bunch of the features that remained got a makeover behind the scenes.

I migrated the horizontal navigation bar out of the MooTools based javascript that we had used in the past. It had been the reason why we ended up using Featurific for our slideshow — tje MooTools menu created conflicts with other javascript-based slideshows we tried to use. I settled on a jQuery zAccordion plugin.

For the featured posts slideshow, I used another jQuery script. This one by Soh Tanaka. You can find a great tutorial about how to set up a slideshow like this here. For kicks, I also created a custom admin page for the theme to choose the category to go into the slideshow. This was my first foray into creating a custom admin page for a theme, so, yay me.

A small thing that I changed that makes some maintenance of the site a bit easier. I migrated the “Featured Sites” which had been hard-coded in the previous site (Yikes!) into WP links in a designated category. It’s much easier to add/remove sites now.

By far, however, the biggest change to the site was the “Latest Posts” feature. We had been using the Sitewide “three-in-one” Multi Widget that was released for WPMU years ago. (No longer available, it seems). This plugin worked in conjunction with Donncha’s Sitewide Tags plugin. Basically, SiteWide Tags sets up a single blog to which any public post that is published on UMW Blogs is republished. Then the Three-in-One Multiwidget checks that blog for the latest posts across the system. It seemed to be working fine, but in researching the entire issue of showing site-wide posts, I stumbled upon the fact that the widget was using the “switch_to_blog” function to get posts from the Sitewide Tags blog. I did a bit of digging and discovered there was some controversy about the wisdom of using this plugin, particularly on a page that gets hit frequently. (The WP Codex actually has the function marked as deprecated.)

I asked around on Twitter about the best way to aggregate posts around the site for display on the home page. Another option would be to use the RSS feed that we get from our the Sitewide Tags blog, but as some pointed out, it doesn’t make sense to be using RSS to syndicate content that is within the same database. (Although, frankly, we do it all the time with FeedWordpress, but that’s another conversation.)

At some point, the fabulous Boone B. Gorges suggested that another option would be to store an array of recent posts somewhere. Essentially, each time a post is published, some information about it would be stored in an array in a global table. And, each time a new post is added, the earliest post stored is dropped, essentially keeping that array manageable.

I thought that sounded very nice. But I had no idea how to do it. So Boone did it for me!

Seriously, in about an hour he built me a “proof of concept” which was a lot more “proof” than “concept.” I spent some time tweaking it (and begging help from UMW’s own Curtiss Grymala to address a few nuances). We needed to check that updates to posts weren’t added to the array and we needed to check a blog’s privacy settings before adding the post to the array. (At this point, we still have a problem with posts that are syndicated elsewhere in UMW Blogs showing up multiple times, so that’s on my list of things to fix.) The plugin is FAR from primetime, but if you want to take a look (and improve upon it!), here’s the code. IMPORTANT NOTE: Any piece of this code that is well-crafted and awesome is from Boone or Curtiss. The rest is all my fault.

But the best part of this whole thing was that since redoing the home page and changing out the latest posts widget, UMW Blogs has had NO downtime. We’re seriously speculating that the old widget and the use of switch_to_blog may have been a significant part of our problems in the past.

The final pieces of ALL of this came together when DTLT’s latest staff member Tim Owens arrived on the scene. I had the page pretty well framed out, but hadn’t spent much time on the actual design. Tim spent a day or two changing out images and generally making everything look awesome.

. . .in with the new.

So, that’s how we skin an institutional blogging platform here at UMW. Shazam.

One thought on “UMW Blogs Taxidermy”

  1. Martha,
    We just did a similar thing with our “home feed” of latest posts, moving away from a plugin which fed from the global blog and to querying the DB directly. I think I’ve got it fairly well optimized with caching and ignoring dupes. Let me know if you’d like to check out the code. It’s a variation of another bit of code I did which I actually do have posted at

    We’ve been liking the new look of your home blog, by the way. It certainly is a lot cleaner and more functional.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.