drupal-header

Drupal 7: Obtener el valor del field de una entidad

Como ya sabemos de sobra, en Drupal 7 todo es una entity (aka entidad). Los nodos son entidades, los comentarios son entidades, las taxonomias, los usuarios, todo es una entidad, y las entidades usan fields, y obtener el valor de un field de una entidad programaticamente es algo que no suele estar muy claro.

Hoy vamos a ver dos formas de obtener el valor de un field en una entidad.

Nuestro conejillo de indias: una entidad User que tiene un field llamado “field_apellidos“.

La primer forma de obtener el valor que guarda “field_apellido” es usando la API de drupal directamente:

Y en el caso de que sea de múltiples valores:

La segunda forma es usando Entity API (y para quien no lo conozca créanme que es tan necesario como ctools, views o panels si te dedicas a la programación en Drupal 7):

Y en el caso de que sea de múltiples valores:

Nota final: Solo con hacer user_load() ya tenes disponibles el field_apellidos, pero no es una practica recomendada accederlo directamente.

Chau!

4 Comments

  • Ricardo Sanz 11/09/2012

    Y en el último ejemplo incluso sobra el user_load, se puede obtener el wrapper simplemente pasándole el identificador de la entidad (en este caso el uid del usuario):

    ¡Entidades al poder!

    • Capy 11/09/2012

      Muy cierto Ricardo

  • Ariel 13/01/2013

    Hola desde Cuba Capy!!! Feliz Nuevo Año!

    HAce rato ando buscando este codigo para sacar un field de user, pero he probado usando Entity API como recomiendas y me funciona, pero quisiera mostrar $apellidos en page.tpl.php. No me funciona $variables[“apellidos”], ni directamente $apellidos. Debo hacer algo para que se vea esa variable en la plantilla.

    OJO tu codigo lo puse en theme_preprocess_page

    Gracias de antemano
    Ariel

    • Capy 28/01/2013

      Hola Ariel. Respondo tarde pero espero que le sirva a alguien.
      Lo único que se me ocurre que pueda faltar en esa situación es que pases el apellido a la plantilla por medio de $vars

:).