Putting My Blog Under the Knife

05.08.2010

Its difficult to write about the future of drupal when your blog is a shoddy canibalization of garland that still uses the god damn blog module. It sort of feels like what this guy must feel like when he goes out on a date.

The architecture of this blog is the result of 5 years, 5 versions of drupal, and my own lack of planning, foresight, and purpose. I'm actually not sure how i'm going to resolve all the historical issues I find (my giant stupid taxonomy menus, books that want to be categories, and tables from CCKs first alpha version still lurking...), but hey, maybe that will be something interesting to write about!

In any case, this was the stupidest ending to this post i could think of: Excelsior![1]

Food for Thought: Drupal's Pattern Language

03.24.2010

I particularly liked this cliff notes of a "pattern language":

In a pattern language individual patterns are not isolated. The structure of the language is composed of the links from larger patterns to smaller patterns, together creating a network. Thus, for a single pattern to work fully, it must not only be followed through by implementing the smaller patterns that complete it, it must if at all possible be connected to certain larger patterns.

If you understand how this idea applies to CCK, Views, and Panels implementations, then I respectfully say "respek". Otherwise, my message is: "our goal is to understand the principles that work when working with a  gerryrigged combo of cck,views, and panels; as of now there is no agreed upon 'right way', and this whole  'drupal way' is humbug. Typically 'drupal way' just means 'this is how i do it.' The 'drupal way' is not a systematic approach, and no one knows what it really means." 

:-D

The Classical Style of Drupal Architecture

02.14.2010

Update: The final proposed session is a bit more focused. This is why I pretend there's a method to my madness.

While brainstorming narratives for a presentation for drupalcon on "the practical drupal architect", I started scribling notes about "schools of thought" for drupal architecture.  Interested in whether this kind of high level stuff is even remotely interesting to anyone. An actual presentation will use real websites with labels and overlays and big arrows to illustrate these points of course.

The Classical[1] School of Drupal Architecture 

Prototypical example of Classical Drupal Architecture: whitehouse.gov

From the builder's perspective[2]: 

The classical school is relatively conservative: you might use mini-panels to create clusters of blocks to ease the micromanagement of visibility settings, but not full on panels itself. The classical builder tends to pick modules which are the most tried and true solutions to the sites needs, and rarely uses radical new methods. For this reason, many people will call classical sites "standard implementations" - but the good builder knows there's nothing standard about knowing the right tool for the job.

Hitler Finds Out That Drupal 7 Might Release Without Panels

01.16.2010

Hitler finds out that that Panels might not be ready for Drupal 7.0 at a recent Hitler's Drupal Users meetup.

Note this another Hitler downfall video, which i find to be hilarious

Interested in proving Hitler wrong?

1, Issue for Ctools Update
2. (dependent on ctools update) Issue for panels.

Link to youtube.

A Belligerent Rant on Design Centered Websites with Poor Communication Skills

01.13.2010

Please be seated for my sermon. There's an evil force out there, and its responsible for the majority of failed websites. This force seduces you into focusing too much on questions like:

"Is that the right shade of blue? Would a drop shadow make that element pop? Why do links have to look ugly, can't we tone them down so they bend in better with the design?"

The evil force wants you to focus on those dumb questions so that ignore the really important questions:

40+ Essential Drupal Modules

01.04.2010

If you are new to drupal, then this list is for you. These are some of the best of the best drupal modules. Everything from standard framework modules, to location and mapping is covered. Note that if you've been emersed in drupal for some time, than this will be "old news".

The Big Three

"The big three" are important enough that they deserve a category of their own. Most drupal modules worth using have integrated with one of these three. Their importance simply can't be stressed enough.

  • Content Construction Kit (CCK) - Part of drupal 7; still a contrib in drupal 6. Allows you to define new content types (e.g. blog entry, event, or employee record...) and add "fields" to them. A field could be plain text, an image, a flash video, or whatever. You can also adjust how these fields display in the live view. No drupal install should be without this module.
  • Views - Broadly speaking, this module empowers non programmers to build dynamic streams of content displaying any number of fields. The content may come from nodes (a.k.a. content types and fields), users, system log entries, etc. You can display this stream in any number of formats including RSS feeds, tables, or just the vanilla view for a content type. You can also create pages or blocks -- its very tightly interwoven with drupal. Nearly every drupal module worth using is integrated with this module. Extremely powerful when used in combination with CCK.
  • Panels -

    I believe Panels + CCK & Views is a hint at what drupal will look like 3 years into the future. I had to change my pants after the first time I witnessed it. At a very simple level, you could think of it as a layout manager. Create a 1,2,3 column layout. Or a 3 column layout with a full width footer and header, and plop pieces of content in them -- say a view, a block, or a node. That description, however does not do it justice. Since version 3, its positioned itself as a replacement for drupal core's clunky block system. It can now override a node page, and can be used to place content all over the place. It also introduced a concept of contexts, selections rules, and relationships. These are concepts that deserve a series of blog posts, but lets just say its solving some of the weirdest, mind numbing, bug creating problems found in advanced websites. Ironically, I used to hate this module, but after version 3 I will defend its awesomeness to the death!

jQuery UI ,Drupal, and Behaviors Slides

11.14.2009

Slides from a presentation I did today @ drupal camp austin. Will expand on Drupal.behaviors in a later post.

Note to self: pick an easier topic for next presentation

Switching Drupal tpl.php files at will: Old Switchy McTipplefep's Trick

10.03.2009


One of the first lessons they teach you at the School of Drupal Arts, Arcane Sciences and Sorcery is that a tpl.php can have dynamically generated wildcards or "suggestions". You can see this every day drupal themes: you can simply use the "node.tpl.php" file if you want only one style for a node. Where as if you want different styles for three node types: blog, story & page, you create the following files:

  • node-page.tpl.php
  • node-story.tpl.php
  • node-blog.tpl.php

Obviously, this pattern exists far beyond nodes. For page.tpl.php, user/register can have its own tpl.php file:

  • page-user-register.tpl.php

Where as user/1/edit will be (yes -- these suggestions will remove numbers... i think... i was hung over that day in class):

  • page-user-edit.tpl.php

This may be fine and dandy if your agenda is either to build a simple drupal theme with a few exceptions, or to build manly Texas sized drupal themes with enough tpl.php files, and duplicate html code to choke a donkey.

Old Switchy McTipplefep's trick is for anyone who:

  • wants 3 styles that are shared by 20 blocks
  • wants 4 possible layouts for dozens of pages in a site
  • has 12 node types, but wants them to share 3 styles

The magic happens in your theme's $theme_name . '_preprocess_' . $theme function. Below are examples for how a theme named "example" would do it.

function example_preprocess_node(&$vars) {
  $node = $vars['node'];
 // only switch for story type
  switch($node->type) {
    case 'story':
      $vars['template_files'][] = 'node-batman';
      break;
  }
}

function example_preprocess_block(&$vars) {
  // sure why not -- we'll pass our node.tpl.php file to our block
  // That's how tpl pimpin works sometimes
  $vars['template_files'][] = 'node-batman';
}

Architecture is for Everyone: The Path to a More Humane Drupal API

09.24.2009

Eaton's presentation on Architecture & Drupal is by far the best of the 12 or so drupalcon presentations I've watched so far (they were all good, but this one just seems to stand out). If you missed it, its worth your time.

http://www.archive.org/details/Architectureisforeveryone

Syndicate content