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.

Drupal for Users

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

Steve Hanson is presenting this session: A Quick Course to get you started with using Drupal.

Drupal developers should probably find someone else to blog for them. I’ll be in the newbie sessions the rest of the day.

CMS: Content goes into database, allows you to slice and dice content the way you want it.

Among other things, Drupal applies a consistent look to your site, which may not always be what you want.

Drupal is a plumbing kit for web applications, not really an application by itself.

Glossary of Drupal Terms: Nodes, Comments, Taxonomy (categories), Modules (optional functionality), Blocks/Regions/Templates/Themes (layouts)

More on taxonomy: Steve edits Uppity Wisconsin, a political blog. Vocabulary is a collection of taxonomies. Taxonomies are permanent parts of the site, tags are ad hoc and can be added by authors. Ads (from implemented in a block.

James Carlson asks about differences between page and story. Steve says not too much anymore. Pages originally were static, didn’t allow comments.

Blogs are for individuals. Book pages are hierarchical pages. You have to create the book page before you have the structure.

Blogs: Aggregator is in 5.x core. Teaser text or full text. There are four modules that can turn aggregated posts into nodes on your site. Each has a strength for some particular purpose, so he can’t recommend one specifically.

Making your own content types: Separate Modules exist for audio, video, events. CCK (Content Construction Kit) makes that much easier.

WYSIWIG Editors: TinyMCE (Steve’s fave), FckEditor, many more in recent months. Can use external editors too. Editors often require installing a module, then the editor on top due to licensing.

More on CCK: Allows reuse of data constructs, making it a lot easier for non-developers to create content types (thus, the Content Construction Kit).

Views: Backend of CCK. Complicated queries of the database. See for an example. You can build views to add RSS feed, send stuff to Google Calendar, etc. More on this in the next two sessions.

Date and Calendar: Talk to KarenS later. Build programming schedules for TV/radio stations.

Panels: Really Neat! Looks like portal. Aggregate different views and other content types. Grid to pull in layouts. AJAX-oriented, does themes too.

Everyone asks about Steve’s spiffy toolbar: admin_menu module.

Plug for Handbooks.

Discussion of how to layer security properly. It can get complex, especially with CiviCRM. Can create UserNode.

Next Up: CCK for users!

Powered by ScribeFire.

Drupal Ecosystem

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

One mass intro session on the Drupal Ecosystem. Larry Garfield (aka crell) presenting.

IRC Freenode
#drupal (project)
#Drupal-Support (help)

Drupal Working Groups: Regional and project-oriented. How to get active in the community. “If you are willing to help and be helped, the Drupal community can be amazing.” Open and supportive.

Example: Angie Byron doesn’t do much code, but practically everything else. Laptop was stolen from her car at a conference. community donated enough $$ to buy new laptop in 48 hours.

Drupal Association: Steward of the Drupal Ecosystem. Manages, organizes conferences, let the coders code. 25 permanent members, led by 9-member board, including this person. 22 euros ($50) gets you (as an individual) in.

DrupalDojo active help on specific topics, on IRC Sundays. Informal webcast.

Drupal welcomes women into the project; ~15% participation.

Security is a showstopper when patches are contributed. Active security team working through core and contributed packages. Rasmus Lerdorf (PHP author) searched forever to find some hole, and eventually found a really obscure spot.

DrupalCon Boston, scheduled for March 3-6, 2008 is expected to be the largest and longest yet, 4 days of sessions for all skill levels. If there’s something you want to see, blog about it, let me know.

Question about searching forums: Forums are big! Look for the issue queue on specific issues with specific modules (KarenS).

No place (yet) for comparing similar modules. When in doubt, pick a module that use other APIs (CCK, Views). James Carlson: It’s evolving in a rational, orderly fashion (yes).

Comment: Using to compare different CMSs as well. It would be nice to have this for Drupal modules. Crell: Module ratings have been considered, and are in the works. Question is how to do it right. Maturity is a good sign too. Check for a group on the module/topic. Use Views and CCK as far as you can, then use advanced search on projects for useful modules.

#drupalsupport a good place to find a good rich-text editor, among other things. Karen: Starting to get good “site recipes” to produce different types of sites. If you do something really well, post to Drupal Showcase forum. has a higher Google pagerank than Slashdot (but traffic won’t bring you down–Drupal can handle the spike)!

Bug reporting process: Larry submits a bug to CCK.

Great opener!

Powered by ScribeFire.