Printing or Rendering a Node Field or Profile2 Field in Drupal 7

When overriding a node template or user profile, you should not be drilling down the field array and printing the output unless you have a very good reason to do so. i.e. (do not do this) print $node->field_zipcode['und']['0']['value'];

The Drupal 7 field api offers us the field_view_field() function to get a renderable array of the output for a field entity.

Fixing file system permissions

Have you ever shelled into a file system where a bunch of files were executable that should not be? Or maybe permissions are generally a mess?

Typically within a website file system, files should be 644 (owner read/write, group & all just read) and directories should be 755 (owner read/write/execute, group and all just read/execute).

If you don't have any special needs for individual files to be executable, or you just want to start fresh, you can use this method.

Adding a CCK Field to a Custom Form

Recently I wanted to add a CCK combo field into a custom form. Why would you need to do this? Well, my reason was to re-use a combo field with the 'add another item' functionality. Using the node form was not an option.

In this example we have a CCK combo field named "guests". Each guest has a first name, last name, and email address. The content type the guests field is in is my_event.

When adding this code to your form function, the guests field will display just as it does on the node form.

// include the content file

Drupal 7 Get Image Style Path

Today I was working with the new image styles (imagecache) in Drupal 7.

I created a content type with an image field and needed to embed the image style path inside custom HTML for a JQuery slideshow. That was the reason I needed to get the path vs using the theme image function.

The trick was using image_style_url().

$path = image_style_url('home_rotator', $node->field_slideshow_image[LANGUAGE_NONE][0]['uri']);

Drupal 6 to 7, a first glimpse

Today I finally started porting a module over to Drupal 7. I didn't read up in depth on the changes and just dove in and started learning based on the PHP errors and features that were not working.

I'm not going to go into anything too in depth here as there is good information out there already, but I took some notes and will point out some changes I had to make with the module I was working on.

Admin settings path

Spokeo a Spam Source?

About a week ago my sister sent an email out to her family and friends because she was surprised to see her name and former address listed on She advised everyone to de-list their info.

I searched for my name and found normal info that would be public record. I wasn't too alarmed by this and didn't proceed to attempt to de-list my information.

Today however, I was wondering what it took to de-list your name. More specifically, I was wondering if they request email addresses.

Backup the old database before you create a new one

Maybe this is more a 'note to self' than anything else. No matter how much you think you won't need a database when you drop it, just make a backup before you do anyway.

Today for example, there is a server which has 2 environments on it: and The client said they had pending changes on staging. We knew the client was only working on one environment.

So I thought it was safe to copy the staging environment over to dev, and I did!

Adding IDs to all Fieldsets

A themer on a project I was recently working on needed a lot of CSS IDs added to fieldsets throughout the site.

Fortunately, there's a theme_fieldset() function in includes/

I was able to copy that function into the phptemplate.php file, obviously change theme_ to phptempalte_ in the function name, and then add logic that adds an ID based on the fieldset name if an id does not already exist.

Here's the code:

* Format a group of form items.
* @param $element
* An associative array containing the properties of the element.