For each solo per valori numerici (utile per i field multipli)

{% for key, value in content.field_url if key matches '/^\\d+$/' %}
    value1
    value2
    value3...
{% endfor %}

Poichè twig di base non ha una variabile o metodo che rappresenta INT, questo valore viene proposto sotto regEX. Ciclando nei field multipli, se si vogliono selezionare solo indici di chiavi numeriche, quindi ogni valore del delta di field, lo si espone nel for condizionale.

Semplice sintassi per ottenre un url immagine con style applicato.

supponendo di avere un campo chiamato field_image e di voler stampare l'url con lo stile thumbnail in un template node.html.twig.

{{ node.field_image | file_uri | image_style('thumbnail') }}

in alternativa ma senza applicare lo stile, può essere usato: 

{% set image_url = file_url(content.field_image.0['#item'].entity.fileuri ) %}

Redirect a URL esterni nei controller

Supponiamo di avere un controller con un metodo che effettua un redirect ad un sito esterno:

class Controller extends ControllerBase {
  public function redirectToWebsite() {
    return new RedirectResponse('https://google.com')
  }
}

Questo non funzionerà, dato che le RedirectResponse di Symfony in Drupal non funzionano se non si effettua il redirect a URL interni al proprio sito Drupal.

Drupal infatti ci suggerisce di utilizzare un TrustedRedirectResponse:

Rendere disponibili le regioni ai template dei nodi in Drupal 8 e 9

Considerando che di default le regioni vengono gestite nei template delle pagine (quindi in page.html.twig e suoi sourrogati) in qualche caso si rende necessario poter accedere alle regioni in un template node.html.twig. Ad esempio se volessi stampare la sidebar nel nodo, non potrei farlo se non usiamo questo codice qui sotto:

PS: Su drupal 9 a causa di alcune funzioni deprecate, il codice è leggermente diverso quindi riporto sia per drupal 8 che per drupal 9.

Supponiamo di voler inserire la regione sidebar_right in un template di node quindi

{{ sidebar_right }}

Un modo comodo per inserire blocchi nei vari template usando Twig_tweak.

Installare il modulo Twig_tweak

https://www.drupal.org/project/twig_tweak

Una volta abilitato il modulo è possibile inserire ad esempio il blocco TABS action (View, Edit, Delete) nel template node.html.twig.

{{ drupal_block('local_tasks_block') }}

Oppure il bocco del breadcrumb

{{ drupal_block('system_breadcrumb_block') }}

ma se volessimo inserire blocchi provenienti dal modulo views allora possiamo usare

Tags

Subscribe to