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.
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.
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.
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' |
ALTER TABLE `xt_products` ADD `inputfield` VARCHAR( 255 ) NULL , ADD `mydate` TIMESTAMP NULL , ADD `mystatus_status` INT( 1 ) NULL , ADD `myhtmlfield_html` TEXT NULL ; |