Die Erzeugung von Content / Inhalt in Online Shops kann sehr aufwändig und zeitraubend sein. Oft werden auch Artikel-Attribute, Crosselling und Zubehör nicht oder nicht vollständig gepflegt.
Die manuelle Erstellung und Optimierung von Informationen pro Artikel bzw. Shop-Kategorien sollte immer das Ziel sein.
Allerdings kann die (halb-automatische) Erstellung von Content durchaus Sinn machen. “Leere” Webseiten bieten Shop Besuchern kaum einen Mehrwert und verschlechtern den Gesamteindruck der Webseite immens. Genau das wird auch von Suchmaschinen auch bemerkt und es hat negative Konsequenzen!
Nachteile von nicht ausreichend gepflegten Artikel bzw. Kategorie Seiten
zu wenig Informationen vorhanden um eine Kaufentscheidung zu treffen → Kunde kauft dort wo er gute Informationen bekommt!
Produktseiten ähneln sich sehr und laden so nicht zum Stöbern ein
höhere Abbruchquoten
kurze Verweildauer
schlechtere Conversion
negative Signale an Suchmaschinen. Diese bewerten die Seite schlecht bzw. nehmen sie nicht in den Index auf. Folge: keine Besucher über diese Seite
sehr schlechtes Gesamtbild der Webseite. Für potentielle Käufe als auch für Suchmaschinen
Webseiten werden bei Google auch durch Menschen (Google Quality Rater) geprüft und je bewertet!
“Kanibalisierung” von Inhalten → kein stabiles Ranking
Ergebnis: Vertrauen in die Webseite durch User und Suchmaschinen sehr schlecht!
Es lohnt sich also für gute Inhalte zu sorgen!
halbautomatische Content Erzeugung
Sicherlich ist es immer das Optimum Inhalte manuell zu erzeugen! Um aber einen Anfang zu machen bzw. eine Webseite insgesamt sehr stark aufzuwerten, eignet sich das DOIT Content Modul sehr gut. Es macht sicherlich Sinn anschließend die wichtigen Landing Pages nachzuoptimieren.
Landingpages
Ziel einer Internetseite ist es Besucher auf die für ihn bestimmten Seiten zu bekommen. Diese Seiten werden Landingpages genannt.
Im Prinzip bedeutet dies, dass jede Seite einen bestimmten Zweck hat:
Artikel Detailseiten Ziel
ein Besucher der ein Produkt sucht und eventuell kaufen will
er muss hier auf möglichst effektive Weise die zur Kaufentscheidung benötigten Informationen bekommen
der potentielle Käufer muss ein positives Gefühl bekommen, dass es richtig ist in diesem Shop zu bestellen.
Kategorie Seiten Ziel
Besucher der Produkte einer Kategorie sucht
auf der Kategorie Landingpage müssen die Produkte so dargestellt werden dass sofort ersichtlich ist welche Artikel angeboten werden.
bei ähnlichen Artikel muss schon auf Ebene der Kategorie Seite klar ersichtlich sein was die Unterschiede der ähnlichen Artikel sind.
Hersteller Seiten Ziel
Besucher der Artikel eines Herstellers sucht
Besucher der Informationen zu einem Hersteller sucht
Auswirkungen von schlecht gepflegten Landing Pages
Artikel-Detailseiten
Shops verfügen meistens über eine Vielzahl von Artikeln. Die Pflege der großen Anzahl von Artikel kann sehr aufwändig sein. Dennoch haben schlecht gepflegte Artikel negative Auswirkungen.
negative Auswirkungen
Kunde
Kaufentscheidung wird nicht ermöglicht da Informationen fehlen
Kauf beim Mitbewerber da dort die für den Kauf wichtigen Informationen vorhanden sind
schlechte Conversion
wenig Vertrauen in den Shop / Shopbetreiber
Suchmaschinen
schlechte oder keine Rankings und somit kaum Besucher
schlechte oder keine Indizierung der Seite
Duplicate Content Probleme (viele ähnliche schlechte Seiten)
insgesamt schlechte Bewertung der Website z.B. auch durch Google Quality Rater
Inhalte werden von Google als “wertlos” betrachtet und das Gesamtbild des Shops negativ beeinträchtigt
Kategorie-Seiten
Shop Kategorie Seiten sind sehr gut als Landing Pages geeignet. Meistens ist die Anzahl der Shop Kategorien wesentlich geringer als die der Artikel. Somit ist die Optimierung der Kategorien weniger aufwändig. Es macht auch viel Sinn mindestens die wirklich wichtigen Shop Kategorien manuell zu optimieren.
Typen von schlechten Kategorie Seiten
Kategorien mit wenigen Artikeln
Seite bietet keinen wirklichen Mehrwert
Kategorien mit sehr vielen Produkten
die Kategorie Seite enthält eine Paginierung mit sehr vielen Seiten
welche der Kategorie Seiten die eigentliche Landingpage ist, ist unklar
Produkte können nur schwer gefunden werden
Duplicate Content Probleme
Artikel in einer Kategorie nicht klar unterscheidbar
die Artikelliste der Kategorie liefert ungenügend Informationen. Der Kunde kann nicht unterscheiden zu welchem Artikel er gehen soll
Variantenauflistung
Produkte die eigentlich nur Produkt-Varianten eines Artikels sind, werden als einzelne Artikel dargestellt.
alle Artikel (Varianten) sehen gleich aus.
Suchmaschinen bewerten dies möglicherweise negativ
Kategorien ohne Content
Seiten die lediglich aus Links zu weiteren Unterkategorien enthalten, sind nicht wirklich gute Landingpages
Kategorien ohne Artikel
Bei vielen Artikeln einer Kategorie macht es durchaus Sinn die wichtigsten Artikel dieser Kategorie als Artikelliste anzuzeigen
Hersteller-Seiten
Oft wird das Potential von gut gepflegten Hersteller-Seiten nicht genutzt. Hersteller Namen in Verbindung mit Produkt Namen sind eine gängige Sucheingabe in Suchmaschinen. Auch ist es vertrauensfördernd Informationen zu einem Hersteller und seinen Produkten anzubieten. Es kann auch Sinn machen die beliebtesten Artikel eines Herstellers auf Hersteller Seiten hervorzuheben.
Hersteller Seiten werden oft eher vernachlässigt, da auf Ebene der Produkt-Detailseiten auch auf Hersteller und Produktname optimiert wird.
Grundlegendes zu Landing Pages
Bei der Optimierung von Webseiten wird oft darauf optimiert ob Besucher über Keyword oder Keyword Kombinationen die Seite erreichen. Diesen Ansatz halten wir für nicht ausreichend!
Der richtige Ansatz für “SEO” ist die Optimierung von Webseiten nach ihrem Zweck und dem Benutzer-Erlebnis! Nicht umsonst nennt man SEO auch S earch E xperience O ptimisation !!!
Wenn eine für den Besucher optimierte Seite Keywords oder Keyword Kombinationen enthält und diese Sinn machen, dann haben diese eine Daseinsberechtigung!
Der Fokus muss aber IMMER beim Webseiten Besucher sein!
gut gepflegte Landing Pages
Artikel-Detailseiten
einen eindeutigen Artikel Titel der für jeden Artikel individuell ist
eine aussagekräftige Kurzbeschreibung,die sofort erkennen lässt um was es sich bei diesem Artikel handelt bzw. wie dieser Artikel sich von anderen ähnlichen Artikeln unterscheidet.
gut gepflegte Produkt Attribute
Attribute liefern auf einen Blick Informationen über die wichtigsten Produktmerkmale
Attribute werden bei Produktvergleichen eingeblendet und deshalb liefern Produktvergleiche nur die wichtigen Informationen wenn Attribute gepflegt sind
für die Erzeugung von Attributen eignet sich das DOIT Attributes Modul hervorragend.
Informationen zum Hersteller des Produkts
Kategorie Seiten
Dieser Typ von Landing-Pages ist oft die eigentliche Einstiegsseite von Shop Besuchern. Artikel-Detailseiten generieren oft nur wenige Besuche, wenn sie nicht hervorrragend gepflegt sind. Kategorie Seite sind mit weniger Aufwand so zu optimieren dass Ranking erzielt werden können.
eindeutige gut beschreibende Kategorien / Unterkategorie Namen
eventuell kurze Beschreibungen der Unterkategorien. Sie dienen der Orientierung
Bilder / Thumbnails für Unterkategorien
gut strukturierter Kategorienbaum der pro Kategorie nur eine überschaubare Anzahl Artikel zulässt
Artikellisten heben die Unterschiede der Artikel gut dar. Der User kann sofort erkennen auf welchen Artikel er klicken muss.
in Artikellisten werden KEINE Varianten der Artikel aufgelistet
Hersteller Seiten
Dieser Landing Page Typ kann sehr gut optimiert werden auf Hersteller Suchen. Das Suchvolumen für einen Hersteller Namen ist oft recht groß.
Landing Page Blöcke
Es kann Sinn machen Seiten mit Informations-Blöcken aufzuwerten.
Beispiele:
Kontaktinformationen
besondere Angebote
Preisersparnis Hinweise
Crossselling / Zubehör
Artikel Detailseiten sollten über gut gepflegtes Crossselling und Zubehör verfügen.
Mit dem DOIT Content Modul können dynamische Inhalte wie Crossselling und Zubehör erzeugt werden.
Wir empfehlen aber hierfür auch das DOIT CrossSelling / Zubehör Modul.
Gedanken zum Thema Seitenqualität
Bei der Erstellung von Landing Pages zählt aus unserer Sicht NICHT primär, dass SEO im Sinne von technischem SEO betrieben wird. Technisches SEO ist nur 1 Grundpfeiler erfolgreicher Webseiten.
Wenn technisches SEO in einem Shop erfolgreich umgesetzt ist, aber der Inhalte ungenügend ist, sind die Seiten nach wie vor ohne Mehrwert für den Kunden!
Um einen Webshop wirklich erfolgreich zu betreiben muss deer Inhalt eines Shops am User orientiert optimiert sein!
Ist er dies nicht wird oft mit dem Argument “der Kunde kauft nur über den Preis” argumentiert.
Die Ansicht dass es Kunden bei einer Kaufentscheidung hauptsächlich über Preis geht, vertreten wird eindeutig nicht!
Kunden kaufen dann, wenn sie sich wohl fühlen und eine Kaufentscheidung sich gut anfühlt!
Der Zweck aller unsererer DOIT Module ist Ihnen die Pflege Ihres Shops möglichst einfach zu machen.
YAML-Konfigurations-Dateien
Die Konfiguration des DOIT Import Moduls wird (wie bei allen DOIT Modulen) in einer oder mehreren YAML-Dateien eingestellt.
YAML Dateien sind vergleichbar mit XML Dateien und werden dementsprechend strukturiert aufgebaut.
DOIT Modul Einstellungen
Um das DOIT Import Modul aufrufen zu können, muss es als DOIT Modul konfiguriert sein.
Die Konfigurationsdatei, z.B. “doitcontent.yaml” muss sich im Verzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent“
befinden.
Weitere Informationen zum Aufbau dieser Datei finden Sie in der DOIT Workflow Modul Dokumentation.
meinTask.yaml:
task: module: id: doitcontent name: Do It Content erstellen classname: DoItContent namespacename: WebTools\DoItContent\Application\Controller\Admin\DoIt active: true stepsize: 25 form: active: true template: alternative_definition: id: Form1 name: FormName submits: taskformsubmit: type: submit active: true id: submit name: Submit value: TaskFormSubmit css: btn btn-success mt-3 label: Content erstellen rows: row01: id: Row1 columns: column0: id: col0 css: col-md-12 name: Content Generator label: Content Generator type: text value: Dieses Modul erstellt Content! steps: Generate_ArticleContent: id: GenerateArticleContent active: true name: Article Content Generator handling: run mode: dbtable functionname: generateArticleContent functionparams: dbtable: oxarticles Generate_CategoryContent: id: GenerateCategoryContent active: true name: Category Content Generator handling: run mode: dbtable functionname: generateCategoryContent functionparams: dbtable: oxcategories Generate_ManufacturerContent: id: GenerateManufacturerContent active: true name: Manufacturer Content Generator handling: run mode: dbtable functionname: generateManufacturerContent functionparams: dbtable: oxmanufacturers
Diese Konfiguration erzeugt nacheinander Content für Artikel, Kategorien und Hersteller.
Eine DOIT Konfiguration für die Erzeugung von Textblöcken anhand von Kategorien könnte folgendermassen aussehen:
task: module: id: doitcontentcategorytexts name: Do It Content Kategorien Texteblöcke erstellen classname: DoItContent namespacename: WebTools\DoItContent\Application\Controller\Admin\DoIt active: true stepsize: 10 steps: Generate_CategoryBlock_top: id: GenerateCategoryBlock_top active: true die: true debugmax: 1 name: Category Content Block TOP handling: run mode: dbtable functionname: generateCategoryContent functionparams: NameDesDOITContentYamlTemplates dbtable: oxcategories
DOIT Content Inhalte Konfiguration
Die Konfigurationsdateien für Inhalte, z.B. “article.yaml” müssen sich im Sprachen Verzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/SprachId/“
befinden.
Z.B.: „Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/0/“ für die Shop Sprache 0.
Landingpage Content Typen
Der Übersichtlichkeit halber wird nach 3 Landingpage Typen unterschieden.
Artikel
language: de: type: article:
Kategorie
language: de: type: category:
Hersteller
language: de: type: manufacturer:
Für jeden Landingpage Typ können eigene Einstellungen gemacht werden:
language: de: type: article/category/manufacturer: # übergeordnete Clearing Einstellungen clearing: general: true / false regex: replace: delete: # übergeordnete Einstellungen settings: synonyms: allow: true / false functions: function1_x: # übergeordenete Synonyme synonyms: synonym1_x: # alle Templates dieser Konfiguration templates: template1_x:
Aufbau templates / blocks / block
Jede Konfiguration kann tief erweitert werden.
language: de: type: article: templates: template1: blocks: template1_block1: template1_block2: template1_block_x: template2: blocks: template2_block1: template2_block_x: template_x: blocks: template_x_block1:
Da die Konfiguration sehr umfangreich werden kann, bietet es sich an die Konfigurationen in mehrere Dateien zu splitten
Template 1:
language: de: type: article: templates: template1: blocks: template1_block1: template1_block2: template1_block_x:
Template 2:
language: de: type: article: templates: template2: blocks: template2_block1: template2_block_x:
Template-x:
language: de: type: article: templates: template-x: blocks: template_x_block1:
Jedes Template kann beliebig viele Blocks haben, die nacheinander oder nach Sortierung abgearbeitet werden.
Blocks
Ein Block entspricht einem Inhalt der je nach Bedingung (Condition) verarbeitet wird.
Ausgabe von Text Inhalt inkl. H2-Überschrift:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true header: type: h2 css: text: - 'Artikel Block 1 Überschrift' content: type: div css: text: - 'Artikel Block 1 Inhalt: Dieser Text wird durch das DOIT Content Modul erzeugt und auf der Artikel Detailseite ausgegeben!'
Ausgabe von Inhalt aus OXID CMS Kundeninformationen ohne Überschrift:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true content: type: div css: cms: - cmsident
Ausgabe von ZUFÄLLIGEM Text Inhalt:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true content: type: div css: text: - 'Artikel Block 1 Inhalt: Dieser Text wird durch das DOIT Content Modul erzeugt und auf der Artikel Detailseite ausgegeben!' - 'Artikel Block 1 Inhalt 2: Dieser Text wird auch durch das DOIT Content Modul erzeugt' - 'Artikel Block 1 Inhalt 3: Dieser Text ist noch besser'
zufällige Ausgabe von Inhalt aus OXID CMS Kundeninformationen ohne Überschrift:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true content: type: div css: cms: - cmsident1 - cmsident2 - cmsident_x
Conditions
Ob ein Content Block erzeugt werden soll kann anhand von Conditions / Bedingungen definiert werden.
einfache Bedingung (ohne Operator or /and):
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: oxcategories__field: value: - Wert1 - Wert2 - Wert_x
umfangreichere Definition einer Bedingung (operator or oder and):
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: or / and oxcategories__field1: value: - Wert1 - Wert2 - Wert_x operator: != oxcategories__field2: value: - Wert1 - Wert2 - Wert_x operator: == MyFunction: class: YourClass\....\ function: MyFunction params: - $this->oObject - 'false'
Condition Typen
Variable (oxarticles, oxcategories, oxmanufacturers)
Es kann auf jedes Feld der Datenbank Tabellen oxarticles, oxcategories und oxmanufacturers zugegriffen werden.
Bei der Suche wird unterschieden ob es sich um die Generierung von Artikel, Kategorie oder Hersteller Texten handelt.
Bei der Suche in Artikel-Daten werden die Daten des Artikel und Attribute, Hersteller und Hauptkategorie des Artikels automatisch berücksichtigt.
Beide Suche in Kategorie oder Hersteller Daten werden jeweils nur die Daten der Kategorie oder des Herstellers berücksichtigt.
Artikel Datenbank Tabelle
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: or / and oxarticles__oxprice: value: - 10 operator: >=
Kategorie Datenbank Tabelle
language: de: type: category: templates: template1: blocks: block1: name: block1 active: true condition: operator: or / and oxcategories__oxtitle: value: - Kiteboarding - Kites operator: ==
Hersteller Datenbank Tabelle
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: or / and oxmanufacturers__oxtitle: value: - OXID eSales operator: !=
Attribute
Suche nach Wert in 1-x Attributen (Beispiel: Attribut Farbe und Größe):
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: or / and attributes: # Attribute Yaml Id color: # Attribut Name name: Farbe # einer dieser Werte muss zutreffen, dann TRUE value: - grün - gelb - rot operator: '!=' # Attribute Yaml Id für size: name: Größe value: - L - XL
regexall
prüfe im kompletten Suchobject (Artikel, Kategorie / Hersteller Daten) ob ein Wert 1-x Fach vorhanden ist:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: # (leer entspricht and) regexall: kite: regex: /Kite/i count: # (leer entspricht > 0) trapez: regex: "/Größen/" count: 2 operator: '>='
url
Suche nach Wort “Kite” in Url in Url
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: url: - Kite - Wakeboard
regexurl
Suche nach Wort regular Expression “Kite / Wakeboard” in der Url
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: regexurl: - /(Kite)/i\b - /(Wakebord)/i\b
url mit count und Bedingung
Suche nach Wort “Kite” in Url in Url
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: url: kite: value: - Kite count: 1 operator: >
regexurl mit count und Bedingung
Suche nach Wort regular Expression “Kite / Wakeboard” in der Url
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: regexurl: kite: value: - /(Kite)/i\b count: 2 opertor: <
url Mischform (gleicher Aufbau bei regexurl)
Suche in Url nach Wort “Kite”: Anzahl des Vorkommens größer als 1 und gleichzeitig Suche nach “Wakeboard” mindestens 1 Vorkommen.
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: url: kite: value: - Kite count: 1 operator: > - Wakeboard
regexurl Mischform (gleicher Aufbaue bei url) mit opertor and / or
Suche in Url nach Wort “Kite”: Anzahl des Vorkommens größer als 1 oder (operator “or”) Vorkommen von “Wakeboard” mindestens 1 mal.
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: regexurl: operator: or (and) kite: value: - /(Kite)/i\b count: 1 operator: > - Wakeboard
manufacturer
Suche nach Hersteller über den Namem oder die OXID:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: manufacturer: name: - Core Kiteboarding - ION - Jucker Hawaii oxid: - adc566c366db8eaf30c6c124a09e82b3
Funktion
Suche über Funktionsaufruf. Wenn die Funktion TRUE zurück gibt wird die Bedingung als TRUE interpretiert.
rufe checkComparableProductExists
UND checkSomething
auf:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true condition: operator: and # Platzhalter CHECKCOMPARABLEPRODUCTEXISTS: class: MyClass\...\ function: checkComparableProductExists - $this->oObject # Platzhalter CHECKSOMETHING: class: MyClass\...\ function: checkSomething params: - $this->oObject - "false"
Parameter werden (durch YAML) als Array übergeben.
$this->oObject enthält die Daten des Artikels, der Kategorie oder des Herstellers.
Beispielfunktionen:
namespace MyClass\...; class MyClass { public function checkComparableProductExists($SubmitParams) { $oArticle=$SubmitParams['0']; $aCrossSelling=$oArticle->getCrossSelling(); if (is_array($aCrossSelling)) { if (count($aCrossSelling)>0) return TRUE; else return FALSE; } } else return FALSE; } public function checkSomething($SubmitParams) { $oArticle=$SubmitParams['0']; $blILikeDOITModules=$SubmitParams['1']; if ($blILikeDOITModules) return TRUE; else return FALSE; } }
Condition Operator Typen
Für den das Setzen einer einzelnen Bedingung stehen folgende Operator Typen zur Verfügung:
gleich
=
==
blank (leer)
größer
>
größer gleich
>=
kleiner
<
kleiner gleich
<=
nicht gleich
!=
regex
kompletter Regex String, liefert TRUE zurück wenn preg_match = true
Platzhalter in Texten
Das DOIT Content Module arbeitet mit Platzhaltern. Diese Platzhalter werden bei der Generierung von Texten statisch oder dynamisch ersetzt. Die Platzhalter können beliebig benannt werden. Wir empfehlen aber Platzhalter GROSS zu schreiben und bei der Benenning zwischen statischen und dynamischen Platzhaltern zu unterscheiden.
Die Platzhalter werden durch Funktionen befüllt und in 2 Schritten verarbeitet
Generierung von Inhalten durch DOIT Workflow Modul inkl. Ersetzen von STATISCHEN Werten
LIVE beim Aufruf der Webseite durch Ersetzen der DYNAMISCHEN Werte
Die Definition der Platzhalter-Funktionen erfolgt in den Dateien
„Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/SprachId/functions.yaml“
und
„Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/SprachId/dynfunctions.yaml“
functions.yaml
language: de: functions: STAT_MYPLACEHOLDER: class: MyClass\... function: getSTATMyPlaceHolderValue params: - $this->oObject
dynfunctions.yaml
language: de: functions: DYN_MYPLACEHOLDER: class: MyClass\... function: getDYNMyPlaceHolderValue params: - $this->oObject
Funktion LONGESCRIPTION
Eine besonderer Platzhalter (interne DOIT Content Funktion) ist LONGDESCRIPTION! Er gibt die Langbeschreibung eines Artikels aus.
Beispiel für Verwendung von LONDESCRIPTION mit Prefix und Suffix:
language: de: type: article: templates: template1: blocks: before_longdesc: name: before_longdesc active: true content: type: div text: - 'Dieser Text erscheint vor der Ausgabe der Langbeschreibung' article_longdesc: name: article_longdesc active: true content: type: div text: - LONGDESCRIPTION after_longdesc: name: after_longdesc active: true content: type: div text: - 'Dieser Text erscheint nach der Ausgabe der Langbeschreibung'
Blöcke können beliebig viele Platzhalter enthalten. Es wird zwischen 2 Typen Platzhaltern unterschieden.
Platzhalter Typen:
stattische Platzhalter
(werden bei Generierung der Inhalte über die DOIT Content Funktionen im Admin-Bereich gefüllt)dynamische Platzthalter
Generierung von Content im LIVE-Betrieb
statische Platzhalter
Block mit statischen Platzhaltern:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true content: type: div text: - 'Dieses STATIC_PLATZHALTER1 ist genial! Die anderen STATIC_PLATZHALTER2 auch ;-)'
Definition von STATIC_PLATZHALTER1 und STATIC_PLATZHALTER 2 in functions.yaml:
language: de: functions: STATIC_PLATZHALTER1: class: MyStaticClass\... function: getStaticPlatzhalter1 STATIC_PLATZHALTER2: class: MyStaticClass\... function: getStaticPlatzhalter2
Beispiel Definition einer Platzhalter Funktion:
namespace MyClass\...; class MyStaticClass { public function getStaticPlatzhalter1() { return 'DOIT Modul'; } public function getStaticPlatzhalter2() { return 'DOIT Module'; } }
dynamische Platzhalter
Eine Besonderheit gilt bei dynamischen Platzhaltern. Dynamische Platzhalter müssen im Yaml File gesondert definiert werden. Entweder (und) im Template oder im jeweiligen Block in der Einstellung settings: dynvalues: .
Das DOIT Content Modul fasst alle definierten dynamischen Platzhalter zusammen und führt die entsprechenden Funktionen 1 mal aus um die Platzhalter anschließend zu füllen.
dynamische Platzhalter Definition in Template Settings.
language: de: type: article: templates: template1: settings: dynvalues: - DYN_PLATZHALTER1 - DYN_PLATZHALTER2
dynamische Platzhalter Definition in Block Settings:
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true settings: dynvalues: - DYN_PLATZHALTER1 - DYN_PLATZHALTER2
dynamische Platzhalter Definition in Template und Block Settings:
language: de: type: article: templates: template1: settings: dynvalues: - DYN_PLATZHALTER1 blocks: block1: name: block1 active: true settings: dynvalues: - DYN_PLATZHALTER2 content: type: div text: - 'Dieses dynamische DYN_PLATZHALTER1 ist genial! Die anderen dynamischen DYN_PLATZHALTER2 auch ;-)'
Definition von DYN_PLATZHALTER1 und DYN_PLATZHALTER 2 in functions.yaml:
language: de: functions: DYN_PLATZHALTER1: class: MyClass\... function: getDynPlatzhalter1 DYN_PLATZHALTER2: class: MyClass\... function: getDynPlatzhalter2
Beispiel Definition einer Platzhalter Funktion:
namespace MyClass\...; class MyDynClass { public function getDynPlatzhalter1() { return 'DOIT Modul'; } public function getDynPlatzhalter2() { return 'DOIT Module'; } }
Settings
In jedem Template also auch jedem Block können Settings (Einstellungen) gemacht werden.
übergeordenete Setttings
language: de: settings: synonyms: clearing: dboutput:
Template Settings
language: de: type: article: templates: template1: settings: synonyms: clearing: dboutput: showresult: dynvalues:
Block Settings
language: de: type: article: templates: template1: blocks: block1: settings: synonyms: clearing: dynvalues:
Synonyme
Um nicht alle Texte / Inhalte gleich aussehen zu lassen und eine gewisse Mischung der Wörter zu erzeugen können Synonyme definiert werden. Synonyme können auf Template oder Block Ebene definiert werden.
Template Synonyme
language: de: type: article: templates: template1: settings: synonyms: active: true / false synonyms: Kite: - Kite Surfing - Kitesurfing - Kiteboarding - Powerkiting Wakeboard: - Wake Board - Board
Block Synonyme
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true settings: synonyms: general: true / false active: true / false synonyms: Kite: - Kite Surfing - Kitesurfing - Kiteboarding - Powerkiting Wakeboard: - Wake Board - Board
Clearing
Wenn Texte z.B. von Produkt-Herstellern geliefert wurden, ist es ratsam diese Texte nicht 1:1 zu übernehmen sondern diese Texte Stück für Stück zu ändern. Manchmal macht es auch Sinn Texte die automatisch erzeugt wurden zu korrigieren. Dies kann auf Template oder Block Ebene definiert werden.
Template Clearing
language: de: type: article: settings: clearing: general: true active: true clearing: regex: # suche nach oxidshop und ersetze es mit nichts # es macht hier eher Sinn die delete: Funktion zu nutzen /oxidshop/i: - /ersetze mich/i: - ich wurde ersetzt /VariantListAsOrderedlist/i: # zeige eine Liste aller Varianten als <ul><li> Liste an - VARIANTLISTALL_LIST replace: # suche nach "OXID Shop" und ersetze mit einem der Werte Oxid Shop: - mein Shop - mein toller Shop - mein wunderbarer Shop - mein mit DOIT optimierter Shop Varianten: # gebe Liste aller Varianten als <ul><li> Liste aus - VARIANTLISTALL_LIST # gebe Liste aller Varianten mit Komma getrennt aus - VARIANTLISTALL_KOMMA # gebe Liste aller aktiven Varianten als <ul><li> Liste aus - VARIANTLISTACTIVE_LIST # gebe Liste aller Varianten mit Komma getrennt aus - VARIANTLISTACTIVE_KOMMA # gebe Liste aller deaktivierten Varianten als <ul><li> Liste aus - VARIANTLISTINACTIVE_LIST # gebe Liste aller deaktivierten mit Komma getrennt aus - VARIANTLISTINACTIVE_KOMMA Kategorie: - oxcategories__oxtitle delete: # ersetze alle dieser Werte (Reihenfolge beachten!) - OXID Shop - OXID
Block Clearing
language: de: type: article: templates: template1: blocks: block1: name: block1 active: true settings: synonyms: general: true / false active: true / false clearing: # siehe Einstellung Möglichkeiten bei template:
Sonderfunktionen
Es gibt einige Sonderfunktionen die von Haus aus Werte ermittlen und ausgeben. Sollten Sie weitere Sonderfunktionen wünschen, dann bitten wir um Kontaktaufnahme.
LONGDESCRIPTION - Gibt die Langbeschreibung eines Artikels aus.
VARIANTLIST
# gebe Liste aller Varianten als <ul><li> Liste aus - VARIANTLISTALL_LIST # gebe Liste aller Varianten mit Komma getrennt aus - VARIANTLISTALL_KOMMA # gebe Liste aller aktiven Varianten als <ul><li> Liste aus - VARIANTLISTACTIVE_LIST # gebe Liste aller Varianten mit Komma getrennt aus - VARIANTLISTACTIVE_KOMMA # gebe Liste aller deaktivierten Varianten als <ul><li> Liste aus - VARIANTLISTINACTIVE_LIST # gebe Liste aller deaktivierten mit Komma getrennt aus - VARIANTLISTINACTIVE_KOMMA
Shop Admin
Durch die Generierung von Content durch das DOIT Content Modul wird eine alternative Langbeschreibung erstellt. Ist diese vorhanden wird sie anstatt der im Shop hinterlegten Langbeschreibung angezeigt.
Dazu können im Shop Administrations-Bereich bei Artikel und Kategorien einige Einstellungen gemacht werden.
Artikel
Wenn beim Artikel dennoch die Original Langbeschreibung angezeigt werden soll, muss “OXID Langbeschreibung” verwenden aktiv sein.
Bei Artikel Content Templates können, durch Komma, getrennt mehrere Templates eingetragen werden die bei der Generierung von Content nacheinander durchgearbeitet werden.
Wenn eine generierte Langbeschreibung vorhanden ist, wird sie unter der OXID Langbeschreibung angezeigt. Möchte man die OXID Langbeschreibung mit der generierte Langbeschreibung ersetzen genügt ein Klick auf “Langbeschreibung mit DOIT Langbeschreibung ersetzen. (Bitte darauf achten dass “OXID Langbeschreibung verwenden” aktiviert ist.
Kategorie
Wenn bei einer Kategorie dennoch die Original Langbeschreibung angezeigt werden soll, muss “OXID Langbeschreibung” verwenden aktiv sein.
Bei “Artikel Content Templates” können, durch Komma, getrennt mehrere Templates eingetragen werden die bei der Generierung von Content dieser Artikel nacheinander durchgearbeitet werden.
Bei “Kategrie Content Templates” können, durch Komma, getrennt mehrere Templates eingetragen werden die bei der Generierung von Content dieser Artikel nacheinander durchgearbeitet werden.
Wenn eine generierte Langbeschreibung vorhanden ist, wird sie unter der OXID Langbeschreibung der Kategorie angezeigt. Möchte man die OXID Langbeschreibung mit der generierten Langbeschreibung ersetzen genügt ein Klick auf “Langbeschreibung mit DOIT Langbeschreibung ersetzen. (Bitte darauf achten dass “OXID Langbeschreibung verwenden” aktiviert ist.
Ausgabe des generierten Contents
Der generierte Content überschreibt keine originale Artikel oder Kategoriebeschreibungen!
Soll Content Artikel oder Kategorieabhänig erzeugt werden, z.B: für die Anzeige von “Informations-Blöcken” in der Sidebar, so genügt die Angabe von dboutput:
language: de: type: article/category/manufacturer: # übergeordnete Clearing Einstellungen clearing: general: true / false regex: replace: delete: # übergeordnete Einstellungen settings: dboutput: - oxcategories__myfieldname
showresults
Manchmal ist es sinnvoll während der DOIT Content Generierung im Shop Admin-Bereich zu sehen was generiert wird. Mit showresult: true werden dann die Ergebnisse der Generierung angezeigt.
language: de: type: article: templates: artikel_template: settings: showresult: true
Wenn Sie z.B. anhand eines bestimmen Artikels die Generierung prüfen wollen, können Sie in der DOIT Konfiguration diesen einen Artikel über den query-Parameter selectieren, die Content Generierung für diesen 1 Artikel starten und den Step abbrechen inkl. Content Ausgabe.
task: module: id: doitcontentarticletexts name: Do It Content Artikel Texteblöcke erstellen classname: DoItContent namespacename: WebTools\DoItContent\Application\Controller\Admin\DoIt active: true stepsize: 10 steps: Generate_Article_Content: id: GenerateArticleContent active: true die: true query: "Select * from oxarticles where oxartnum='MyArtNum'" name: Artikel Content Generierung handling: run mode: dbtable functionname: generateArticleContent functionparams: artikel_template dbtable: oxarticles
Tipps
Erstellen Sie verschiedene YAML-Konfigurationsdateien im jeweiligen Sprachenordner
„Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/LanguageId/“
clearing.yaml
language: de: type: article: settings: clearing: general: true active: true clearing: category: settings: clearing: general: true active: true clearing:
functions.yaml
language: de: functions: STATIC_PLATZHALTER1: class: MyStaticClass\... function: getStaticPlatzhalter1
dynfunctions.yaml
language: de: functions: DYN_PLATZHALTER1: class: MyDynClass\... function: getDynPlatzhalter1
article.yaml
language: de: type: article: # übergeordnete Clearing Einstellungen clearing: general: true / false regex: replace: delete: # übergeordnete Einstellungen settings:
article_templates.yaml
language: de: type: article: templates: template1: template2:
article_template1_blocks.yaml
language: de: type: article: templates: template1: blocks: block1: block2:
category.yaml
language: de: type: category: # übergeordnete Clearing Einstellungen clearing: general: true / false regex: replace: delete: # übergeordnete Einstellungen settings:
usw.
generated Settings
Das Modul generiert aus allen YAML-Dateien des Sprachverzeichnisses eine Datei “generatedSettings.yaml”
im Ordner „Shopverzeichnis/source/modules/webtools/doitconfig/doitcontent/“
Es kann sehr hilfreich sein sich diese Datei anzuschauen!
Fazit
Das DOIT Content Modul ist sehr komplex und wir empfehlen Ihnen schrittweise und “mit Konzept” vorzugehen. Bei Fragen freuen wir uns über Ihre Kontaktaufnahme!
DOIT Module Voraussetzungen
Jedes Modul von WebTools benötigt die Installation des WebTools-Basis Moduls.
Für die Anpassung / Entwicklung von DOIT Funktion oder eigenen DOIT Klassen ist eine DOIT (Workflow) Modul Professional Lizenz erforderlich.
Alle DOIT Module sind mit IonCube verschlüsselt.
DOIT Module Preise
Die DOIT Module sind sehr komplex und kaum zu vergleichen mit “einfachen OXID Modulen”. Für uns steht die Leistungsfähigkeit der Module, die Kosten und Zeit-Ersparnis und der Mehrwert der durch die Module erzeugt wird im Vordergrund.
Deshalb haben alle DOIT Module eine einmalige Lizenzgebühr die die Nutzung des Modules für 1 Jahr includiert. Die Module werden laufend fortentwickelt und deshalb berechnen wir in jedem Folgejahr automatisch eine jährliche Gebühr von 50% der ursprünglichen Lizenzgebühr damit das Modul aktiv bleibt. Soll das Modul nicht mehr genutzt werden senden Sie uns bitte eine Kündigung für das Modul an doit@webtools.de
Fragen zu DOIT Modulen?
Wir freuen uns darauf Sie unterstützen zu dürfen. Gerne erarbeiten wir das für Ihren Shop passende Optimierungskonzept.
Sie erreichen und telefonisch unter +49 89 45455580 oder per E-Mail an doit@webtools.de .
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren