Um dem Shopbetreiber eine einfache Möglichkeit zum Ändern der Einstellungen des Themes an die Hand zu geben,
gibt es die Möglichkeit im settings-Verzeichnis eine settings_schema.json anzulegen um die Einstellungen in der settings_data.json innerhalb des KEY "current" über das globale Objekt settings
zur Verfügung zu stellen.
<code-block>
-- settings
>-- settings_schema.json
>-- settings_data.json
</code-block>
Unterschied settings_data / settings_schema:
settings_data.json enthält die Daten, die in oSM vom Shop-Betreiber in den Einstellungen des Themes konfiguriert wurden, als flache Struktur.
Hierbei werden die IDs innerhalb der settings_schema.json als KEY verwendet
<code-block>{
"current": {
"cart_add_redirect": false,
"link_domain" : "http://.....",
.....
}
}</code-block>
Die settings_schema.json enthält die Konfiguration, welche und wie der Shop-Betreiber diese Daten einstellen kann bzw. zu Gesicht bekommt.
Hierbei kann der Theme-Programmierer bestimmte Widgets definieren, die dem Shopbetreiber in oSM zur Verfügung gestellt werden um bestimmte Einstellungen des Themes zu ändern.
Nachfolgend sollen hier die Einstellungen aufgelistet werden, die in der settings_schema.json angegeben werden können.
Dabei ist zu beachten, dass die settings_schema.json als ein Array von Objekten definiert werden muss.
Ein Objekt muss dabei in der obersten Ebene mindestens einen KEY "name" besitzen.
<code-block> [{ "name": "", ..... },{ "name": "", ..... }] </code-block>
Um dem Shopbetreiber einige Theme Metadaten (wie z.B. Theme-Name, Dokumentations-URL, Autor, Email, ...) anzuzeigen,
ist ein Objekt mit dem folgenden KEY/VALUE erforderlich:
"name": "theme_info"
Damit wird das Objekt als Theme-Information kenntlich gemacht und folgende KEYs können in diesem Objekt definiert werden:
Dieses Objekt ist optional und kann dem Shopbetreiber Meta-Information über das Theme bereitstellen, falls der Theme-Programmierer dies möchte.
Beispiel:
<code-block>[{ "name" : "theme_info", "theme_name" : "Default Theme", "theme_author" : "orbiz", "theme_version" : "1.0.0", "theme_documentation_url": "https:\/\/orbiz.com", "theme_support_email" : "thememanager@email.com" }]</code-block>
Um die einzelnen Einstellungen in Gruppen zu untergliedern ist es erfoderlich in der obersten Ebene ein Objekt mit einem "name" - KEY anzulegen.
Als VALUE sollte nun die Gruppenbezeichnung als String eingetragen werden.
In dem Objekt sollte ein "settings" - KEY vorhanden sein, der als VALUE ein Array von Objekten enthält.
In diesem Array werden nun die einzelnen Widgets und die Struktur/Sortierung definiert, die diese Gruppe enthält.
Optional: Gruppen-Icon
Optional kann ein "icon"- KEY mit einem VALUE von einer font-awesome-Bezeichnung oder einer Data-URI hinterlegt werden.
Falls kein "icon"-KEY verwendet wird, wird ein passendes Default-font-awesome-Icon hinzugefügt.
Möchte man diesen Fallback unterbinden, so kann als "icon"-VALUE ein Leerstring ("") angegeben werden.
Genauere Infos siehe weiter unten in der Attributs-Beschreibung
Optional: osm sprachabhängiger Gruppenname
Optional kann auch ein osm sprachabhängiger Gruppenname hinterlegt werden.
Dieser wird verwendet, wenn der osm-Benutzer sich mit Deutsch oder Englisch als osm-Sprache einloggt. Damit kann eine Gruppe - je nach oSM Sprache - angedruckt werden.
Hierbei muss lediglich ein zusätzliches Attribut: name_en oder name_de mit dem jeweiligen Gruppentext in dieser Sprache hinterlegt werden.
Wird der KEY nicht gefunden, wird der default KEY name herangezogen.
Es wird empfohlen den KEY name in Englisch zu verfassen und einen zusätzlichen KEY name_de für Deutsch zu hinterlegen.
Folgender Vorteil: Falls jemals eine neue Sprache für oSM hinzukäme, würde es auf jedenfall einen Fallback nach Englisch geben.
Optional: PDF-View
Die folgenden optionalen PDF-View Attribute können der Gruppe hinzugefügt werden und bewirken beim Betreten der Gruppe (Klick)
ein Wechsel in die PDF-Ansicht (Auftrags-PDF, Rechungs-PDF, ...), bzw. in die Web-Ansicht, falls nichts konfiguriert ist (default) oder false angegeben wird.
Beispiel einer Gruppe "Global settings", die eine Widget "Selectionbox" enthält, die drei Werte zur Auswahl anbietet:
<code-block>[{ "name" : "Global settings", "name_de" : "Globale Einstellungen" "settings": [{ "type" : "select", "id" : "products_per_page", "label" : "Products per page", "default": 12, "options": [ { "value": 8, "label": "8 products" }, { "value": 12, "label": "12 products"}, { "value": 16, "label": "16 products"} ] }] }]</code-block>
Beispiel von Gruppen:
<code-block>[{
"name" : "Search",
"name_de" : "Suche",
"settings": [{
.....
}]
},{
"name" : "FavIcon",
"settings": [{
.....
}]
},{
"name" : "Logo",
"settings": [{
.....
}]
},{
"name" : "Social Media",
"name_de" : "Soziale Medien",
"settings": [{
.....
}]
}]</code-block>
Output in oSM:
Innerhalb einer Gruppe können die Widgets noch einmal mit einer umrandeten Box mit einer Überschrift gruppiert werden.
Dies erfolg durch eine einfache Konfigurations-Struktur (type: "header") und wird durch den nächsten "Header" getrennt.
Optional: Gruppen-Icon
Optional kann ein "icon"- KEY mit einem VALUE von einer font-awesome-Bezeichnung oder einer Data-URI hinterlegt werden.
Falls kein "icon"-KEY verwendet wird, wird ein passendes Default-font-awesome-Icon hinzugefügt.
Möchte man diesen Fallback unterbinden, so kann als "icon"-VALUE ein Leerstring ("") angegeben werden.
Genauere Infos siehe weiter unten in der Attributs-Beschreibung
Optional: osm sprachabhängiger Subgruppenname
Optional kann auch ein osm sprachabhängiger Subgruppenname hinterlegt werden.
Dieser wird verwendet, wenn der osm-Benutzer sich mit Deutsch oder Englisch als osm-Sprache einloggt. Damit kann eine Gruppe - je nach oSM Sprache - angedruckt werden.
Hierbei muss lediglich ein zusätzliches Attribut: content_en oder content_de mit dem jeweiligen Subgruppentext in dieser Sprache hinterlegt werden.
Wird der KEY nicht gefunden, wird der default KEY content herangezogen.
Es wird empfohlen den KEY content in Englisch zu verfassen und einen zusätzlichen KEY content_de für Deutsch zu hinterlegen.
Folgender Vorteil: Falls jemals eine neue Sprache für oSM hinzukäme, würde es auf jedenfall einen Fallback nach Englisch geben.
Optional: PDF-View
Die folgenden optionalen PDF-View Attribute können der Sub-Gruppe hinzugefügt werden und bewirken beim Ausklappen der Sub-Gruppe
ein Wechsel in die PDF-Ansicht (Auftrags-PDF, Rechungs-PDF, ...), bzw. in die Web-Ansicht, falls nichts konfiguriert ist (default) oder false angegeben wird.
<code-block>{
"type" : "header",
"content": "Default-Layout",
"content_de": "Standard-Layout"
},{
.......
}</code-block>
Output in oSM:
Um einzlene Widgets zu erzeugen, sollten die nachfolgende KEYs innerhalb eines Objekts im settings-Array berücksichtigt werden:
settings
verwendet.
Die folgenden optionale PDF-View Attribute gelten für alle Widget-Typen und bewirken ein Wechsel in die PDF-Ansicht (Auftrags-PDF, Rechungs-PDF, ...):
Folgende Widget-Typen werden unterstützt und können als "type" in einem Objekt definiert werden:
Das Type "text" erzeugt ein einzeiliges Textfeld, in das beliebiger Text eingeben werden kann.
Folgende KEYs können optional in der JSON-Konfiguration hinzugefügt werden:
<code-block>{ "type" : "text", "id" : "textfield", "label" : "Text", "label_de": "Text", "default" : "ABC", "info" : "<div>Tooltip Text<br/><b>HTML available</b></div>", "max" : 100 }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.textfield }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
ABC
</code-block>
Das Type "number" erzeugt ein Nummernfeld, in das eine Zahl eingeben werden kann.
Folgende KEYs können optional in der JSON-Konfiguration hinzugefügt werden:
<code-block>{ "type" : "number", "id" : "numberfield", "label" : "Number", "label_de": "Nummer", "default" : "0", "info" : "<div>Tooltip Text<br/><b>HTML available</b></div>", "max" : 100 }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.numberfield }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
0
</code-block>
Der Type "textarea" erzeugt ein mehrzeiliges Textfeld, in das beliebiger Text eingeben werden kann.
Folgende KEYs können optional in der JSON-Konfiguration hinzugefügt werden:
<code-block>{ "type" : "textarea", "id" : "textarea", "label" : "Textblock", "label_de": "Text", "default" : "ABC", "min" : 0, "max" : 1000 }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.textarea }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
ABC
</code-block>
Der Type "radio" erzeugt ein ein oder mehrere Radio Buttons.
Man kann dabei nur eine Option auswählen.
Folgende KEYs können optional in der JSON-Konfiguration hinzugefügt werden:
Die Konfiguration für die Radio Buttons werden im KEY "options" als Objekt in einem Array angegeben.
Hierbei ist zu beachten, dass ein "options" - Objekt ein "value"- und ein "label" - KEY enthalten muss!
Wichtiger Hinweis zu den Datentypen ("value"):
Der Datentyp in einem "options"-Objekt im VALUE des "value"-KEYs steht im Template als gleicher Datentyp zur Verfügung.
Im unteren Beispiel wurde jeweils ein String Datentyp als "value" in den "options" angegeben.
Im Template wird dies ebenfalls als String zur Verfügung gestellt.
Wird ein Integer/Number bzw. ein Boolean eingetragen ist der Datentyp im Template ebenfalls ein Integer/Number- bzw. ein Boolean- Datentyp.
Es sollte ebenfalls darauf geachtet werden, dass der "default"-VALUE der gleiche Datentyp wie in den einzelnen "option"-Objekten ist,
da sonst keine Default-Zuweisung erfolgen kann!
<code-block>{ "type" : "radio", "id" : "nav_icon_style", "label" : "Icon Navigation: Style", "label_de": "Icon Navigation: Style", "default" : "default-icons", "options" : [ { "value": "default-icons", "label": "Default", "label_de": "Standard"}, { "value": "light-icons" , "label": "Light" , "label_de": "Hell" }, { "value": "dark-icons" , "label": "Dark" , "label_de": "Dunkel" } ] }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.nav_icon_style }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
default-icons
</code-block>
Der Type "checkbox" erzeugt eine Checkbox,
bei der nur zwei Werte (false oder true) ausgewählt werden können.
<code-block>{ "type" : "checkbox", "id" : "show_searchfield", "default" : false, "label" : "Show searchfield", "label_de": "Zeige Suchfeld" }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.show_searchfield }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
false
</code-block>
Der Type "select" erzeugt eine Selectionbox,
bei der ein Wert aus einer Liste ausgewählt werden kann.
Die Konfiguration für die Liste werden im KEY "options" als Objekt in einem Array angegeben.
Hierbei ist zu beachten, dass ein "options" - Objekt ein "value"- und ein "label" - KEY enthalten muss!
Wichtiger Hinweis zu den Datentypen ("value"):
Der Datentyp in einem "options"-Objekt im VALUE des "value"-KEYs steht im Template als gleicher Datentyp zur Verfügung.
Im unteren Beispiel wurde jeweils ein Integer/Number Datentyp als "value" in den "options" angegeben.
Im Template wird dies ebenfalls als Integer/Number zur Verfügung gestellt.
Wird ein String bzw. ein Boolean eingetragen ist der Datentyp im Template ebenfalls ein String bzw. ein Boolean Datentyp.
Es sollte ebenfalls darauf geachtet werden, dass der "default"-VALUE der gleiche Datentyp wie in den einzelnen "option"-Objekten ist,
da sonst keine Default-Zuweisung erfolgen kann!
Optional: Artikel-Merkmals-Felder bzw. Eigene Content Felder
Es ist möglich die Selectionbox automatisch mit den konfigurierten Artikel- oder Content-Feldern ("Eigene Felder") bestücken zu lassen.
Hierbei wird auf die Konfiguration in dem "Eigene Felder"-Manager zugegriffen.
Die Felder, die dort unter Artikel(-Merkmale) bzw. Content konfiguriert sind, werden als Selectionbox-Optionen ausgegeben.
Hierbei ist das label die verwendete "Feldbezeichnung" und der value die Template-Varibale des Feldes (z.B. "_string1").
Beide Optionen sind nicht gleichzeitig möglich. Falls beide Konfigurationen eingestellt wurden, hat product_attributes den Vorrang.
Wird eine der Optinen aktiviert, benötigt man nicht zwingend die "options"-Struktur.
Ist die "options"-Struktur zusammen mit einer von den beiden Einstellungen aktiv, wird am Ende der Selectionbox die konfigurierte "options"-Struktur hinzugefügt.
<code-block>{ "type" : "select", "id" : "column_layout", "label" : "Column layout", "label_de": "Spalten Layout" "default" : 2, "options" : [ { "value": 1, "label": "1-column", "label_de": "1-spaltig", "icon": "fa-address-book"}, { "value": 2, "label": "2-columns", "label_de": "2-spaltig", "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="}, { "value": 3, "label": "3-columns", "label_de": "3-spaltig"}, { "value": 4, "label": "4-columns", "label_de": "4-spaltig"} ] }</code-block>
Widget-Output in oSM:
Hinweis zu dem KEY "icon":
Im ersten Selectionbox-Wert ("1-column") wird ein Icon ("fa-address-book"-Icon) aus der font-awesome-Biblothek neben dem "label" angezeigt.
Im zweiten Selectionbox-Wert ("2-columns") wird ein Icon (ein roter Punkt) mit Hilfe der data-URI-Kodierung neben dem "label" angezeigt:
Verwendung im liquid-Template:
<code-block>
{{ settings.column_layout }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
2
</code-block>
Der Type "range" erzeugt einen Schieberegler, mit dem man eine Zahl mit vorgelegtem Min/Max-Wert und einer Schrittweite einstellen kann.
Es kann optional eine Einheit mit konfiguriert werde (z.B. px, em, ...), die jedoch nur für die Widget-Anzeige von Bedeutung ist.
Es kommen folgende KEYs in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "range", "id" : "font_opacity", "label" : "Font opacity", "label_de": "Schrift Deckkraft" "default" : 0.9, "min" : 0, "max" : 1, "step" : 0.1, "unit" : "%", "unit_multiplicator": 100 }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.font_opacity }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
0.9
</code-block>
Der Type "color" erzeugt ein Farb-Picker-Feld, mit dem man eine beliebige Farbe auswählen kann.
Hierbei ist es entscheidend, wie der Farbwert im "default"-VALUE angegeben wird.
Wird der Farbwert als HEX- ,RGB oder HSL-Wert angegeben, kann im Farb-Picker kein Alpha-Kanal eingestellt werden bzw. hat keinen Einfluss.
Wenn ein RGBA- oder ein HSLA-Farbwert angegeben wurde kann auch der Alpha-Kanal eingestellt werden.
Somit kann man Einfluss nehmen, ob der Alphakanal angewendet werden soll oder nicht.
<code-block>{ "type" : "color", "id" : "background_color", "label" : "Background color", "label_de": "Hintergrund Farbe" "default" : "#ffffff" }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.background_color }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
#ffffff
</code-block>
Der Type "url" erzeugt ein Feld und ein Button, bei dem man eine Resource (Artikel, Seite, Content) auswählen kann, von der die URL übernommen wird.
Ist der Shop ein mehrsprachiger Shop, so werden bei der Resourcenauswahl alle zur Verfügung stehenden URLs in allen Sprachen zur Auswahl angeboten.
Standardmäßig wird neben dem "Auswahl"-Button auch ein "Entfernen"-Button angezeigt, um die ausgewählte URL zu löschen.
Dieser Button kann mit Hilfe der Konfiguration "removable": false ausgeblendet werden, um zwingend eine URL erfassen zu lassen.
Es kommt somit folgender optionaler KEY in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "url", "id" : "urllink", "label" : "URL Link", "label_de" : "URL Link" "removable": false, "default" : "/link/" }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.urllink }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
/pizza/
</code-block>
Der Type "contentmedia_picker" erzeugt ein Bild-Picker, mit dem man aus dem Content-Media Bereich ein Bild auswählen kann.
Höhe/Breite/AspectRatio eines Bildes
Optional kann die Breite, Höhe und AspectRatio des Bildes mit gespeichert werden.
Hierbei muss der KEY / VALUE : "extract_dimension": true in die Konfiguration eingetragen werden.
Dabei werden in der settings_data.json drei zusätzliche Felder angelegt, die dem folgenden Schema entsprechen:
DataURI(Base64) String eines Bildes
Optional kann der DataURI-String des Bildes anstatt der Dateipfad gespeichert werden.
Hierbei muss der KEY / VALUE : "dataURI": true in die Konfiguration eingetragen werden.
Beispiel siehe: assetmedia_picker
Min/Max Dateigröße
Optional kann ein min und/oder max Wert in Bytes angegeben werden, der angibt, wie groß (Dateigröße in Bytes) ein ausgewähltes Bild mindestens/maximal sein kann/darf.
Falls der Wert unter/über-schritten wird, wird eine Warnmeldung angezeigt, dass dieses Bild nicht ausgewählt werden kann, weil es zu klein/groß ist (Mit Angabe von aktueller Dateigröße und minimale/maximal erlaubte Dateigröße.)
Einschränkungen auf Bild-Dateiendungen
Optional kann der Picker auf bestimmte Bild-Dateiendungen eingeschränkt werden, um z.B. nur ".gif"-Bilder zu picken bzw. hochzuladen.
Dies wird über den KEY image_types realisiert. Als Value kann ein String mit Bild-Dateieindungen angegeben werden, mit einem ";" (Semikolon) als Trenner.
z.B. "jpg;gif" erlaubt nur das Picken von JPG- und Gif-Bildern.
Erlaubte Dateiendungen im String für ein Bild sind: jpg, gif, png, ico, svg
Dies ist auch die Default-Einstellung, falls kein image_types - KEY angegeben wurde.
<code-block>{ "type" : "contentmedia_picker", "id" : "logo", "label" : "Logo", "label_de" : "Logo" "extract_dimension": true, "image_types": "jpg;png;gif", "max" : 512000 }</code-block>
Widget-Output in oSM:
Erlaubt das Picken eines Bildes vom Typ: "jpg", "png", und "gif" mit einer maximalen Größe von 512KB.
Verwendung im liquid-Template:
<code-block>
{{ settings.logo | content_media_url:'large' }}
{{ settings.logo_width }}
{{ settings.logo_height }}
{{ settings.logo_aspectratio }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
[BILD-SRC wird angezeigt]
[BILD-Breite wird ausgegeben]
[BILD-Höhe wird ausgegeben]
[BILD-AspectRatio wird ausgegeben]
</code-block>
Der Type "assetmedia_picker" erzeugt ein Bild-Picker, mit dem man aus dem Asset-Media Bereich ein Bild auswählen kann.
Höhe/Breite/AspectRatio eines Bildes
Optional kann die Breite, Höhe und AspectRatio des Bildes mit gespeichert werden.
Hierbei muss der KEY / VALUE : "extract_dimension": true in die Konfiguration eingetragen werden.
Dabei werden in der settings_data.json drei zusätzliche Felder angelegt, die dem folgenden Schema entsprechen:
DataURI(Base64) String eines Bildes
Optional kann der DataURI-String des Bildes anstatt der Dateipfad gespeichert werden.
Hierbei muss der KEY / VALUE : "dataURI": true in die Konfiguration eingetragen werden.
Min/Max Dateigröße
Optional kann ein min- und/oder max-Wert in Bytes angegeben werden, der angibt, wie groß (Dateigröße in Bytes) ein ausgewähltes Bild mindestens/maximal sein kann/darf.
Falls der Wert unter/über-schritten wird, wird eine Warnmeldung angezeigt, dass dieses Bild nicht ausgewählt werden kann, weil es zu klein/groß ist (Mit Angabe von aktueller Dateigröße und minimale/maximal erlaubte Dateigröße.)
Einschränkungen auf Bild-Dateiendungen
Optional kann der Picker auf bestimmte Bild-Dateiendungen eingeschränkt werden, um z.B. nur ".gif"-Bilder zu picken bzw. hochzuladen.
Dies wird über den KEY image_types realisiert. Als Value kann ein String mit Bild-Dateieindungen angegeben werden, mit einem ";" (Semikolon) als Trenner.
z.B. "jpg;gif" erlaubt nur das Picken von JPG- und Gif-Bildern.
Erlaubte Dateiendungen im String für ein Bild sind: jpg, gif, png, ico, svg
Dies ist auch die Default-Einstellung, falls kein image_types - KEY angegeben wurde.
<code-block>{ "type" : "assetmedia_picker", "id" : "logo", "label" : "Logo", "label_de" : "Logo" "extract_dimension": true, "dataURI": true, "image_types": "png", "max" : 512000 }</code-block>
Widget-Output in oSM:
Erlaubt das Picken eines Bildes vom Typ: "png" mit einer maximalen Größe von 512KB.
Verwendung im liquid-Template:
<code-block>
{{ settings.logo }}
{{ settings.logo_width }}
{{ settings.logo_height }}
{{ settings.logo_aspectratio }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
[BILD-base64-String wird angezeigt]
[BILD-Breite wird ausgegeben]
[BILD-Höhe wird ausgegeben]
[BILD-AspectRatio wird ausgegeben]
</code-block>
Der Type "article" erzeugt ein Feld und ein Button, bei dem man einen Artikel auswählen kann, von der die Artikel ID übernommen wird.
Es können nur Artikel ausgewählt werden, die den gleichen Shopaspekt zugeordnet haben, wie das aktuell bearbeitete Theme.
Standardmäßig wird neben dem "Auswahl"-Button auch ein "Entfernen"-Button angezeigt, um die ausgewählte Artikel ID zu löschen.
Dieser Button kann mit Hilfe der Konfiguration "removable": false ausgeblendet werden, um zwingend eine Artikel ID erfassen zu lassen.
Dem Artikelpicker kann optional drei weitere Konfigurationen mitgegeben werden um das Auswählen von Artikeln einzuschränken:
Es kommen somit folgende optionale KEYs in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "product", "label" : "Top product", "label_de" : "Top Artikel", "id" : "top_product", "disable_variant": true, "disable_normal" : true, "default" : 96250 }</code-block>
Widget-Output in oSM:
Bei der Auswahl "Select product..." können bei dieser Konfiguration im Artikelpicker nur Hauptartikel IDs ausgewählt werden,
keine Variantenartikel oder "Normale" Artikel.
Verwendung im liquid-Template:
<code-block>
{{ settings.top_product }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
96250
</code-block>
Der Type "page" erzeugt ein Feld und ein Button, bei dem man eine Seite auswählen kann, von der die Seiten ID übernommen wird.
Es können nur Seiten ausgewählt werden, die den gleichen Shopaspekt zugeordnet haben, wie das aktuell bearbeitete Theme.
Bei diesem Widget ist zwingend eine weiter Konfiguration nötig: page_type: ["productlist" ODER "contentlist"]
Diese Konfiguration gibt an, ob man
Standardmäßig wird neben dem "Auswahl"-Button auch ein "Entfernen"-Button angezeigt, um die ausgewählte Seiten ID zu löschen.
Dieser Button kann mit Hilfe der Konfiguration "removable": false ausgeblendet werden, um zwingend eine Seiten ID erfassen zu lassen.
Es kommen somit folgende KEYs in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "page", "page_type": "productlist", "id" : "topten_products", "label" : "Top 10 products", "label_de" : "Top 10 Artikel", "default" : 297 }</code-block>
Widget-Output in oSM:
Bei der Auswahl "Select page..." können bei dieser Konfiguration im Seitenpicker nur Artikellisten/Artikelalias-Seiten ausgewählt werden,
keine Contentlisten/Contentalias-Seiten.
Verwendung im liquid-Template:
<code-block>
{{ settings.topten_products }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
297
</code-block>
Der Type "content" erzeugt ein Feld und ein Button, bei dem man einen Content auswählen kann, von der die Content ID übernommen wird.
Es können keine Paragraphen ausgewählt werden und nur Contents, die eine URL besitzen, können übernommen werden.
Außerdem können nur Contents ausgewählt werden, die den gleichen Shopaspekt zugeordnet haben, wie das aktuell bearbeitete Theme.
Standardmäßig wird neben dem "Auswahl"-Button auch ein "Entfernen"-Button angezeigt, um die ausgewählte Content ID zu löschen.
Dieser Button kann mit Hilfe der Konfiguration "removable": false ausgeblendet werden, um zwingend eine Content ID erfassen zu lassen.
Es kommt somit folgender optionaler KEY in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "content", "id" : "top_news", "label" : "Top news", "label_de": "Top Meldungen", "default" : 123 }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.top_news }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
123
</code-block>
Der Type "linklist" erzeugt ein Feld und ein Button, bei dem man eine Linkliste oder einen Link auswählen kann, von dem der "Template Handle" übernommen wird.
Hinweis: Bei einem Link-Widget können nur Links ausgewählt werden, die einen "Template Handle" besitzen.
Außerdem können nur Linklisten ausgewählt werden, die den gleichen Shopaspekt zugeordnet haben, wie das aktuell bearbeitete Theme.
Bei diesem Widget ist zwingend eine weiter Konfiguration nötig: link_type: ["linklist" ODER "link"]
Diese Konfiguration gibt an, ob man
Eine Besonderheit bei dem "link_type": "link"
Um den "Template Handle" der Linkliste UND des Links zu erfassen wird in der settings_data.json ein zusätzliches Felder angelegt, das dem folgenden Schema entspricht:
Im Haupt-Value (["linklist".id]) in der settings_data.json wird je nach "link_type" der entsprechende "Template Handle" gespeichert:
Optional kann bei einem "link_type": "link" der KEY "fix_linklist" mit einem "Template Handle" als VALUE angegeben werden.
Damit wird sichergestellt, dass ein Link nur aus einer bestimmten Linkliste ausgewählt werden kann.
Standardmäßig wird neben dem "Auswahl"-Button auch ein "Entfernen"-Button angezeigt, um den ausgewählten "Template Handle" zu löschen.
Dieser Button kann mit Hilfe der Konfiguration "removable": false ausgeblendet werden, um zwingend einen "Template Handle" erfassen zu lassen.
Es kommen somit folgende KEYs in der JSON-Konfiguration hinzu:
<code-block>{ "type" : "linklist", "id" : "main_slider", "label" : "Main slider", "label_de" : "Haupt Slider", "link_type" : "link", "fix_linklist": "main" }</code-block>
Widget-Output in oSM:
Verwendung im liquid-Template:
<code-block>
{{ settings.main_slider }}
{{ settings.main_slider_linklist_handle }}
{{ settings.main_slider_link_handle }}
</code-block>
Output des Beispiels im liquid-Template:
<code-block>
[Link-Template-Handle wird ausgegeben]
[Linklist-Template-Handle wird ausgegeben]
[Link-Template-Handle wird ausgegeben]
</code-block>
Der Type "paragraph" erzeugt ein Feld, das einen vorgegebenen Text andruckt.
Das Feld kann nicht bearbeitet werden und dient lediglich dazu, um weitere Informationen anzudrucken.
Es enthält nur die KEY's "type" und "content". Im "content"-VALUE kann html-Syntax verwendet werden
<code-block>{ "type" : "paragraph", "content" : "<h2>Information</h2>", "content_de": "<h2>Information</h2>", }</code-block>
Widget-Output in oSM: