TB.One > Produkt- und Artikeldaten > Vorlagen > Twig-Templates anlegen > FUNKTIONSWEISE DER TWIG TEMPLATING LANGUAGE

FUNKTIONSWEISE DER TWIG TEMPLATING LANGUAGE

Falls du das Standardtemplate nicht nutzen möchtest, weil du z.B. die Reihenfolge oder Darstellung der Informationen ändern willst, kannst du über die Twig Engine ein eigenes Template erstellen. Verweise dazu auf eine CSS-Datei, um die Darstellung deiner Produkte zu formatieren. Eine ausführliche Dokumentation zur Nutzung der Twig Engine findest du unter twig.symfony.com.

Grundsätzlich werden die Werte in zwei geschweiften Klammern ausgeben, die durch genau 1 Leerzeichen vom Inhalt getrennt sind.

 

{{ someVariable }}

 

Um z.B. Zeilenumbrüche beizubehalten, die in deiner Produktbeschreibung enthalten sind, fügst du dem Aufruf der Variable einen Marker (nl2br) hinzu. Die Variable und der Marker müssen über eine sog. Pipe (|) getrennt sein. So wird jeder vorhandene Zeilenumbruch aus TB.One als <br>-Tag übergeben und so auch in der Ausgabe entsprechende Zeilenumbrüche erzeugt. Der Marker gilt für die Aufrufe von Produktbeschreibung, Servicetext und Umwelttext.

<p>{{ product.text | nl2br }}</p>

 

Operationen werden mit geschweifter Klammer und Prozent umschlossen. Zum Beispiel weist der folgende Ausdruck der Variable „someVariable" den Wert 1 zu:

{% set someVariable = 1 %}

 

Folgender Ausdruck hingegen überprüft, ob der Wert in "someVariable" 1 entspricht und gibt diese dann aus:

{% if someVariable == 1 %}

 {{ someVariable }}

{% endif %}

VERFÜGBARE VARIABLEN ABFRAGEN

Du kannst über die Templatemaske die in einem Knoten verfügbaren Informationen abfragen, in dem du unter "Basisdaten > Vorlagen > Templates"die Detailansicht eines Templates öffnest. Am besten erstellst du dazu ein neues leeres Template, um vorhandene Templates nicht versehentlich zu überschreiben. Frage die verfügbaren Felder mit dem Befehl "dump(KNOTEN)" ab. Formatiere die Abfrage für eine bessere Übersicht:

<pre>{{ dump(product.text_bullets) }}</pre>

 

Öffne die Template-Vorschau und wähle ein Produkt, um eine Liste aller Informationen einzusehen, die im abgefragten Knoten enthalten sind.

Verfügbare Variablen_de

FELDBESCHREIBUNGEN

Die meisten Produkt- und Artikel-Felder aus TB.One können über ein Template referenziert werden. Eine komplette Liste der Feldbeschreibungen findest du hier.

ARTIKEL AUFRUFEN

Um einen Artikel aufzurufen, must du zuvor das zugehörige Produkt aufrufen (du musst also zuerst auf den Elternknoten referenzieren, damit die Artikel korrekt gefunden werden können). Das folgende Beispiel würde für jeden Artikel des referenzierten Produkts die Artikelnummer, die EAN und die Packmaße auflisten.

{% for article in product.articles %}

 <!-- Artikelnummer einfügen -->

 {{ article.a_nr }}

 <!-- EAN einfügen -->

 {{ article.a_ean }}

 <!-- Verpackungsbreite x Länge x Höhe -->        

 {{ article.packaging.width }}&nbsp;cm x {{ article.packaging.length }}&nbsp;cm x {{ article.packaging.height }}&nbsp;cm

{% endfor %}

MEDIEN AUFRUFEN

Du kannst nach Medientypen (MANUAL, IMAGE, AMBIENT, COLOR, FRONTVIEW, MATERIAL, ASSEMBLYGUIDE, CAREINSTRUCTION, SKETCH, REARVIEW, RATING, PREVIEW) filtern, indem du das Feld "type" abfragst.

FELDNAME

PARENT

TYP

BESCHREIBUNG

type

media

String

Medientyp (IMAGE etc.)

Derzeit ist eine Medienausspielung im Template nur auf Basis des eBay Picture Service (EPS) möglich. Für andere Kanäle ist der templatebasierte Export nicht möglich. Um ein Medium mit dem EPS-Link auszuspielen, muss der "media"-Aufruf den Parameter eps_url() enthalten. Der Wert in Klammern definiert das Zielformat.

Listung aller Produktmedien (inkl. HTML):

{% for media in product.media %}

 <img src="{{ media | eps_url(10) }}" />

{% endfor %}

 

Listung aller Artikelmedien (inkl. HTML):

{% for article in product.articles %}

 {% for media in article.media %}

         <img src="{{ media | eps_url(10) }}" />

 {% endfor %}

{% endfor %}

 

Wenn du ein Bild mit mehreren Varianten geliefert hast (z.B. die Darstellung der Variante "blau" jeweils für die Größe S, M, L und XL), würde die obige Darstellung das Bild auch vier Mal einbinden. Um dies zu unterdrücken, musst du die Listung aller Medien für doppelt vorhandene Bilder anpassen:

{% for row in media %}

 <img src="{{ row | eps_url(10) }}" />

{% endfor %}

 

Willst du nur das erste Produktbild ausspielen, erreichst du das mit folgendem Aufruf über die Bild-ID:

{% if not product.media is empty %}

 <img id="Bild0" class="artikel_gross" src="{{ product.media|first|eps_url(10) }}" alt="{{ product.brand.name }}{{ product.name_proper }}" />

{% endif %}

 

Möchtest du nur das erste Artikelbild übermitteln (z.B. weil du keine Produktbilder in deinen Daten bereitgestellt hast), verwende den folgenden Aufruf:

{% if not product.articles is empty %}

 {% if not product.articles|first.media is empty %}

         <img id="Bild0" class="artikel_gross" src="{{ product.articles|first.media|first|eps_url(29) }}" alt="{{ product.brand.name }}{{ product.name_proper }}" />

 {% endif %}

{% endif %}

 

eBay unterstützt eine Reihe von Formaten, die in der Klammer des Parameters eps_url() angegeben werden können.

PARAMETER

ABMESSUNGEN


PARAMETER

ABMESSUNGEN

eps_url(10)

1.200 x 1.200


eps_url(30)

115 x 115

eps_url(32)

1.000 x 1.000


eps_url(0)

96 x 96

eps_url(3)

800 x 800


eps_url(17)

80 x 80

eps_url(20)

600 x 600


eps_url(6)

70 x 70

eps_url(12)

500 x 500


eps_url(14)

64 x 64

eps_url(27)

480 x 480


eps_url(22)

60 x 60

eps_url(1)

400 x 400


eps_url(33)

48 x 48

eps_url(29)

300 x 300


eps_url(13)

42 x 42

eps_url(24)

298 x 298




eps_url(31)

225 x 225


eps_url(4)

640 x 480

eps_url(2)

200 x 200


eps_url(16)

400 x 300

eps_url(7)

150 x 150


eps_url(11)

310 x 90

eps_url(26)

140 x 140


eps_url(9)

200 x 150

eps_url(15)

125 x 125


eps_url(5)

100 x 75

ICONAUFRUF

Wenn du ein Markenbild an den Kanal übertragen möchtest, speichere es unter exakt demselben Namen ab, den du als Markennamen an den Kanal überträgst. Verwende als Aufruf:

<img src="http://meinserver.de/images/{{ product.brand.name|url_encode }}.jpg" alt="{{ product.brand.name }}">

 

Beispiel:

<img src="http://meinserver.de/images/adidas.jpg" alt="adidas">

 

Servicelogos können nicht übertragen werden.

KANALFILTER

Du kannst dir auch einzelne Informationen je nach Kanal anzeigen lassen. Hierzu verwendest du einfach das Kanalkürzel als Filter:

{{ channel.short.name }}

PRODUKTLINKS

FELDNAME

PARENT

TYP

BESCHREIBUNG

link

links

Array

Eine einzelne Produktverknüpfung

type

link

String

CROSS, ACCESSORY, DEVICE, UPSELLING, ALTERNATIVE

target

link

String

Enthält Details zum Ziel der Verknüpfung

p_nr

target

String

Produktnummer des Ziels

prefix

target

String

Präfix des Ziels

name_keyword

target

String

Gattungsname des Ziels

name_proper

target

String

Eigenname des Ziels

media

target

Array

Medium des Ziels (vgl. Abschnitt "Medienaufruf")

channel_data

target

Array

Kanalspezifische Daten des Ziels

item_id

channel_data

Integer

Item ID (nur eBay)

 

Beispiel:

{% if channel.short_name == "ebde" %}

 {% set fittingArticles=[] %}

<!-- Füge max. 8 Produktlinks ein -->

 {% set links=product|collect_ebay_links(8) %}

 {% if not links is empty %}

         <div>

                 <h2> Weitere Empfehlungen</h2>

                 {% for link in links %}

                         {% set fittingArticles=fittingArticles|merge([link.target.p_nr]) %}

                 {% endfor %}

         </div>

 {% endif %}

{% endif %}


Weiterführende Informationen:

•Twig Templating Language - Überblick

•Templateverwaltung

•Twig Templating Language - Feldbeschreibungen

•Beispiel-Template