drupal

05 Mar

Tek-X Webcast: A Developer's Intro to Drupal

in drupal, php

On March 12, 2010, I will be online with the folks from Tek-X giving a webcast on A Developer's Intro to Drupal. If you're just getting your feet wet with Drupal and are still a little confused about hooks, modules, themes, nodes, or even why Drupal isn't (fully) Object-Oriented, then this session is for you.
Tek-X Drupal WebcastTek-X Drupal Webcast

16 Feb

Using BetterAWStats in Drupal

in drupal, php, system administration

Our current environment uses AWStats to analyze our HTTP server log files and build reports. Because it has privileged access to our data, and because it is open source, we can glean more information out of it than we could from proprietary hosted analytics platforms.

It turns out that there is a PHP front-end to AWStats (called BetterAWStats) that comes complete with a Drupal module. Here, I explain how we've installed and configured this module to get our AWStats data imported into our Atrium server.

15 Feb

5 Differences: Moving from XML Sitemap module to Google's Sitemap Generators

in drupal, google, python, seo, sitemap, xml

For a large site that I maintain, we recently disabled the XML Sitemap module (we're using the 1.x branch) and switched to the Google Sitemap Generators tool (the Python one). We have noticed a few unsurprising things, and a few very surprising things.

We identified five big differences (all positive) that we have seen since moving to the Google Sitemap Generators Python tool.

11 Feb

Downtime-free Drupal Migration

in drupal, linux, nginx, system administration

In Jauary we migrated a Drupal site that routinely has 40k+ hits per day. We moved the site from servers in the Pacific Northwest to a datacenter in Virginia. As if that wasn't enough, we moved the servers from Apache to Nginx, as well. But what makes this remarkable to me is that we managed to pull this off without so much as a minute of downtime. This blog explains how we did it (and it uses lots of pretty diagrams, too!).

27 Jan

OpenAmplify Drupal Series: Part 2 - Building a Mini Portal

in drupal, openamplify, php, programming

The Second in my three-part series on Drupal an OpenAmplify has been published on their community site. If you missed the first part, you may want to start there. Part three, coming soon, will cover the API, and will focus on development instead of configuration.
Part 2Part 2
In part two, I walk through the process of building a "mini portal" by taking semantic information returned from an OpenAmplify analysis of a node, and using that information in conjunction with other web services. For this demonstration, I released a new version of the module, and added support for Shopping.Com and Bloglines, both of which can return some impressively rich content.

13 Jan

OpenAmplify Drupal Series: Part 1 - The Amplify Module

in drupal, openamplify, programming

Over at OpenAmplify's Community site, they are running Part 1 of a three-part series I've written about using OpenAmplify with Drupal.
Open AmplifyOpen Amplify
The first part covers the basics of using Acquia Drupal and the Amplify module to perform semantic analysis of your content.

30 Nov

Dave Hall: Review of "Drupal 6, JavaScript, and jQuery"

in books, drupal, javascript, jquery

Dave Hall recently reviewed my Drupal 6, JavaScript, and jQuery book.

Dave Hall's BlogDave Hall's Blog

I found this observation particularly apt:

This book is definitely not for the copy and paste coder, nor the developer who just wants ready made solutions they can quickly hack into an existing project. Some may disagree, but I think this is a real positive of this book. Matt uses the examples to illustrate certain concepts or features which he wants the reader to understand. I found the examples got me thinking about what I wanted to use JS and jQuery for in my Drupal sites.

This is what I want to accomplish in the book. My goal is to get coders thinking about what they can do (and how they can do it) rather than simply re-using code. I'm so glad that Dave noticed this and brought it into focus. If you are interested in taking a peek at the book, you can download one of the chapters.

20 Nov

QueryPath Performance Optimizations on Reduncery

in drupal, php, programming, querypath, reduncery, twitter

Continuing a trend on the non-evilness of optimization, this article discusses some methods of improving performance in QueryPath.

Early this week, a Twitter analysis tool called Reduncery was launched by a friend of mine. Reduncery calculates how much of a "redunce" a particular user is -- that is, what percentage of a user's tweets are retweets (RT). It can also calculate how ineffective it is for one person to retweet another. In this case, it calculates the overlap in the followers of the original tweeter with the followers of the retweeter. In what follows, we will look at the ways Reduncery optimizes QueryPath to keep page load times down.

06 Nov

Using Flashy to Play Video inside Lightbox2

in drupal, flashy, javascript, lightbox, swfembed, swfembed.module

By default, the Drupal Lightbox2 module supports the flvPlayer flash movie player, which is not Open Source. However, Drupal has a 100% Open Source video player called Flashy. Here's a quick method of overriding Lightbox's setup to use Flashy instead of flvPlayer. Update: Fixed for Internet Explorer.

25 Sep

A Simple Pattern for Importing Images

in drupal, module development, php

When migrating legacy sites into Drupal, one challenging issue is importing images. The CCK imagefield module is one of the most popular ways to store images in Drupal 6, and we at Palantir.net use it on all of our production sites. This short tutorial shows you how to write a quick importer that can copy existing images into Drupal's files directory and then attach the image to a node using the CCK filefield. You might use this strategy within a larger importer (perhaps driven by Drupal's Batch API).

Here's a quick pattern that I've now successfully used to transform an existing image into a Drupal-controlled image stored in a CCK field.