Infos zur Shop-Kategorie
Beschreibung:
Produkte werden in einem hierarchischen Baum strukturiert. Jedes Produkt kann zu beliebig vielen Baumknoten gehören, und so ist es möglich, dem Nutzer verschiedene Navigations- und Abstraktionsstrukturen anzubieten. Die Knoten des Baums werden Kategorien genannt. Sie werden im Datenformat ShopCategoryData gespeichert. Die Datenklasse implementiert eine spezielle Logik, um hierarchische Daten in einer Datenbank zu speichern: sogenannte Nested Sets. Die Idee ist die folgende:
- Jeder Knoten im Baum hat ein nodeLeft und ein nodeRight Attribut.
- Außerdem hat jeder Knoten ein nodeLevel-Attribut.
Wir zählen nun zuerst die nodeLeft-Attribute und dann die nodeRight-Attribute in einem Deep-First-Ansatz.
Die Datenstruktur der Nested Sets ermöglicht es, die gesamte Hierarchie mit nur einer SQL-Anfrage zu laden. Das macht die Datenverwaltung extrem effizient; die Aktualisierung der Kategoriestruktur ist etwas komplexer. Die Logik dafür ist jedoch mithilfe der REST-API vollständig automatisiert.
Achtung
Bitte beachte: TYRIOS ist ein aspektorientiertes System, und die konkrete Datenstruktur hängt von deiner Systemkonfiguration ab. Vor allem, wenn du bestehende Daten aktualisieren willst, solltest du alle verfügbaren Felder berücksichtigen oder einen aktualisierungsspezifischen API-Endpunkt verwenden, um Datenverluste zu vermeiden.
Allgemeine Datenstruktur
Im Allgemeinen hat ein ShopCategoryData-Objekt die folgende Datenstruktur:
{
"id": 2,
"MediahelperFile": 96,
"ProductData": null,
"visible": true,
"useAccidentialProducts": false,
"useProductsFromChilds": false,
"updateTime": 1625662114,
"sortingOption": "2",
"defaultSorting": "4",
"facetDefinitionMode": "2",
"FacetDefinition": null,
"ShopCategoryFilterDefinition": [
{
"id": 1,
"sotField": "brand",
"sorting": "alphabetical",
"sortingDirection": "ASC",
"searchable": true,
"facetLimit": "-1",
"initiallyExpanded": true,
"facetFieldRenderer": "default",
"presentationName_de": "Marke",
"ShopCategoryData_ref_position": 0
}
],
"showProducts": true,
"showCategorySidebar": true,
"showCategoryList": true,
"hideIfEmpty": true,
"name_de": "Meine Kategorie",
"description_de": null,
"innerDescription_de": null,
"categoryHeader_de": null,
"productHeader_de": null,
"keywords_de": null,
"metaDescription_de": null,
"alternateHtmlTitle_de": null,
"nodeLeft": 2,
"nodeRight": 13,
"nodeLevel": 1,
"parentID": 1
}
Wie du siehst, gibt es viele Sprachen, die von Feldern abhängen, die durch das Sprach-Token "_de" identifiziert werden. Je nach Systemkonfiguration kann es weitere Sprachdefinitionen geben.