read

Creando pseudocampos en Drupal

Imaginá que necesitás desplegar contenido relativo a un nodo, pero que no se relaciona directamente con ninguno de los campos del mismo; o se relaciona con varios de estos. Cómo hacemos? Podemos utilizar un pseudo-campo; es decir; un campo que solo se muestra en el despliegue del nodo; pero nunca se ingresa; pues para mostrarlo se obtiene con cálculos o algún trozo custom de código.

Ahora sí; cómo hago eso? hook_field_extra_fields y hook_node_view vienen al rescate.

Veamos un ejemplo:

/**
 * Implements hook_field_extra_fields().
 */
function demo_field_extra_fields() {
  $extra['node']['page']['display']['demo_field'] = array(
    'label' => t('My Demo Field'),
    'description' => t('Provides a Demo Field'),
    'weight' => 0,
  );
  return $extra;
}

/**
 * Implements hook_node_view().
 */
function demo_node_view($node, $view_mode, $langcode) {
  if ($node->type === 'page') {
    $node->content['demo_field'] = array(
      '#type' => 'item',
      '#title' => '',
      '#markup' => 'Content for your demo field',
    );
  }
}

En el primer hook le dijimos a Drupal que para los nodos de tipo page en el display agregue un campo demo_field con esas propiedades. En el segundo hook le dijimos a Drupal que si el nodo es de tipo page en content (lo que se va a desplegar) agregue demo_field (mismo nombre que el extra field) con esas propiedades.

Espero que les pueda servir de algo :)

Blog Logo

Kevin Jesús Porras Zumbado

Drupal Backend Developer y un poco de site-builder. Me gustan los retos con las tecnologías y siempre aprender cosas nuevas.


Published

blog comments powered by Disqus
Image

Blog de Kporras07

Un intento personal de documentación

Back to Overview