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

1.6. Prodotti e categorie - creazione delle tabelle del database

07/10/2025, by Ivan

Prima di creare la funzionalità dei prodotti e delle categorie, pensiamo alle informazioni di cui avranno bisogno i nostri clienti e gli amministratori del sito. È necessario fornire informazioni sufficienti sul prodotto: dobbiamo mostrare il nome del prodotto, una descrizione dettagliata e il prezzo. Possiamo anche caricare un’immagine principale del prodotto e immagini aggiuntive. Potrebbe essere necessario includere il peso del prodotto per calcolare il costo di spedizione, così come la quantità disponibile in magazzino per evitare di vendere un articolo non disponibile. Per l’amministratore del sito, serviranno l’ID del prodotto e un URL leggibile per i motori di ricerca.

Alla fine, dovremmo avere almeno i seguenti campi:

Dati Descrizione
ID Numero del prodotto per l’uso interno del sito
Name Nome del prodotto
URL leggibile Necessario principalmente per i motori di ricerca
Description Descrizione dettagliata del prodotto
SKU Codice del prodotto per gli utenti del sito
Price Prezzo del prodotto
Stock Quantità disponibile nel magazzino
Immagine principale L’immagine principale del prodotto
Immagini aggiuntive Immagini supplementari del prodotto

Nei prossimi articoli estenderemo questo elenco, ma per ora è sufficiente.

Le categorie di prodotti avranno il proprio insieme di campi:

Dati Descrizione
ID Numero della categoria per l’uso interno del sito
Name Nome della categoria
Description Descrizione della categoria
URL leggibile URL leggibile dai motori di ricerca

Potremmo procedere e creare subito la struttura dei dati e la funzionalità per visualizzare i prodotti e le categorie con il nostro framework, tuttavia, se lo facessimo ora, perderemmo molta flessibilità. La maggior parte dei contenuti condivide molte informazioni comuni. Se identifichiamo queste informazioni comuni e creiamo un tipo di contenuto astratto, il nostro framework sarà più flessibile. Potremmo utilizzare diverse funzionalità per questi tipi di contenuto senza duplicare il codice. Tra queste funzionalità ci potrebbero essere:

  • Versionamento dei contenuti
  • Gestione dei permessi di accesso
  • Commenti per contenuti, pagine e prodotti
  • Valutazioni di pagine e prodotti

Pagine

Le pagine saranno le sezioni statiche del nostro sito, come “Contatti”, “Informazioni sulla consegna” e “Pagamenti”. I dati di queste pagine saranno rappresentati nella seguente tabella:
Dati Descrizione
Nome Nome della pagina
URL leggibile URL della pagina
ID Numero interno della pagina
Heading Contenuto del tag h1
Title Contenuto del tag <title>
Content Contenuto della pagina
Keywords Contenuto del meta tag delle parole chiave
Description Contenuto del meta tag di descrizione

Contenuto

Le pagine saranno il tipo di contenuto principale che estenderemo quando avremo bisogno di aggiungere più campi. Le pagine di categoria, in sostanza, sono simili alle pagine normali, ma con più campi per collegarle ai prodotti.
Dati Descrizione
ID Numero interno per il funzionamento del sito
Name Nome del contenuto
URL leggibile  
Content Contenuto della pagina
Type Tipo di contenuto (ad esempio: page, product, category)
Order Ordine del contenuto, ad esempio per i menu
Parent Elemento padre, utile per creare gerarchie (come sottocategorie o strutture di pagine)
Meta keywords Parole chiave
Meta description Meta descrizione
Date created Data di creazione
Creator Autore del contenuto
Active Indica se il contenuto è visibile ai visitatori
Secure Campo per i diritti di accesso, ad esempio visibile solo agli utenti registrati

Revisioni

Come in Drupal, anche noi avremo un sistema di revisioni personalizzato.
Dati Descrizione
ID Numero interno del contenuto
Current revision Numero della revisione corrente
Ora che abbiamo pianificato i nostri tipi di contenuto, possiamo creare il nostro database. Per ogni tipo creeremo una tabella separata. Alla fine, dovremmo ottenere le seguenti tabelle:
Tabella Descrizione
Content Memorizza i collegamenti tra le versioni attive dei contenuti e le informazioni che non cambiano tra le versioni (come l’autore).
Versions Memorizza i dati di ogni singola versione del contenuto
Content types Registra i tipi di contenuto del framework e collega i contenuti ai rispettivi tipi
Products Estende i dati relativi ai prodotti
Revision history Memorizza la cronologia delle revisioni

Content

Tutti i contenuti del sito saranno memorizzati in questa tabella. Se vogliamo estendere un tipo di contenuto, lo faremo in una tabella separata. Ad esempio, i prodotti saranno memorizzati nella tabella Content, ma saranno collegati alla tabella Products tramite l’ID.
Campo Tipo Descrizione
ID Integer (auto increment) Campo per collegare altre tabelle
Current_revision Integer Campo per collegare la tabella delle versioni
Active Boolean Indica se il contenuto è pubblicato
Secure Boolean Indica se il contenuto è accessibile solo agli utenti autorizzati
Parent Integer Collegamento al contenuto padre
Order Integer Campo per ordinare i contenuti
Author Integer ID dell’utente che ha creato il contenuto
Type Integer ID del tipo di contenuto per estendere i dati
Path Varchar Campo per memorizzare l’URL leggibile
Ora possiamo eseguire la query SQL per creare la tabella Content:
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `current_revision` int(11) NOT NULL,
  `active` tinyint(1) NOT NULL,
  `secure` tinyint(1) NOT NULL,
  `parent` int(11) NOT NULL,
  `order` int(11) NOT NULL,
  `author` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  `path` char(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;