You are here

function blockreference_entity_view in Block reference 7.2

Implements hook_entity_view().

Pre-render blockreference fields attached to entities to ensure forms are rendered early enough.

File

./blockreference.module, line 434

Code

function blockreference_entity_view($entity, $entity_type, $view_mode, $langcode) {
  if (empty($entity->content)) {
    return;
  }
  foreach (element_children($entity->content) as $field_name) {
    $field = $entity->content[$field_name];

    // This is a blockreference field.
    if (isset($field['#field_type']) && $field['#field_type'] == 'blockreference') {

      // Unset renderable field items.
      foreach (element_children($field) as $n) {
        unset($entity->content[$field_name][$n]);
      }

      // Render.
      $html = render($field);

      // Add back to entity content.
      $keep_meta = array_flip(array(
        '#weight',
        '#title',
        '#access',
        '#label_display',
        '#field_name',
        '#entity_type',
        '#bundle',
      ));
      $entity->content[$field_name] = array(
        '#markup' => $html,
      ) + array_intersect_key($field, $keep_meta);
    }
  }
}