1. Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.
    Information ausblenden

Neu Plugin - Templateanpassungen wie im eigenen Template möglich?

Dieses Thema im Forum "Plugins für JTL-Shop" wurde erstellt von knackig, 6. Juni 2018.

  1. knackig

    knackig Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    456
    Zustimmungen:
    14
    Punkte für Erfolge:
    18
    Ort:
    Nordhessen
    Hallo,

    ich möchte mir ein Plugin schreiben (hauptsächlich für mich als Übung und dabei noch was praktisches für den Shop basteln), das folgendes bewirkt:

    Ich habe viele Artikel, bei den Größen angegeben werden müssen. Um den Kunden eine Anleitung zu geben, möchte ich pro Artikel (steuerbar in der Wawi via Attribute mit Werteliste, wobei Wert = CMS-Seiten-Link) einstellen können, dass über der Variantenauswahl ein Button (zB. "Größentabelle") erscheint. Die CMS-Seite soll dann mit EVO-Boardmitteln als Modal Window erscheinen. Als Template-Änderung geht es sehr einfach und funktioniert gut. Nun möchte ich es aber als Plugin verpacken um es vom Template unabhängig zu machen. Nun meine Frage:

    Kann ich mit einem Plugin auch solche Änderungen wie im Template machen, indem ich Blöcke austausche oder vor den Blöcken was dranhänge? Meinen Button habe ich mit {block name="productdetails-info-variation" prepend} in der /productdetails/details.tpl eingefügt. In den Docs von JTL finde ich keine Infos, wie ich es anstellen könnte. Sind denn die Frontend-Links dafür gemacht? So wie ich es verstehe, sind die Frontend-Links einfach nur "Eigene Seiten", die Angelegt und verlinkt werden. Aber wie sage ich dem Plugin, füge den Button an dieser Stelle des Templates ein?

    Würde mich freuen, wenn mir jemand auf die Sprünge hilft :)
     
  2. knackig

    knackig Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    456
    Zustimmungen:
    14
    Punkte für Erfolge:
    18
    Ort:
    Nordhessen
    So, jetzt bin ich etwas schlauer geworden. Habe mir das Example-Plugin genauer angeschaut und folgendes festgestellt:
    1. Das Hinzufügen von Inhalten einer Datei erfolgt mit der Funktion insertStuff() in class.jtl_example.helper.php.
    2. Aufgerufen mit dem Hook 140.
    3. Der "Einsatzort" wird in den Plugin-Einstellungen mit dem PHP-Query-Selektor definiert.
    Nun komme ich nicht wirklich weiter. Mein Button soll über der Variationsauswahl rechts neben dem Bild erscheinen. Bild, Artikelname und die Variationen werden im DIV class="product-offer" zusammengefasst. Wenn ich diesen DIV in den Plugineinstellungen eingebe, erscheint der Inhalt des Example-Plugins. Wenn ich aber den "Unter-DIV" mit class="variations" eingebe, erscheint der Wert nicht mehr. Können mit dem PHP-Query-Selector in den Plugin-Einstellungen nur bestimmte DIVs angesteuert werden?

    Zur Info: Ich arbeite mit dem Standard-EVO-Template.
     
  3. css-umsetzung

    css-umsetzung Offizieller Servicepartner SPBanner

    Registriert seit:
    6. Juli 2011
    Beiträge:
    2.490
    Zustimmungen:
    266
    Punkte für Erfolge:
    83
    Beruf:
    Freiberuflich
    Ort:
    Berlin
    Wenn du php Query über den 140er Hook verwendest, dann richtest du dich nach Selektoren (z.B. ID oder Klasse), dann gehst du nicht über die smarty Blöcke.
     
  4. knackig

    knackig Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    456
    Zustimmungen:
    14
    Punkte für Erfolge:
    18
    Ort:
    Nordhessen
    Das habe ich aber. Ich bin noch dabei es im Example-Plugin mit dem Beispielinhalt, der auf der Startseite erscheint, zu testen. Ich habe diesen mit den Plugin-Einstellungen auf der Produktseite eingebunden. Wenn ich da die Class #product-offer in den Einstellungen eingebe, wird der Beispielinhalt über den Produktdaten angezeigt. Aus der Datei productdetails/details.tpl, Zeile 128:
    HTML:
    <div class="product-offer" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
    Wenn ich aber #variations eingebe, erscheint nichts über den Variationen. Die class habe ich aus der Datei productdetails/variation.tpl (Zeile 15):
    HTML:
    <div class="variations {if $simple}simple{else}switch{/if}-variations top15 row">
    Wenn das funktioniert, kann ich mir mein Plugin analog zu dem Example-Plugin aufbauen und statt den Smarty-Block zu nutzen, den Button über dem DIV mit der entsprechenden Class einfügen.
     
  5. css-umsetzung

    css-umsetzung Offizieller Servicepartner SPBanner

    Registriert seit:
    6. Juli 2011
    Beiträge:
    2.490
    Zustimmungen:
    266
    Punkte für Erfolge:
    83
    Beruf:
    Freiberuflich
    Ort:
    Berlin
    Also wenn muss es .variations sein und die Frage ist ob die Klasse auf der Seite dann vorhanden ist.
     
  6. ag-websolutions.de

    ag-websolutions.de Super-Moderator JTLBanner

    Registriert seit:
    29. Dezember 2009
    Beiträge:
    14.336
    Zustimmungen:
    187
    Punkte für Erfolge:
    63
    Eine "class" wird immer durch einen Punkt gekennzeichnet ... also ... .my-class
    Eine "ID" immer durch ein Nummerzeichen ... also ... #my-id
     
  7. knackig

    knackig Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    456
    Zustimmungen:
    14
    Punkte für Erfolge:
    18
    Ort:
    Nordhessen
    Jep, das war es... Danke @css-umsetzung und @ag-websolutions.de für den entscheidenden Tipp.

    Hab diese Kleinigkeit einfach übersehen, obwohl mir der Unterschied bekannt ist. Mit dem Beispielinhalt klappt es jetzt wunderbar. Probiere es heute Abend noch mit meinem Button-Plugin aus.
     

Diese Seite empfehlen

Verstanden Weitere Informationen

JTL-Software benutzt Cookies, teilweise von Drittanbietern, um Funktionalitäten auf unseren Webseiten zu ermöglichen.