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.359
340
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
191
19
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
191
19
@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.359
340
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
191
19
@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
6.639
1.583
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
6.639
1.583
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 Variablen für den Email Versand Einrichtung JTL-Shop5 0
Neu "Kaufen" statt in den Warenkorb Plugins für JTL-Shop 2
Neu Variablen für Stücklistartikel in den neuen Vorlagen Angebot Auftrag Rechnung ect. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu klare Warnung vor den Bausteinen und der PDF in Vorlagen User helfen Usern - Fragen zu JTL-Wawi 4
Neu JTL erstellt falsche Rechnungskorrekturen für Amazon.co.uk Aufträge und verweigert den Support Amazon-Anbindung - Fehler und Bugs 5
Neu Warenkorb Menge aktualisiert nicht den Preis (Reload geht nicht) JTL-Shop - Fehler und Bugs 5
Neu Funktionsattribut unverkäuflich wird nicht an den Shop übertragen Allgemeine Fragen zu JTL-Shop 1
Neu Ansprechpartner mit mehreren E-Mails Adressen in den Kunden User helfen Usern - Fragen zu JTL-Wawi 1
Verwiesen an Support wo finde ich die Logdatei von den Workflows JTL-Workflows - Fehler und Bugs 9
Neu Bestände der einzelnen Lager weichen von den reellen Beständen willkürlich ab JTL-Shop - Fehler und Bugs 7
Neu Käufersiegel in den Header Allgemeine Fragen zu JTL-Shop 1
Neu NEU ✔️ PDF-Angebots-Plugin für den JTL-Shop 5 - PDF Angebote von der Produktseite oder aus dem Warenkorb heraus generieren B2C / B2B Plugins für JTL-Shop 5
Neu Druckvorlagen gesucht für Handelsrechnung und Zollinhaltserklärung für den Export User helfen Usern - Fragen zu JTL-Wawi 1
Neu Guthaben reduziert nicht den Auftragswert sondern wird als Zahlung angerechnet User helfen Usern - Fragen zu JTL-Wawi 2
Neu feldlänge bei bei den Kundendaten begrenzen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Versandart schon in der Übersicht ändern anstatt den ganzen Auftrag zu öffnen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Template für Dateinamen hat nicht den gewünschten Effekt Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 6
Neu Geschäftskundenpreise werden auf den Artikelseiten für jeden angezeigt JTL-Wawi - Fehler und Bugs 0
Neu Vaterartikel den günstigsten Preis der Kindervererben mittels Ameise und 0 ausschließen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kein Abgleich möglich-PW in den Online Einstellungen falsch WooCommerce-Connector 0
Neu Rechnungsvorlage: Komme nicht an den Wert für kBestellStueckliste der Komponentenliste Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 5
Neu JTL-Connector übernimmt den Bestellstatus in Woocommerce nicht WooCommerce-Connector 2
Neu PayPal - Benachrichtungen über Zahlung -> EMail. Wo kann man den Betreff bearbeiten? User helfen Usern - Fragen zu JTL-Wawi 6
In Bearbeitung $discount$ Variable in den Tagesabschluss einfügen Allgemeine Fragen zu JTL-POS 3
Neu Lieferantenbestellung Exportvorlage mit Anpassungen an den Variablen klappt nicht User helfen Usern - Fragen zu JTL-Wawi 1
Neu Wawi läuft, aber ein Rechner hat den Pfad zur Datenbank verloren, Mandant kann nicht ausgewählt werden User helfen Usern - Fragen zu JTL-Wawi 3
Neu 5 verschiedene Artikel auf einen Lagerplatz buchen ohne nach jedem Artikel den Lagerplatz zu scannen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1

Ähnliche Themen