Acceder al contenido principal

Blog

Volver a Blog

Acceso a campos de un nodo desde el twig de su página en drupal 8

24 May 2017
twig tips
Avatar Fernando González

Twig , Diseño , Drupal ,

A veces, necesitamos tips especiales para hacer nuestros desarrollos tal como los queremos, y ésto siempre requiere cierto manejo de plataformas especialmente si empleamos algún CMS del estilo de Drupal 8 o Wordpress, Magento, Prestashop etc y es, por el simple hecho, que muchas partes ya las tenemos pre-implementadas con lo que la parte que nos resta es insertar contenido, por ello es que os traigo este post para drupal 8, para manejar más libremente las variables que nos entran en una página concreta y hacer la implementación a medida de alguna de estas partes.

Y la pregunta puede ser y para qué casos puede servir, bueno os dejo algunos que se me han ocurrido para los cuales me resultaría interesante leer este post.

> Cuando necesitamos tocar la disposición de fields de un nodo ya que por estructura no nos deja cambiar la disposición.

> Cuando necesitemos poner un campo por encima del título del nodo.

> Cuando directamente queremos acceder al valor de un campo para pintarlo o tratarlo como queramos 

         

         Podemos hacerlo de la siguiente manera:

 

Si por ej tenemos un nodo POST el cual dispone de los campos

  • Título (Default)  ->      label
  • Imagen destacada -> field_post_imagen
  • body (Default) ->        body

 

Queremos pintar la imagen por encima del campo de título del nodo, vamos al twig correspondiente -> page- -post.html.twig 

Y en su estructura buscamos el lugar donde queremos pintar el campo, en mi caso por encima de {{ page.header }} 

introducimos la sentencia -> 

         {{ file_url(node.field_post_imagen.entity.fileuri) }}

de tal forma que quede así:

 

  • page- -post.html.twig :

                                                                           ....

                                                                           ....

        <img class="img-post-destacada" src="{{ file_url(node.field_post_imagen.entity.fileuri) }}" >

        {{ page.header }}

                                                                           ....

                                                                           ....

 

Eso para un campo de imagen, pero si queremos pintar el título del nodo:

        {{ node.label }}

Para el body:

        {{ node.body.value }}

Para un campo especial ej field_post_tags

       {{ node.field_post_tags.value }}

etc...

 

En definitiva la forma es:

        {{ node.nombre_del_campo.value }}

Y para una imagen hay que sacar la url:

        {{ file_url(node.nombre_del_campo.entity.fileuri) }}

 

Espero que os haya parecido interesante y lo uséis, nos vemos!!! ;)

Comentarios

Añadir nuevo comentario