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 !!

Form field conditionnal display

In this snippet the text field mycustom is only displayed if the value of the select field myoptions is custom

Theme and render

display some content using drupal_render() and theme (this is the official way to use theme function)

Simple block definition

Define and set content into a block. See hook_block_configure and hook_block_save if you want people be able to choose options.

Form declaration (from menu to submit)

Output a simple form, with validation and submit handlers

Jquery file structure declaration

Declare custom jquery code (attached to a theme or module) so that $ selector is available