logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Modalità di visualizzazione: modalità di vista e form

30/09/2025, by Ivan

Modalità di visualizzazione

Esistono modalità di visualizzazione (disponibili in admin/Structure/Display-Mode) per fornire diverse rappresentazioni delle entità di contenuto per la visualizzazione o la modifica. I due tipi di modalità di visualizzazione sono le «modalità di vista» e le «modalità di form». Entrambi questi tipi di modalità – modalità di vista e modalità di form – sono esempi di «oggetti di configurazione». Ecco un esempio di modalità di vista esportata.

uuid: 15dc7aa9-13fd-4412-9c06-06d09f915d08
langcode: en
status: false
dependencies:
  module:
    - node
id: node.full
label: 'Full content'
targetEntityType: node
cache: true

riferimento: core.entity_view_mode.node.full.yml

La proprietà principale a cui prestare attenzione è targetEntityType. Ogni modalità di visualizzazione (vista o form) è associata a un solo e unico tipo di entità di contenuto. Per convenzione ci sono etichette utilizzate per più modalità di visualizzazione. Ad esempio, il profilo standard di Drupal Core usa la parola «Full» nelle etichette delle modalità di vista per i tipi di entità nodo, blocchi personalizzati e commenti.

Modalità di vista e display

  • Amministrate collettivamente su: /admin/structure/display-mode/view
  • Attivate per ogni bundle nella sezione «Impostazioni di visualizzazione personalizzate» a URL come: /admin/structure/types/manage/page/display (dove «page» è il bundle dell’entità nodo)
  • Configurate per la modalità di vista per ogni bundle a URL come: /admin/structure/types/manage/page/display/teaser (dove «page» è il bundle dell’entità nodo e «teaser» è la modalità di vista)

Le modalità di vista come concetto esistevano già prima di Drupal 8. Erano presenti in Drupal 7. In Drupal 6 c’era il concetto di «build modes». Le modalità di vista consentono a strumenti di site building Drupal, come i campi Entity Reference, di richiedere un’entità in un modo specifico. Ad esempio, supponiamo che «song» e «artist» siano entrambi tipi di nodo, e che il nodo song contenga un campo di riferimento all’artista. La visualizzazione «full» del nodo song può richiedere la visualizzazione «teaser» del nodo artista. In questo esempio, «teaser» è la modalità di vista usata dal nodo artista, mentre «full» è la modalità di vista usata dalla canzone.

Di solito, se un site builder vuole mostrare un nodo artista nella modalità teaser, allora configurerà la visualizzazione specifica per artista e teaser. Questo può essere fatto andando alla scheda «Gestisci visualizzazione» nella pagina di configurazione del bundle dell’entità. Un esempio di questa pagina nel profilo standard di installazione di Drupal Core è /admin/structure/types/manage/article/display

In questa pagina il site builder può abilitare impostazioni personalizzate per i campi del bundle (ordine dei campi e formatter dei campi) per ogni modalità di vista. Non è obbligatorio che tutte le modalità di vista abbiano impostazioni specifiche per tutti i bundle. In questo esempio solo le modalità «RSS» e «Teaser» hanno le loro impostazioni. Tutte le altre modalità di vista ereditano dalla configurazione «default». L’associazione tra bundle di entità e modalità di vista è chiamata view display. @see EntityViewDisplayInterface

d8-view-modes

Modalità di form e operazioni di form

  • Amministrate collettivamente su: /admin/structure/display-mode/form
  • Attivate per ogni bundle a URL come: /admin/structure/types/manage/page/form-display (dove «page» è il bundle dell’entità nodo)
  • Configurate per la modalità di form per un bundle a URL come: /admin/structure/types/manage/page/form-display/simple (dove «page» è il bundle dell’entità nodo e «simple» è la modalità di form)

Come le modalità di vista, le modalità di form sono un modo per creare diverse configurazioni dei campi con lo stesso bundle di entità di contenuto. Le modalità di form consentono diversi ordinamenti e impostazioni dei widget dei campi, proprio come le modalità di vista consentono diversi ordinamenti e impostazioni dei formatter.

In Drupal 7 avevamo campo e widget del campo nella scheda «Gestisci campi» di qualsiasi tipo di contenuto. Ora questo è diviso in due schede: «Gestisci campi» e «Gestisci display form». Questo ci dà più flessibilità su come appare la form di aggiunta/modifica dei contenuti. La scheda «Gestisci visualizzazione» rimane la stessa che in Drupal 7. Oltre ai tipi di contenuto, possiamo gestire modalità di vista anche per altri tipi di entità come utenti, tassonomia, commenti e blocchi personalizzati.

In aggiunta alle modalità di form, le operazioni di form permettono di definire quali classi usare per form come la form di eliminazione di un nodo. La classe usata per eliminare un nodo è diversa dalla classe usata per modificare un nodo. Le operazioni sono definite nelle annotazioni dell’entità.

Ecco un esempio che mostra 2 operazioni personalizzate di form, oltre alla modalità di form «default», tutte collegate alla stessa MyEntityForm. Assicurati che questa form estenda ContentEntityForm.

/**
 * @ContentEntityType(
 *   id = "myentity",
 *   handlers = {
 *     "form" = {
 *       "default" = "Drupal\myentity\Form\MyEntityForm",
 *       "add" = "Drupal\myentity\Form\MyEntityForm",
 *       "edit" = "Drupal\myentity\Form\MyEntityForm",
 *       "delete" = "Drupal\myentity\Form\MyEntityDeleteForm",
 *     },
 *   },
 * )
 */

Se devi aggiungere o modificare le operazioni di form disponibili in entità esistenti, puoi usare hook_entity_type_build e hook_entity_type_alter.

Al momento è necessario configurare esplicitamente l’operazione per la modalità di form usata. A differenza delle modalità di vista (che ereditano il display default se non esiste un display per la modalità di vista), le modalità di form non usano automaticamente l’operazione «default». Questo può essere considerato un bug. Vedi #2511720: Permettere alle modalità di form di usare l’operazione default se non impostata esplicitamente.

Per mostrare una form in una modalità di form personalizzata, usa _entity_form nella tua route. Ad esempio, per mostrare la form «edit» personalizzata di MyEntity, usa questa route:

entity.myentity.edit_form:
 path: '/myentity/{myentity}/edit'
 defaults:
   _entity_form: myentity.edit
   _title: 'Edit MyEntity'
 requirements:
   _permission: 'edit myentity entities'

Altro esempio:

Un’esigenza comune è che le form di registrazione utenti non mostrino tutti i campi utente. Una volta registrato, l’utente accede alla form di modifica profilo che contiene campi aggiuntivi. Ecco un esempio di configurazione:

  • Clicca Aggiungi campo da /admin/config/people/account/fields
  • Nella schermata successiva scegli tipo di campo, Lista (Testo)
  • Dagli un’etichetta: «Lista iscrizioni»
  • Clicca «Salva e continua»
  • Compila la lista dei valori consentiti, ad esempio:

                     1 | Notizie
                     2 | Annunci importanti
                     3 | Offerte, Sconti, Promozioni
                     4 | Messaggi partner

  • Clicca Salva
  • Rendilo un campo obbligatorio
  • Seleziona tutti e quattro i valori predefiniti, clicca Salva
  • Vai alla scheda «Gestisci display form»
  • In fondo alla lista dei campi c’è la sezione «Impostazioni di visualizzazione personalizzate», espandila
  • Nella casella «Usa impostazioni personalizzate di visualizzazione per le seguenti modalità di form» abilita «Registrazione» e clicca Salva
  • Ora avrai una seconda scheda chiamata «Registrazione»
  • Disattiva il campo «Lista iscrizioni» trascinandolo nella sezione «Disabilitato». Clicca Salva
  • Vai alla scheda «Gestisci visualizzazione» per assicurarti che il campo «Lista iscrizioni» sia abilitato

Esci dal sito e visita la form di registrazione. Il campo Lista iscrizioni non sarà visibile.
Dopo aver effettuato l’accesso, il campo Lista iscrizioni sarà disponibile nella form di modifica profilo.