Linux Journal Founder Picks Drupal

A lot of you have been visiting here looking for information on the Drupal web content management system. This is exciting, and I hope to deliver more Drupal-oriented content here in the coming months.

Longtime Linux users should recognize the name Phil Hughes. He founded Linux Journal in 1994 and shepherded the magazine through many lean years, on the road to making it the most important Linux magazine there is. He’s now living in Nicaragua, and building a Geek Ranch. After a fling with webgen, Hughes opted for Drupal for the Geek Ranch website. He explains his reasoning, and offers his (rather simple) process for building the site in this article:

Back to Drupal

Key quote:

After a few days of playing, I am sure I have made the right decision. I found a theme I liked and tweaked it a bit. I added a few more modules and, in general, set up the basic structure of the site. One thing that makes Drupal suitable for something other than a traditional CMS is the ability to set the start page. In addition, the books are a plus as well.

I hope to be sharing a similar story soon. Stay tuned!

Updating openSUSE on the Weekend

Saturday morning is a great day for updating your system. You don’t have corporate systems dominating the servers, and new releases (and the subsequent server hammering) rarely come out on the weekends. It could just be an illusion, but I’ve just always found it just a tad speedier. This weekend, there is a bunch of new things to play with:

It also looks like progress is on the horizon for my once-favorite mail client, Mozilla Thunderbird. Here’s one guy who looks forward to hearing more from Mozilla Messaging.

And just for fun, the annual SXSW Showcasing Artists torrent is ready for 2008 (download link).

One tip on updating in openSUSE 10.3: Online Update really only gets you bug fixes for your installed applications. If you’re interested in keeping up with  the latest and greatest versions of your software, go to YaST Software Management. When the Search screen opens, go to the Package menu. Go to All Packages. You’ll see a pair of Update choices: “if newer version available” or “unconditionally.” Usually you’ll want to just get the newer version. YaST will then tell you how many packages will be updated, which can number in the hundreds, but don’t panic. You’ll get to review the list of updates, and deselect any packages you don’t want to update now. Click Accept, and the normal download/install process begins.

Happy updating!

More on the Advanced Side of DrupalCamp

Here’s another look at DrupalCamp Wisconsin from Larry Garfield’s GarfieldTech blog. He seems to have had as much fun as I did.

As befits someone of his standing in the community, he spent most of his time in the Advanced track, so if you’ve read my notes, you’ll get a more complete experience reading his comments.

Now to tackle my own Drupal site. It has suddenly become much closer to reality after this weekend.

Powered by ScribeFire.

DrupalCampWisconsin: A Summary

What a terrific day it was at DrupalCampWisconsin yesterday! An excellent turnout from all over the Midwest, fine sessions, and good company all day long, and into the night.

If you weren’t able to attend (and maybe even if you did), you’ll find interesting stuff on the wiki. The Flickr feed is here. You can view a bit of the video feed at UStream as well.

For your convenience, here’s a list of my session notes of the “newbie track,” liveblogged yesterday. I’ve cleaned them up a little, and added pertinent links.

A full day, by anyone’s standards. With more stuff for the more advanced folks.

It was great to meet so many folks, and talk Linux, Drupal, and other geeky topics. Thanks to the Web414 crew who organized it, the sponsors who fed us all often and well, Bucketworks for hosting the after-party and everyone who came out in the cold.

Powered by ScribeFire.

Drupal Theming 101

(Update: This is the last in a series (except for the summary) of live posts from DrupalCampWisconsin, with a little cleanup and added links.)

Blake Hall presents.

The professor ran late, so no break between 100 and 101. Blake made this presentation to the Madison PHP Meetup a few days ago. Also stolen from Pro Drupal Development.

Three Theme Engines in Drupal: PHPTal, Smarty (CiviCRM), TPL (Core)+Template.php

Blake is porting a WordPress theme into Drupal. See for what’s “nearly there.”

Every time I hear Blake give a presentation, he always says “the next version is way better.” So it is with Drupal v6, especially in theming.

Larry Garfield picks up with “what’s new in v6.”

Aim: Theming Nirvana. Not there yet.

v4.5: Theming Hell
v4.6: Purgatory, aka Xtemplate
v4.7: Limbo, aka PHPtemplate. Page, node, block and comment templates. Currently the dominant engine.
v5.0: No changes
v6: Pure CSS themes, drive toward separating out presentation. Info files create themes.

Displays the structure of Info files: Stylesheets, scripts, regions, features.

More granular control over content. Data sanitized; fewer inadvertent security holes.

Some code comparisons. Way better.

v6 offers theme inheritance. Set base theme, make whatever changes you want. Use well-named classes to identify areas (though not yet complete).

Template engine is now just a set of tags.

Time to show some code! (Writes 4 lines into This is a naked Drupal. No Divs, no Tables, a semantic page. Adds another line: base theme = garland. Looks like Garland (standard theme).

Adds another line to reference a stylesheet. To override an existing stylesheet, reference the same name as the existing stylesheet in the Info file.

Default node template: node.tpl.php. Copy file into your site and modify (un-comment) as you wish.

Cool stuff!

There is one more session scheduled, but this reporter’s brain is getting full. I believe I’m going to call it a day, blogging-wise. I’ve got some summary ideas, which I’ll share when I get refreshed. I’ll also add links and otherwise make pretty. Thanks for reading along. Please comment as the spirit moves.

Powered by ScribeFire.

After Dinner: Web Standards 100

(Update:  This is the eighth in a series of live posts from DrupalCampWisconsin, with a little cleanup and added links.)

Steven Merrill, Bradley U professor presents.

After a fine pizza dinner, we are having joint sessions on theming. It begins with a web standards lecture from Prof. Merrill.

Zeldman (Designing with Web Standards)
Web Designer’s Reference
Save the Pixel

A List Apart
CSS Zen Garden

Basic review of HTML history, from Vannevar Bush’s Memex to Tim Berners-Lee.

HTML Page Structure: Head and Body. That’s it.
HTML Grammar: Tags and Attributes

Page titles are important, especially with tabbed browsers. Google also searches page titles.

Point behind web standards: Understanding the separation between HTML (Structure), CSS (Presentation) and JavaScript (Interactivity). Peruse CSS Zen Garden to see how different stylesheets display identical HTML text and tags.

Ooh, screen shot of the original Mosaic home page.

Browser feature wars makes HTML more presentational, less semantic. Also made pages work in only one browser. Web standards represent the backlash: Semantic HTML.

Switchy McLayout: JavaScript handles many different screen sizes. From A List Apart.

(Crowd agrees: presentation so far too basic. Moving on to advanced elements)

<Typist’s Aside: Is there a real purpose to>

CSS Positioning: Floating, fixed, and something else.

<Typist’s second aside: Missed some of the important stuff due to being pinged on IRC. I admire those who can multitask in this fashion. Meanwhile, must look at video later.>

Powered by ScribeFire.

Ubercart: An e-Commerce module

(Update:  This is the seventh in a series of live posts from DrupalCampWisconsin, with a little cleanup and added links.) 

David Needham, a Bradley University student presents.

Ubercart works with PayPal to drive purchases.

Single package includes a core set of fields, with -extra, -fulfillment and -payment options.

Pet store example

Product Catalog: Dogs, other
Create options (Leather and Gold collars)
Create a Dog: Dalmatian. Include image, define a SKU, list price, cost, height, weight, etc.
Add Options to Product page.

Can create roles for a store, like a “member” who registers for discounts. Tried to find the setting that notifies the expiring member to renew; not in Notifications, but it’s here somewhere.

Set access control by taxonomy for “members only.”

Add Shopping Cart block to page.

Shows his PayPal Test Accounts.

Store Management in Ubercart activates the page, pointing to the PayPal Sandbox (test account).
PayPal Test Store page is customizable.

“Hey, I’m a member!”

Visit to see the store.

Google Checkout: Not supported yet.

Pete Prodoehl notes the Ubercart docs are excellent.

You can create bundled ‘product kits’ for multiple items. Should work for tickets too.

Ubercart handles inventory management.

Both David and Pete couldn’t get core e-commerce module to work, and went to Ubercart instead. Others found OSCart much more hassle. ZenCart “just about impossible to train” (James Carlson).

You can also visit to try it out.

Powered by ScribeFire.

Podcasting with Drupal

(Update:  This is the sixth in a series of live posts from DrupalCampWisconsin, with a little cleanup and added links.) 

Gabe Wollenburg presents.

We’re content creators, not “podcasters.” We write for audiences, not media.

Gabe’s way

Free hosting for Photos, Audio, Video, Live Streaming, Documents
These services are outside the walled garden of your site. Tags and other metadata bring people to your site.
Server problems are Somebody Else’s Problem.

Problems: Outside your control. Backup is hard. Availability is Somebody Else’s Problem. Take care of copyright issues (YouTube takes all rights, doesn’t).

Drupal makes all this easy.
Drupal makes RSS for breakfast.

Audio module: creates individual audio nodes.
Need Views and some other parts.



Audio module sends your podcast to the iTunes directory, with appropriate tags.

Remote Enclosure module. Limited use.

Blake suggests CCK Embedded Media for exploration. We look at that, and it sure seems like the right thing.

Let’s create some content!

Gabe posts Jonathan Coulton’s Code Monkey to Cover art shows up funny, but you can presumably tweak that.

Still a lot of room for improvement, but I’ll probably learn more too.

You can find another fine podcast at Web414.

Again, the question of how to find “the right module” comes up. This may be what Dries’ company may help with. As noted in the opening session, this is an ongoing discussion and need. How to do this right?

Blake: Check out Lullabot’s “50 Tips and Tricks” podcast.

Powered by ScribeFire.

Drupal Views in depth

(Update:  This is the fifth in a series of live posts from DrupalCampWisconsin, with a little cleanup and added links. As I look over these notes, the “in depth” part of the title may be somewhat misleading. Blake’s presentation was much better than these notes may indicate. Must have been tired and/or hungry.)

Blake Hall presents. Promises we will probably reach his knowledge ceiling, but muddle through eventually.

Views don’t seem like much in description, until you use them.

Example: BarCampMilwaukee2 site.

Views “cross-grid” module

68 Views modules.

Provide Page View / Provide Block View.

Select fields and nodes to include in the View.

Generator module puts fake text in blocks to test.

Lots of other fun.

<Typist’s Note: Starting to drag a little. Missing stuff.>

Powered by ScribeFire.

What is the Content Construction Kit?

(Update:  This is the fourth in a series of live posts from DrupalCampWisconsin, with a little cleanup and added links. This was a very meaty HOWTO presentation, making it hard for my fingers to keep up. My apologies if you find this confusing.) 

Karen Stevenson (KarenS) presents.

Content Type in Drupal out-of-box = Title and Body
CCK: All kinds of stuff.

Download the core package first. Worry about the other 107 CCK modules later.

<Typist’s Note: She’s moving really fast, so this only gives you a taste of how to do these subsequent steps! MM>

Creating a Wish List: No code created. CCK creates the custom form, stores the data and creates its own tables.

Add another field: Label, Help Text. Different fields depending on type.

Display Field tab shows how your type will appear on the page. Layout for Label, Teaser, Full Node is editable in this tab.

Let’s make a Select List instead of a text form.

If you change the Widget type, you have to re-save/re-edit the field. This may change in Drupal 6.

Add a phone number to any existing content type: Go to Add Field in the type you want to, select the phone number from the drop-down menu.

CCK works best with Views, so be sure to pull that too.

Add CCK Type to another site. Use Content Copy piece to Export type. Copy the resulting code into the other site.

Someday all of CCK will migrate into core Drupal. Each new Drupal version gets some more.

Even if you’re a developer, this will make your life simpler.

Site made entirely with CCK and Views:

Event, Results, Fisherman, Team: Different content types. Pages are just Views of the same data.

Powered by ScribeFire.