logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

1.6. Producten en categorieën - het aanmaken van databasetabellen

07/10/2025, by Ivan
Voordat we beginnen met het ontwikkelen van de functionaliteit voor producten en categorieën, laten we nadenken over welke informatie nodig is voor onze klanten en websitebeheerders. We moeten voldoende productinformatie aanbieden: de naam van het product, een gedetailleerde beschrijving en de prijs. We kunnen ook een hoofdfoto van het product weergeven, evenals extra afbeeldingen. Mogelijk is het gewicht van het product nodig om de verzendkosten te berekenen. Daarnaast hebben we het aantal producten op voorraad nodig om te voorkomen dat we iets verkopen dat we niet hebben. Voor de sitebeheerder zijn het product-ID en een leesbare URL (voor zoekmachines) belangrijk. Uiteindelijk zouden we ten minste de volgende velden moeten hebben:
Gegevens Beschrijving
ID Productnummer voor intern gebruik op de site
Name Naam van het product
URL alias Voornamelijk nodig voor zoekmachines
Description Gedetailleerde informatie over het product
SKU Artikelnummer van het product voor gebruikers van de site
Price Prijs van het product
Stock Aantal producten op voorraad
Primary image Hoofdafbeelding
Additional images Aanvullende afbeeldingen
In latere artikelen zullen we deze lijst uitbreiden, maar voorlopig is dit voldoende. Productcategorieën hebben hun eigen lijst met velden:
Gegevens Beschrijving
ID Categorienummer voor intern gebruik
Name Naam van de categorie
Description Beschrijving van de categorie
URL alias Leesbare URL voor zoekmachines
We zouden verder kunnen gaan met het implementeren van de datastructuur en functionaliteit voor het weergeven van producten en categorieën met behulp van ons framework. Maar als we dat nu zouden doen, zouden we veel flexibiliteit verliezen. De meeste inhoud deelt gemeenschappelijke informatie. Als we die gemeenschappelijke informatie identificeren en er een abstract inhoudstype voor maken, wordt ons framework flexibeler. We kunnen dan verschillende functionaliteiten gebruiken voor deze inhoudstypen zonder code te dupliceren. Zulke functionaliteiten kunnen zijn:
  • Versiebeheer van inhoud
  • Toegangsrechtenbeheer
  • Reacties op inhoud, pagina’s of producten
  • Beoordelingen voor pagina’s of producten

Pagina’s

Pagina’s zijn de statische secties van onze website: Contact, informatie over levering en betaling, enz. De gegevens voor deze pagina’s staan in de volgende tabel:
Gegevens Beschrijving
Name Naam van de pagina
URL alias Pagina-URL
ID Intern paginanummer
Heading Inhoud van het <h1>-element
Title Inhoud van het <title>-element
Content Inhoud van de pagina
Keywords Inhoud van de meta-tag voor sleutelwoorden
Description Inhoud van de meta-tag voor beschrijving

Content

Pagina’s zijn het belangrijkste inhoudstype dat we zullen uitbreiden wanneer er meer velden nodig zijn. Categoriepaginatype is in feite hetzelfde als een standaardpagina, alleen met extra velden voor productkoppelingen.
Gegevens Beschrijving
ID Intern nummer
Name Naam van de inhoud
URL alias  
Content Inhoud van de pagina
Type Inhoudstype (bijv. page, product, category)
Order Volgorde van inhoud, bijvoorbeeld voor menu-items
Parent Bovenliggende inhoud, voor hiërarchie (subcategorieën, pagina’s, enz.)
Meta keywords Trefwoorden
Meta description Meta-beschrijving
Date created Aanmaakdatum
Creator Auteur van de inhoud
Active Of de inhoud zichtbaar is voor bezoekers
Secure Veld voor toegangsrechten (bijvoorbeeld alleen zichtbaar voor geregistreerde gebruikers)

Revisies

Net als in Drupal zullen we ons eigen revisiesysteem hebben.
Gegevens Beschrijving
ID Intern inhoudsnummer
Current revision Huidig revisienummer
Nu we onze inhoudstypen hebben gepland, kunnen we beginnen met het maken van onze database. Voor elk type maken we een aparte tabel. Uiteindelijk moeten we de volgende tabellen hebben:
Tabel Beschrijving
Content Opslag van actieve inhoudsversies en onveranderlijke informatie, zoals de auteur
Versions Opslag van gegevens van afzonderlijke versies van inhoud
Content types Bevat de inhoudstypen van ons framework en koppelt inhoud aan type
Products Bevat uitgebreide productinformatie
Revision history Bewaring van revisiegeschiedenis

Content

Alle inhoud op onze site wordt in deze tabel opgeslagen. Als we het inhoudstype willen uitbreiden, doen we dat in een aparte tabel. Bijvoorbeeld: producten worden opgeslagen in de tabel Content, maar zijn gekoppeld aan de tabel Products via het ID-veld.
Veld Type Beschrijving
ID Integer (auto increment) Veld voor koppeling met andere tabellen
Current_revision Integer Veld voor koppeling met revisietabel
Active Boolean Geeft aan of de inhoud gepubliceerd is
Secure Boolean Geeft aan of de inhoud alleen beschikbaar is voor ingelogde gebruikers
Parent Integer Koppeling naar bovenliggende inhoud
Order Integer Volgorde van inhoud
Author Integer ID van de gebruiker die de inhoud heeft aangemaakt
Type Integer ID van het inhoudstype
Path Varchar Veld voor opslag van de URL-alias
Nu kunnen we de SQL-query uitvoeren en de tabel Content aanmaken:
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;