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
{% 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.
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:
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