Streamlining the Blogging Experience with Drupal

mac stillness

Photo by david pham.

In my previous post I spoke of WordCamp Vancouver, a blogging event that inspired me plenty. One of the things I realized was that the process of writing these blog posts could be smoother. Two tools of note:

WordPress's quicktags is like your typical rich-text editor's buttons, actually. You click "B" and it puts <b></b> tags around the current selection. Since I really don't mind typing such short tags it's not terribly useful for me, but it's great for long and repetitive elements like my external links:

<a href="http://example.com" class="external" rel="external">Example</a>

The Flickr Photo Album plugin lets you easily embed content from Flickr in your blog posts. It saves you the trouble of visiting the Flickr website and copying and pasting chunks of HTML.

Drupal's Quicktags and Flickr modules

Unfortunately for me, these are WordPress tools (it was a WP camp after all) but the Drupal community's got a couple modules of their own which, together, can perform the same feat. The modules in question:

The Quicktags module basically ports the WordPress functionality to Drupal. The module also provides hooks that make it easy for module developers to add custom quicktags to the menu.

The Flickr module defines a filter for converting macros like [flickr-photo:id=123456789,size=m] into HTML which displays a particular Flickr image.

Implementing custom quicktags

Making custom quicktags does take a little bit of Drupal know-how. Once you've installed the quicktags module you'll need to create a custom module by filling out a .info file and placing it in a folder under /modules. Check out the module developer's guide for details on this.

Now, create the .module file in the same folder and write a single function, MODULE_NAME_quicktags_insert. This function will be called when Drupal's planning to display some quicktag buttons and it's your chance to return any buttons you want to have added to the list.

function MODULE_NAME_quicktags_insert()
{
  $iconBasePath = base_path()
    . drupal_get_path('module','MODULE_NAME')
    . '/quicktag_icons';
 
  $items = array
  (
    // add a new element to $items for each quicktag you want to add
    'anchor_external' => array
    (
      // the display name of the quicktag.  this appears on mouse over,
      // or if there is no icon file
      'name' => 'External link',
 
      // this is the string that will appear before the selection when 
      // the quicktag button is clicked.
      'prefix' => '<a href="" class="external" rel="external">',
 
      // this string appears after the selection when the quicktag button
      // is clicked
      'suffix' => '</a>',
 
      // the weight determines the order of the buttons
      'weight' => 75,
 
      // the URL of the icon for the quicktag
      'icon' => "$iconBasePath/anchor_external.png"
    )
  );
  return $items;
}

Now you can click the "External Link" quicktag button and the anchor HTML will automagically be added. Just don't forget to fill out the href attribute.

Next time I'll show you how to easily add Flickr photos to your blog posts, complete with author credit.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • You can enable syntax highlighting of source code with the following tags: <code>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

About

Daniel McLaren

Daniel is a Flash and Flex developer specializing in the art of information visualization.

Latest from SketchyD

Latest Drawing from SketchyD

This is the most recent drawing from my mobile sketch blog, SketchyD.com.

Recent comments