Drupal theming: Get field values in Drupal 7

Drupal 7 has another array structure for storing field values in $node. There is a new array key for the language.
For example:

<?php
$node->field_your_field['en'][0]['value'];
?>

 
This can be quite useful but makes it difficult to access the right data.
So here is a handy solution:

<?php
$items = field_get_items('node', $node, 'field_yourfield', $node->language);
?>

 
You can leave the $node->language argument empty. If done the current language will be called automatically:

<?php
$items = field_get_items('node', $node, 'field_yourfield');
?>

 
As a result you get an array like you had in Drupal 6. Cool, isn't it?
But be aware that you have to take care about sanitisation when using raw values like this!

Update: When you just want to display a single field value using field formatters (with all the provided html) and sanitation included you should use:

<?php
$items = field_get_items('node', $node, 'field_yourfield');
$output = field_view_value('node', $node, 'field_yourfield', $items[$delta]);
?>

 
Where $delta is 0 in case you have just a singular field.

Links:
http://api.drupal.org/api/function/field_view_value/7
http://api.drupal.org/api/function/field_view_field/7
http://api.drupal.org/api/function/render/7





Powered by Drupal7