Advertisement
jamesan

Drupal 7: Utility Functions to fetch field values

Feb 19th, 2015
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.67 KB | None | 0 0
  1. function views_entity_fields($view_name, $view_display_id = 'default', $field_names = array()) {
  2.     // Fetch Views metadata.
  3.     $view = views_get_view($view_name);
  4.     $results = views_get_view_result($view_name, $view_display_id);
  5.     $entity_type = $view->base_table;
  6.     $entity_key = $view->base_field;
  7.  
  8.     // Fetch Views-selected entities.
  9.     $entity_ids = array();
  10.     foreach ($results as $result) {
  11.       $entity_ids[] = $result->$entity_key;
  12.     }
  13.     $entities = entity_load($entity_type, $entity_ids);
  14.  
  15.     // Fetch renderable array and rendered values of each named field and selected entity.
  16.     $entities_data = array();
  17.     foreach($entities as $entity) {
  18.       $entity_data = array();
  19.       foreach ($field_names as $field_name) {
  20.         $field_items = field_get_items($entity_type, $entity, $field_name);
  21.         $field_values = array();
  22.         foreach($field_items as $field_item) {
  23.           $field_value = field_view_value($entity_type, $entity, $field_name, $field_item);
  24.           $field_value['#render'] = render($field_value);
  25.           $field_values[] = $field_value;
  26.         }
  27.         $entity_data[$field_name] = $field_values;
  28.       }
  29.       $entities_data[] = $entity_data;
  30.     }
  31.     return $entities_data;
  32. }
  33.  
  34. function get_bundle_field_names($bundle_type, $entity_type = 'node') {
  35.     $field_map = field_info_field_map();
  36.     $field_names = array();
  37.     foreach ($field_map as $field_name => $field_info) {
  38.         if (in_array($entity_type, array_keys($field_info['bundles'])) && in_array($bundle_type, $field_info['bundles'][$entity_type])) {
  39.             $field_names[] = $field_name;
  40.         }
  41.     }
  42.     return $field_names;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement