Datenbank erweitern
Für die Erweiterung der Datenbank können Sie auch komfortabel folgendes Plugin verwenden: xt_custom_fields - Datenbank-Individualfelder
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:
ALTER TABLE `xt_products` ADD `vintage` VARCHAR( 32 ) NULL AFTER `products_id` ;
(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:
Feldtyp | Typ (Datenbank) | Naming |
---|---|---|
Standart input-Feld | Varchar | - |
Editor-Text-Feld | TEXT | $fieldname.'_html' |
Datums-Feld | DATETIME | - |
Checkbox | int (1) | $fieldname.'_status' |
Als Query:
ALTER TABLE `xt_products` ADD `inputfield` VARCHAR( 255 ) NULL , ADD `mydate` TIMESTAMP NULL , ADD `mystatus_status` INT( 1 ) NULL , ADD `myhtmlfield_html` TEXT NULL ;