logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

1.6. Produkte und Kategorien – Erstellen von Datenbanktabellen

26/05/2025, by Ivan

Bevor wir die Funktionalität für Produkte und Kategorien erstellen, denken wir über die Informationen nach, die unsere Kunden und Website-Administratoren benötigen. Wir müssen ausreichende Informationen zum Produkt bereitstellen, wie den Produktnamen, eine ausführliche Produktbeschreibung und den Produktpreis. Wir können auch ein Produktfoto sowie zusätzliche Bilder bereitstellen. Möglicherweise wird das Gewicht des Produkts zur Berechnung der Versandkosten benötigt. Die Lagerbestandsmenge ist wichtig, um keine Produkte zu verkaufen, die nicht verfügbar sind. Für den Website-Administrator wird eine Produkt-ID sowie eine suchmaschinenfreundliche URL benötigt.

Am Ende sollten wir mindestens folgende Felder haben:

Daten Beschreibung
ID Produktnummer für die interne Website-Verwaltung
Name Produktname
SEO-URL Vor allem für Suchmaschinen notwendig
Beschreibung Detaillierte Produktinformationen
SKU Artikelnummer für Website-Nutzer
Preis Produktpreis
Lagerbestand Verfügbare Menge auf der Website
Hauptbild Hauptbild des Produkts
Zusätzliche Bilder Weitere Produktbilder

In späteren Artikeln werden wir diese Liste erweitern, für den Anfang reicht dies jedoch aus.

Kategorien haben ihre eigenen Felder:

Daten Beschreibung
ID Kategorienummer für die interne Website-Verwaltung
Name Kategoriename
Beschreibung Kategoriebeschreibung
SEO-URL Suchmaschinenfreundliche URL

Wir könnten weitergehen und Datenstrukturen und Funktionen für die Darstellung von Produkten und Kategorien mit unserem Framework implementieren, aber wenn wir das jetzt tun würden, würden wir viel Flexibilität verlieren. Die meisten Inhalte enthalten viele allgemeine Informationen. Wenn wir diese gemeinsamen Informationen finden und einen abstrakten Inhaltstyp erstellen, wird unser Framework flexibler. Wir könnten verschiedene Funktionen für diese Inhaltstypen verwenden, ohne Code zu duplizieren. Solche Funktionen könnten sein:

  • Versionierung von Inhalten
  • Zugriffsrechteverwaltung
  • Kommentare zu Inhalten, Seiten, Produkten
  • Bewertungen von Seiten, Produkten

Seiten

Seiten sind gewöhnliche statische Bereiche unserer Website: Kontakt, Informationen zu Versand und Zahlung usw. Die Daten dieser Seiten sind in der folgenden Tabelle dargestellt:
Daten Beschreibung
Name Seitenname
SEO-URL Seiten-URL
ID Interne Seitennummer
Überschrift Inhalt des h1-Tags
Titel Inhalt des <title>-Tags
Inhalt Seiteninhalt
Keywords Inhalt des Meta-Keywords-Tags
Beschreibung Inhalt des Meta-Description-Tags

Inhalte

Seiten sind der Hauptinhaltstyp, den wir erweitern, wenn mehr Felder benötigt werden. Kategorieseiten sind im Grunde die gleichen Seiten, nur mit mehr Feldern zur Verbindung mit Produkten.
Daten Beschreibung
ID Interne Nummer
Name Inhaltsname
SEO-URL  
Inhalt Inhalt der Inhaltsseite
Typ Inhaltstyp (z. B. Seite, Produkt, Kategorie)
Sortierung Sortierreihenfolge, z. B. für Menüpunkte
Elternteil Übergeordneter Inhalt, wichtig für Hierarchien, z. B. für Unterkategorien oder Seitenkataloge
Meta-Keywords Schlüsselwörter
Meta-Beschreibung Meta-Description
Erstellungsdatum Erstellungsdatum
Ersteller Inhaltsautor
Aktiv Ob der Inhalt für Besucher sichtbar ist
Sicher Feld zur Rechteverwaltung, z. B. Sichtbarkeit nur für angemeldete Nutzer

Revisionen

Drupal verfügt über ein Revisionssystem, wir werden ein ähnliches System haben.
Daten Beschreibung
ID Interne Inhaltsnummer
Aktuelle Revision Aktuelle Revisionsnummer
Nachdem wir unsere Inhaltstypen geplant haben, beginnen wir mit der Erstellung unserer Datenbank. Für jeden Typ erstellen wir eine separate Tabelle. Wir erhalten also folgende Tabellen:
Tabelle Beschreibung
Content Speichert Verbindungen aktiver Inhaltsversionen mit unveränderlichen Informationen, z. B. dem Autor
Versions Speichert Daten einzelner Inhaltsversionen
Content types Speichert Inhaltstypen des Frameworks und verknüpft Inhalte mit Inhaltstypen
Products Erweitert Produktdaten
Revision history Speichert die Historie der Revisionen

Content

Alle Inhalte der Website werden in dieser Tabelle gespeichert. Wenn wir einen Inhaltstyp erweitern wollen, tun wir dies in einer separaten Tabelle. Zum Beispiel werden Produkte in der Content-Tabelle gespeichert, sind aber über die ID mit der Products-Tabelle verbunden.
Feld Typ Beschreibung
ID Integer (Auto-Inkrement) Verknüpfungsfeld zu anderen Tabellen
Current_revision Integer Verknüpfungsfeld zur Versionstabelle
Active Boolean Zeigt an, ob der Inhalt veröffentlicht ist
Secure Boolean Gibt an, ob der Inhalt nur für angemeldete Nutzer zugänglich ist
Parent Integer Verknüpfung mit übergeordnetem Inhalt
Order Integer Feld für die Sortierung des Inhalts
Author Integer ID des Benutzers, der den Inhalt erstellt hat
Type Integer ID des Inhaltstyps zur Erweiterung der Inhaltsdaten
Path Varchar Feld zur Speicherung der SEO-URL
Nun können wir die SQL-Abfragen ausführen und die Tabelle Content erstellen:
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;