Neu Kritik an den Umgang mit strukturierten Daten und den Blocks

Schema.org einbinden mittels


  • Gesamtzahl der Stimmen
    6

Oliver Mayer

Aktives Mitglied
4. Mai 2016
23
1
Hallo JTL,

beim erstellen unseres ersten Shops hat alles super geklappt, erstmal ein grosses Lob an der Stelle. Ich entwickle seit Jahren Templates für viele gängige CMS und Shop Systeme und bin unter anderem auch Elite Author auf der Theme Plattform "Themeforest", daher denke ich das ich weiss wovon ich rede.

Es war wirklich überhaupt kein Problem ein eigenes Child Theme zu erstellen. Trotz allem haben mich während der gesamten Entwicklung 2 Dinge wirklich sehr gestört!

1.) Strukturierte Daten im Quelltext, warum? Das macht das ganze wirklich deutlich komplizierter! Das Markup ist aufgeblähter und schwerer zu lesen! Warum verwendet ihr nicht wie die meisten anderen Systeme auch das Schema.org anhand von JSON-LD?

Dies kann deutlich stressfreier eingebunden werden und ist losgelöst vom Markup des Templates. Ein Beispiel: ich habe die H1 Headline über den ganzen Content beim Produkt gebracht und die Bewertungen innerhalb der Headline. So jetzt wurden die strukturierten Daten nicht mehr korrekt erkannt und ich durfte manuell das ganze schema.org ändern weil es ja sonst nicht mehr passt.

Das ist wirklich nicht besonders "sinnig". Der grundlegende Sinn eines Templates ist ja das der "Code" von den Funktionsaufrufen getrennt ist.

Hier mal ein Beispiel des Shops und ein Link zu den JSON-LD Markup

https://www.kfz-batterie-ladegeraet.de/ctek-ladegeraet-mxs-5-0
https://developers.google.com/search/docs/guides/intro-structured-data

2.) Das zweite was ich wirklich als sehr störend empfand war eure Überzahl an "Blocks" im Template. Muss das den sein? Ich für meinen Teil denke das es am sinnigsten ist eine ganze Datei zu überschreiben und beim Update zu prüfen welche Teile sich verändert haben. Wer überschreibt den bitte teilweise pro Datei bis zu 40 Blocks? Das ist ja mehr als nur unübersichtlich.

Wenn ihr wirklich mit Blocks arbeiten wollt ist das ja ok, macht aber einfach wenig Sinn wenn ihr die Funktionen ohnehin per include reinholt. Beispiel sind die Produktdetails. Das sind ja ohnehin schon 20 oder 30 Dateien. Und jetzt sollte man hier auch noch die einzelnen Blocks überschreiben, egal ob per replace, append, prepend oder wie auch immer.

Macht euch doch darüber mal ein wenig Gedanken bitte ob dies der richtige Weg ist.

Viele Grüsse,
ein Fan im Anfangsstadium mit Drang zu Verbesserungen und optimierungen
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
345
Halle (Saale)
Danke für das umfangreiche Feedback.
Zumindest zu Punkt 2) eine Erläuterung:

Der bislang am häufigsten geäußerte Kritikpunkt von Entwicklern war, dass es zu wenige Blöcke gibt. Es ist also durchaus lustig, jetzt das Gegenteil zu lesen.
Davon abgesehen dürfte sie dich beim Erstellen eines Childtemplates ja nicht stören.

Der eigentliche Hintergrund für die erhöhte Anzahl an Blöcken ist aber auch nicht deren Verwendung in Childtemplates, sondern als möglichst flexibler Einstiegspunkt für Plugins.
Wir möchten so weit es geht von PHPQuery weg. Und es gibt nunmal eine Unzahl an Plugins, die an allen möglichen Stellen kleine Inhaltsblöcke einfügen möchten.
 
  • Gefällt mir
Reaktionen: Oliver Mayer

Oliver Mayer

Aktives Mitglied
4. Mai 2016
23
1
Gern geschehen. Zu Punkt 2) genau das selbe dachte ich auch als ich das Child Theme angefangen habe das wirklich viele Blocks die ich benötigte fehlen.

Also gesagt getan und angefangen. Und schnell habe ich gemerkt das dass Child Theme mit Blocks zu erstellen viel zu aufwendig für meinen Geschmack ist. Besonders als ich dann mal angefangen habe Updates einzuspielen musste ich ständig überprüfen ob sich dieser Block verändert hat den ich überschrieben habe. Wenn ich aber die ganze Datei überschreibe kann ich mir die veränderten Stellen einfach anzeigen lassen und deutlich einfach abgleichen.

Ahh ok, ich verstehe das mit den Plugins natürlich. PHPQuery ist ja auch nicht die optimale Lösung. Hier kann ich euch aber auch empfehlen mal einen Blick in das Joomla CMS zu werfen, dort werden die Plugins auch eventbasiert gesteuert was sich sehr gut handeln lässt! Zumindest wenn ich Sie jetzt richtig verstanden habe ...

Ich bin jetzt auch kein riesen Fan von der Smarty Engine aber Sie tut was Sie soll und ist ja doch recht ähnlich wie PHP.

https://docs.joomla.org/Plugin/Events
 

Oliver Mayer

Aktives Mitglied
4. Mai 2016
23
1
Das stimmt so leider nicht. Mit den Events kann ich problemlos die Ausgabe steuern. Ich habe bspw. ein Shortcode System entwickelt, wenn der User bspw. eingibt {button link="#" color="success" title="Text"} eingibt erzeuge ich eine HTML Ausgabe mit
<a href="#" class="btn btn-success">Text</a>

Das klappt problemlos und denke auch das ist das was ihr auch bezwecken wollt mit den Plugins. Die Ausgabe kurz vor dem Rendern zu verändern.

Aber kann auch sein ich liege da falsch, ist nicht mein Kerngebiet ;)
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
200
21
Da hier @FMoche mitliest ist das hoffentlich die richtige Stelle für meine doch sehr spezifische Kritik (in gitlab konnte ich leider keinen Quellcode-Kommentar abgeben):
Nach dem Update auf 4.06 wurde die articledetails/tabs.tpl ja komplett umstrukturiert, was dafür sorgt, dass mein Child Template nicht funktioniert. Was ich kritisieren möchte ist folgendes Konstrukt: https://gitlab.jtl-software.de/jtlshop/shop4/blob/master/templates/Evo/productdetails/tabs.tpl#L11

Code:
{$tabsPaneleArr['description'] = [
        'id' => 'description',
        'cName' => "{block name='tab-description-title'}{lang key='description' section='productDetails'}{/block}",
        'content' => '<div class="desc">' ,
        'content2' => {$Artikel->cBeschreibung},
        'content3' => '',
        'content4' => '</div>',
        'content5' => "{block name='tab-description-attributes'}{include file='productdetails/attributes.tpl' tplscope='details'}{/block}"
    ]}

Hier wird Smarty Code in eine Variable gepackt und unten ausgegeben. Diese enthält wieder einen Block. Warum das überhaupt funktioniert, ist mir schleierhaft, aber es funktioniert auf jeden Fall nicht den Block tab-description-attributes zu ersetzen! Wenn man das versucht kommt der auf einmal zweimal (WTF?), einmal mit ursprünglichem Inhalt und einmal mit dem ersetzten. Meiner Meinung nach war die tabs.tpl vorher relativ übersichtlich, aber jetzt ist sie sehr kryptisch. Außerdem scheint der Block tab-description-content komplett verschwunden?
 
  • Gefällt mir
Reaktionen: robertw

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
200
21
@FMoche entschuldigung für das nochmalige Missbrauchen dieses Threads aber du hast mich mit der Aussage

Der eigentliche Hintergrund für die erhöhte Anzahl an Blöcken ist aber auch nicht deren Verwendung in Childtemplates, sondern als möglichst flexibler Einstiegspunkt für Plugins.
Wir möchten so weit es geht von PHPQuery weg. Und es gibt nunmal eine Unzahl an Plugins, die an allen möglichen Stellen kleine Inhaltsblöcke einfügen möchten.

sehr neugierig gemacht. Ich finde bisher in der Doku keinen Hinweis darauf, wie man Blöcke in Plugins als Einstiegspunkt nutzt. Ich kannte bisher nur die DOM-Manipulation-via PhpQuery in Hook 140 Methode. Kannst du genauer erläutern, was du meinst und wie das geht?
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
345
Halle (Saale)
@t.oster Es ist bislang noch nicht dokumentiert, aber seit 4.06 kann man einfach im Pluginordner < shop-root>/includes/plugins/<plugin-id>/version/<versionsnummer>/frontend/template die Struktur des Frontendtemplates nachbauen und wie in ChildTemplates Blöcke modifizieren.
Im Example-Plugin hab ich da ein Beispiel:

https://gitlab.jtl-software.de/jtlshop/exampleplugin/commit/31c25373e6c68e87bc45ea8b6153692a2da28944

Hier erweitert also das Plugin die layout/footer.tpl des Templates - was komplett ohne PHPQuery auskommt.
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
200
21
@FMoche danke für die schenlle Antwort. Das klingt interessant. Ich nehme an, das Plugin-Templates dann auch das Child-Template überlagern und später installierte Plugins frühere? In deinem Beispiel ist gar keine `{extends}` Zeile. Wird die implizit eingebaut? (d.h. ich kann nur einzelne Blöcke überladen, nicht ganze Templates?)
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.003
Berlin
ich hab ja noch gar nicht wirklich danach geschaut, da es noch recht neu ist, das bedeutet dann das wir im Plugin, je nachdem, das Child oder das z.B. Evo als Parent haben?
Kann interessant werden wenn der, der das Child erstellt hat, meine verwendeten Blöcke herausoperiert hat.

Ich glaube ich muss mir das mal dringend anschauen, besser als phpQuery ist es aber in jedem Fall.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.003
Berlin
Aber dann geht man in der config vom plugin einfach auf eine andere Klasse oder ID die vorhanden ist.

Wie gesagt ich bin noch nicht dazu gekommen mir das anzuschauen, bisher kann der Shop Besitzer sich das ja selbst aussuchen welche klasse oder ID er nimmt (ist ja recht komfortabel), wenn er sich aber auf Blöcke beschränken muss die er ja eigentlich gar nicht sieht, weiß ich noch nicht genau wie das dann am besten konfigurierbar gemacht werden sollte.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu WAWI 1.9.6.5 Ameise freier Export von Rechnungen exportiert anstatt Oktober den Monat Dezember JTL-Ameise - Fehler und Bugs 9
Neu Seit update auf version 5.4 habe ich den Fehler das die Shop class nicht mehr gefunden wird. Technische Fragen zu Plugins und Templates 4
Neu Der Amazon Bestand wird nicht übernommen/gespeichert. Worker setzt den vollen Lagerbestand wieder ein. JTL-Wawi - Fehler und Bugs 0
GPSR Hersteller Kontaktdaten Änderungen werden nicht in den Shop übernommen JTL-Wawi 1.9 3
JTL Worker startet den REST API Server nicht mit JTL-Wawi 1.9 0
Neu Rechnungsvorlagen 2.0 - Skontoberechnung auf den neuen Vorlagen (Formel) - Rechnen mit DotLiquid Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 6
Neu JTL Worker führt den Workflow nicht aus User helfen Usern - Fragen zu JTL-Wawi 0
Neu [Error][Code:21920427] Adressangaben für die verantwortliche Person sind unvollständig. Geben Sie für die Adresse bitte die Straße, den Ort, die PLZ eBay-Anbindung - Fehler und Bugs 4
Den Tornado in den Griff bekommen / GPSR / Ameise JTL-Wawi 1.9 8
Neu FBA-Bestand von Stücklisten in der WaWi nicht in den Komponenten sichtbar JTL-Wawi - Fehler und Bugs 3
keine Anbindung an den Shop 5.4 möglich JTL-Wawi 1.9 8
GPSR - Das Feld [Verantwortliche Person] ist leer hinterlegt! Es findet keine Zuordnung statt. - wie lösche ich den Eintrag JTL-Wawi 1.9 5
Neues Feld "V-Person" nicht in der Variablen/Werten bei den Workflows zu finden JTL-Wawi 1.9 4
Neu Kann Artikel nicht für den Shop aktivieren User helfen Usern - Fragen zu JTL-Wawi 2
Neu Bilder für den Cache werden nicht generiert JTL-Shop - Fehler und Bugs 1
Neu Google Shopping - Sonderpreise werden unter Umständen nicht in den Feed geschrieben Allgemeine Fragen zu JTL-Shop 1
Getrenntes Lager für den JTL shop JTL-Wawi 1.9 1
Neu Konto an den Shop übertragen - wie funktioniert das praktisch? Umstieg auf JTL-Shop 4
Neu Umstellung auf den Amazon Lister 2.0 Amazon-Lister - Ideen, Lob und Kritik 1
Neu Was bedeutet dieser Reiter in den Connectoreinstellungen (Ohne Beschriftung?!) WooCommerce-Connector 1
Neu Workflow erstellen, einen Wert aus den Stammdaten kopieren in einen anderen User helfen Usern - Fragen zu JTL-Wawi 8
Neue Bankverbindung erscheint nicht in den Druckvorlagen JTL-Wawi 1.9 14
Neu Warum sehe ich diese Optionen nicht in den Versandarten? User helfen Usern - Fragen zu JTL-Wawi 4
Attribute für EWR Pflichtangaben (ab 13.12.2024) auf den Marktplätzen otto.de & kaufland.de Otto.de - Anbindung (SCX) 8
Neu kKunde != InternerSchlüssel > Aus Shop den Internern Schlüssel der WaWi Technische Fragen zu Plugins und Templates 1
Lieferscheine -versendet / Eigene Übersicht: Kundenkategorie aus den Kundenstammdaten JTL-Wawi 1.8 3
Neu Umgang mit Chargen bei mehreren Bestellungen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0

Ähnliche Themen