Datenbank erweitern


Grundsätzlich können Sie alle Daten-Tabellen im Store beliebig erweitern und trotzdem ist gewährleistet, dass der Framework diese Datenfelder entsprechend aus/weiter gibt.

Das beste Beispiel dieses Verhaltens ist das Template-System.

Beipiel Wein:

Ein Weinhändler möchte die Produktdaten in seinem Shop um den "Jahrgang" erweitern. Hierzu muss er entweder die Tabelle _products oder die Tabelle  _products_description entsprechend um ein Feld erweitern. In diesem Fall ist die Tabelle _products die bessere Wahl, da es sich um keinen Wert handelt der sprachspezifisch ist. ( Daten innerhalb der _products_description Tabelle müssen (sollten) in jeder installierten Sprache eingepflegt werden, da die Tabelle sprachspezifische Daten beinhaltet)

Die Tabelle _products wird über einen beliebigen MySQL-Client oder phpMyAdmin mit diesem Query erweitert:

(Der Flexibilität halber wählt der Händler VARCHAR ( 32 ), theoretisch wäre hier natürlich VARCHAR ( 4 ) oder INT etc. auch möglich)

Nach dieser Änderung erscheint im Backend des Stores in den Produkt-Daten (Shop => Artikel => "bearbeiten") ein neues Feld, welches ermöglicht Daten zu hinterlegen:

TEXT_VINTAGE wird automatisch durch den Framwork, durch die für diesen Key hinterlegte Sprachvariable, ersetzt. In der Praxis wäre es jetzt natürlich noch sinnvoll, diesen Key unter Einstellungen => Lokalisierung => Sprachtexte zu erstellen.

In /templates/xt_grid/xtCore/pages/product/product.html, /templates/xt_grid/xtCore/pages/product_listing/product_listing_v1.html, sowie den Plugintemplates (z.B. xt_auto_cross_sell ), aber auch im Exportmanager steht dieser Wert nun als Variable zur Verfügung (Siehe {debug}).

Zu verdanken ist dies der Art der Abfrage in z.B. der Funktion $product->getProductData(), die grundsätzlich genutzt werden sollte um Produktdaten abzufragen.

Datenbank mit Plugins erweitern:

Dieses Verfahren können Sie natürlich auch innerhalb Ihrer Plugins nutzen, um Optionen innerhalb von Produkten, Herstellern, Kategorien etc. hinzuzufügen.Ein ideales Beispiel dafür ist das Plugin "xt_customersdiscount", das die Kundengruppen-Tabelle ( _customers_status ) um die Werte "customers_discount" & "customers_status_discount_flag" erweitert und sie wiederum im Hook "class.cart.php:_getContent_top" nutzt, um daraus den Kundengruppenrabatt bzw. den neuen Warenkorbwert zu errechnen.

Feldtypen:

Je nach Verwendung des Feldes kann es sinnvoll sein, einen der verschiedenen Feldtypen zu verwenden. Der Feld-Typ ergibt sich automatisch durch eine Kombination von Feld-Name und Daten-Typ:

FeldtypTyp (Datenbank)Naming
Standart input-FeldVarchar-
Editor-Text-FeldTEXT$fieldname.'_html'
Datums-FeldDATETIME-
Checkboxint (1)$fieldname.'_status'

Als Query: