Materiale, ingredienti, istruzioni di lavaggio, tabella taglie, scheda tecnica. Prima o poi ogni catalogo ha informazioni che non stanno nei campi standard del prodotto. La risposta di Shopify sono i metafield e i metaobject, e per usarli non serve nessuna app.
In breve: i metafield Shopify sono campi personalizzati che aggiungi a prodotti, varianti, collezioni o clienti, per salvare informazioni che i campi standard non prevedono. I metaobject sono schede con più campi, che crei una volta e colleghi a tanti prodotti. Li definisci dall’admin e li mostri nel tema con le origini dinamiche o con Liquid.
In questo articolo ti mostro prima la strada senza codice, poi quella con Liquid, e alla fine un esempio completo: una tabella taglie che scrivi una volta sola e usi su tutti i prodotti che ne hanno bisogno.
Metafield e metaobject: la differenza in una frase
Un metafield è un campo in più su una cosa che esiste già: “Materiale” su un prodotto, “Ingredienti” su una variante, “Testo promozionale” su una collezione. Ogni prodotto ha il suo valore.
Un metaobject è un tipo di contenuto nuovo, con i suoi campi, che vive da solo: una tabella taglie, una scheda “designer”, una certificazione. Crei le voci una volta e le colleghi ai prodotti con un metafield. Se cambi la tabella, cambia su tutti i prodotti collegati.

Le due cose lavorano insieme. Lo spiega bene la documentazione sui dati personalizzati: il metafield è il collegamento, il metaobject è il contenuto collegato. Se stai ancora prendendo confidenza con l’admin, ti può servire prima come funziona Shopify per l’e-commerce.
Creare una definizione di metafield
Prima di scrivere valori si crea una definizione: dice a Shopify come si chiama il campo, di che tipo è e su quali risorse vale. Il percorso è questo:
- nell’admin vai in Impostazioni > Metafield e metaobject (in alcuni negozi la voce si chiama ancora “Dati personalizzati”) e scegli Prodotti;
- clicca Aggiungi definizione e scrivi un nome, per esempio “Materiale”;
- Shopify genera l’identificativo
custom.materiale:customè lo spazio dei nomi (namespace),materialela chiave; - scegli il tipo: per il materiale va bene “Testo su una riga”; se i valori sono più di uno, passa da “Un valore” a “Elenco di valori”;
- salva.
Da quel momento, aprendo un prodotto trovi il campo “Materiale” nella sezione Metafield, in fondo alla pagina. Puoi compilarlo a mano, con la modifica in blocco o con l’importazione CSV. Le istruzioni ufficiali sono nella guida ai metafield del Centro assistenza.
Il mio consiglio: prima di creare un campo tuo, guarda se Shopify ne propone uno standard per la categoria del prodotto (colore, taglia, tessuto). I campi standard sono già collegati ai filtri e ai canali di vendita.
Mostrarlo senza codice: le origini dinamiche
Nei temi Online Store 2.0 puoi collegare un metafield a un’impostazione dell’editor. Si chiamano origini dinamiche e funzionano così:
- apri Personalizza sul tema e vai su un modello prodotto;
- nella sezione delle informazioni prodotto aggiungi un blocco, per esempio Testo;
- accanto al campo del testo clicca l’icona “Collega origine dinamica” e scegli il metafield “Materiale”;
- salva: ogni prodotto mostrerà il suo materiale, e i prodotti senza valore non mostreranno niente.
È la strada che consiglio per testi, numeri, immagini e link. Ha due limiti: l’impostazione deve accettare quel tipo di dato, e la grafica è quella del blocco del tema. Per elenchi impaginati, tabelle o logiche come “mostra solo se”, serve Liquid.
Mostrarlo con Liquid
In Liquid un metafield si legge con risorsa.metafields.namespace.chiave, e il valore vero sta nella proprietà .value. Il riferimento completo è la pagina dell’oggetto metafield. Se Liquid è nuovo per te, parti dalla mia guida pratica a Liquid.
Testo e numeri
sections/main-product.liquid (o un blocco Liquid personalizzato)
{%- assign materiale = product.metafields.custom.materiale.value -%}
{%- if materiale != blank -%}
<p class="scheda__riga">Materiale: {{ materiale | escape }}</p>
{%- endif -%}Il controllo != blank serve per i prodotti senza valore: senza, vedresti “Materiale:” seguito dal vuoto. Per i numeri vale lo stesso schema: {{ product.metafields.custom.garanzia_anni.value }} stampa il numero così com’è.
C’è anche una scorciatoia: il filtro metafield_tag crea da solo l’HTML adatto al tipo. È comodo soprattutto per il testo formattato:
{{ product.metafields.custom.istruzioni | metafield_tag }}Liste
Con un metafield di tipo elenco, .value restituisce un array e lo scorri con for. Ecco gli ingredienti in un elenco puntato:
{%- assign ingredienti = product.metafields.custom.ingredienti.value -%}
{%- if ingredienti != blank -%}
<ul class="ingredienti">
{%- for ingrediente in ingredienti -%}
<li>{{ ingrediente | escape }}</li>
{%- endfor -%}
</ul>
{%- endif -%}Per gli elenchi di testo su una riga, metafield_tag fa la stessa cosa in una riga: secondo la documentazione del filtro crea un <ul>, oppure un <ol> con il parametro list_format: 'ordered'.
Riferimenti a metaobject
Quando un metafield è di tipo “Metaobject”, .value non è un testo: è la voce del metaobject collegata. I suoi campi si leggono con la loro chiave, e di nuovo con .value: product.metafields.custom.designer.value.nome.value. Sembra lungo, ma la logica è sempre la stessa.
Se ti serve una voce precisa senza passare dal prodotto, c’è l’oggetto globale metaobjects: {{ metaobjects.designer.mario-rossi.nome.value }} legge il campo “nome” della voce con handle mario-rossi del tipo designer, come mostra la pagina dell’oggetto metaobject.
Esempio completo: tabella taglie riutilizzabile
Mettiamo tutto insieme. L’obiettivo: una tabella taglie per tipo di capo (“Maglie uomo”, “Pantaloni donna”), scritta una volta e collegata a decine di prodotti. Se cambi una misura, la correggi in un punto solo.
- Metaobject “Riga taglia” (tipo
riga_taglia) con tre campi di testo su una riga:taglia,torace,vita; - Metaobject “Tabella taglie” (tipo
tabella_taglie) con due campi:titolo(testo) erighe(elenco di riferimenti a “Riga taglia”); - in Contenuti > Metaobject crei le voci: prima le righe (S, M, L…), poi la tabella “Maglie uomo” che le elenca in ordine;
- crei un metafield prodotto “Tabella taglie” di tipo Metaobject, collegato a “Tabella taglie”: identificativo
custom.tabella_taglie; - su ogni prodotto scegli la tabella giusta dal menu del metafield.
Quando crei le definizioni lascia attivo l’accesso Storefronts, come indica la guida di Shopify sui riferimenti ai metaobject: è il primo controllo da fare se la tabella non compare.
Poi il codice. Lo metto in uno snippet, così lo richiami dove vuoi:
snippets/tabella-taglie.liquid
{%- assign tabella = product.metafields.custom.tabella_taglie.value -%}
{%- if tabella -%}
<table class="tabella-taglie">
<caption>{{ tabella.titolo.value | escape }}</caption>
<tr><th>Taglia</th><th>Torace (cm)</th><th>Vita (cm)</th></tr>
{%- for riga in tabella.righe.value -%}
<tr>
<th scope="row">{{ riga.taglia.value | escape }}</th>
<td>{{ riga.torace.value | escape }}</td>
<td>{{ riga.vita.value | escape }}</td>
</tr>
{%- endfor -%}
</table>
{%- endif -%}
Riga per riga: la prima prende la tabella collegata al prodotto; se il prodotto non ne ha, tabella è vuota e l’if non stampa niente. La didascalia mostra il titolo della tabella. Il ciclo scorre le righe nell’ordine in cui le hai messe nell’admin, e per ogni riga stampa taglia, torace e vita.
Per mostrarla nella pagina prodotto aggiungi {% render 'tabella-taglie', product: product %} nel punto giusto di sections/main-product.liquid, oppure in un blocco “Liquid personalizzato” dall’editor, se il tuo tema lo prevede. Se vuoi una sezione tutta tua per mostrarla, il procedimento è quello che spiego in come creare una sezione personalizzata in Shopify.
Le intestazioni della tabella sono scritte in italiano nel codice. Se il negozio è in più lingue, spostale nei file di traduzione del tema e leggile con il filtro t.
Errori comuni
Quando un metafield “non si vede”, il problema è quasi sempre uno di questi:
- Namespace o chiave sbagliati:
custom.materialenon ècustom.Materiale. Copia l’identificativo dalla definizione, non riscriverlo a memoria. - Manca
.value: senza, su molti tipi ottieni l’oggetto e non il contenuto. - Elenco trattato come valore singolo: se il tipo è “Elenco di valori”, serve un ciclo
for(ometafield_tag). - Valori vuoti non gestiti: senza il controllo
!= blankrestano etichette senza contenuto. - Voci di metaobject in bozza: se il metaobject prevede lo stato attivo/bozza, una voce in bozza in Liquid risulta vuota.
- Modifiche sul tema pubblicato: anche qui, si lavora su una copia del tema.
Domande frequenti
Conclusione
Metafield per un’informazione in più su ogni prodotto, metaobject per contenuti riutilizzabili. Prima prova le origini dinamiche; quando non bastano, poche righe di Liquid fanno il resto. Schede prodotto complete e ordinate sono anche uno dei segnali che il cliente guarda per capire se un e-commerce è affidabile. Perché le legga bene anche Google contano title, dati strutturati e un solo H1 per pagina: ne parlo nella guida alla SEO tecnica del tema Shopify.
Se stai impostando il catalogo da zero, i campi personalizzati li progetto insieme alla realizzazione del negozio online; su un negozio Shopify esistente è parte del lavoro di realizzazione e migrazione Shopify.
Il tuo catalogo ha informazioni che non sai dove mettere? Scrivimi: ti preparo io campi e sezioni. Ti rispondo io.




