Properly render a field

Drupal offers a few (sometimes complicated...) solutions to output a field. Lets take an example with a date field.
To display the full rendered field: field_view_field()

  1. $mydate = field_view_field('node', $node, 'field_mydate');
  2. print render($mydate);
  3.  
  4. /*display
  5. <div class="field field-name-field-mydate field-type-date field-label-above">
  6.   <div class="field-label">Date:</div>
  7.   <div class="field-items">
  8.   <div class="field-item even">
  9.   <span class="date-display-single">Wednesday, 10 October, 2012</span>
  10.   </div>
  11.   </div>
  12. </div>
  13. */

note: default wrappers will be displayed (even if you choose to not display the label in the display settings for instance...)
to choose a different formatter than the default one

  1. $mydate = field_view_field('node', $node, 'field_mydate', array('type'=>'my_custom_one');

To display the raw value of the field: field_get_items()

  1. $mydate = field_get_items('node', $node, 'field_mydate');
  2. print $mydate[0]['value'];
  3. //display 2012-10-10T00:00:00

will display the value as it exists on the db. Can be useful for strings.

To display the formatted value, without any < div >: field_view_value()

  1. $mydate = field_get_items('node', $node, 'field_mydate');
  2. $output = field_view_value('node', $node, 'field_mydate' , $mydate[0]);
  3. print $output['#markup']; //for files use render($output);
  4. //display <span class="date-display-single">Wednesday, 10 October, 2012</span>

will display the formatted value, with only a surrounding span.
note: you can specify a formatter to display an image with a preset

  1. $output = field_view_value('node', $node, 'field_myimage', $myimage[0], array(
  2. 'type' => 'image',
  3. 'settings' => array(
  4. 'image_style' => 'thumbnail',
  5. 'image_link' => 'content',
  6. ),
  7. ));

not so easy !!

Display errors - WSOD

The bootstrap override the values you could set to display error ad the reporting level. To be 100% sure everything is printed out when something fails in a blank screen (wsod), make index.php like this:

Properly render a field

Drupal offers a few (sometimes complicated...) solutions to output a field. Lets take an example with a date field.
To display the full rendered field: field_view_field()

Using once()

ensure ajax reload don't apply the behaviours for items already processed

Change the theme

Programmatically change the theme on runtime by implementing hook_custom_theme()

Manually clear caches

for views and panels

Add a Jquery ui library

get the library names to use in /misc/ui folder

Embed a custom page

Get the rendered output of a custom page created with page manager (ctools) module

Embed a mini panel

Get the html output of a mini-panel

alter / automatize the install process

in the .profile file of the install profile (here "mysnippet" profile)

Aegir: perform custom tasks after a new site is installed

in a custom module, in a file called mysnippet.drush.inc (keep in mind that the install process is handled by drush...)