html-Ergänzung mit smarty-Block prepend/append

Thema wurde von Anonymous, 5. November 2021 erstellt.

  1. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Ich scheitere leider gerade daran, mit Hilfe der Doku auf Basis von theme-html-Anpassungen und Smarty-Blöcken eine Anpassung am Honeygrid-Theme zu machen.

    Die Idee ist (beispielhaft) leicht beschrieben:
    Nehmen wir an, ich möchte in meinem child-Theme von Honeygrid die product_listing.html erweitern und da (beispielhaft) einfach ein div vor die bestehende Produktliste setzen.

    (Link nur für registrierte Nutzer sichtbar.) ->
    Erweiterung vorhandener HTML-Templates verstehe ich so, dass ich im Ordner themes/MeinNeuesTheme/html/custom/ eine beliebig benannte Datei (z.B. product_listing_custom.html) anlegen kann, und darin (basierend auf der Doku (Link nur für registrierte Nutzer sichtbar.)) mit Hilfe eines Smarty-Blocks mit "prepend" den gewünschten div vor den product-listing-Block setzen kann:


    Code:
    {extends file="get_usermod:{$tpl_path}product_listing.html"}
    
    {block name="product_listing" prepend}
        <div id="neues_div">
        </div>
    {/block}

    Leider funktioniert das nicht. In der oben genannten Fassung kommt ein 502 bad gateway.
    In der Variante

    Code:
    {extends file="product_listing.html"}
    ...

    kommt ein 500er-Fehler und die Log-Meldung "Smarty: Unable to load template 'file:product_listing.html'

    Den Cache habe ich natürlich geleert, auch den Ordner "public/theme"

    Als Alternative habe ich versucht, die Datei product_listing.html direkt über eine eigene Ableitung in themes/MeinNeuesTheme/html/system/ in verschiedenen Varianten zu ergänzen, z.B.

    Code:
    {block name="product_listing"}
        <div id="neues_div">
        </div>
        {$smarty.block.parent}
    {/block}
    , aber egal, wie ich die Überladung baue, sobald ich {$smarty.block.parent} verwendet, kommt ein 500er-Fehler mit Smarty: inheritance: illegal '{$smarty.block.parent}'

    Also auch da scheine ich ein grundlegendes Konzept nicht verstanden zu haben.

    Was mache ich da falsch, so schwer kann das doch nicht sein? Hat da jemand einen Tip für die eine oder sogar beide Wege? Ich würd das echt gerne beides verstehen.

    Ich kann natürlich ein copy-paste des gesamten Original-Codes von product_listing.html machen und meine Anpassungen darin vornehmen. Aber so wie ich das verstanden habe, ist das schöne an den Themes ja genau, dass das nicht mehr notwendig sein sollte.
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.667
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    Das musst du einfach weglassen, dann sollte das ohne Probleme klappen.

    Also eine beliebige HTML Datei im Ordner /themes/MeinNeuesTheme/html/custom/ anlegen mit den Blöcken die ergänzt oder ersetzt werden sollen.

    Modul-Cache und Seitencache leeren dann sollten die Änderungen greifen, wenn du dein eigenes Theme im Shop aktivierst.
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    in dem Fall sagst Du dem System: "ersetzte die originale Datei mit dieser"
    Wenn die originale Datei aber ersetzt wird, dann kann kein Code von dort übernommen werden.
    Du musst hier alles übernehmen, was angezeigt werden soll - und das bei einem Update auch ständig überprüfen und erneuern.
    Deshalb macht man das besser nur über die benötigten Blocks.
     
  4. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Ja, funktioniert, danke! :)

    Danke auch für die Info! Da muss man erstmal drauf kommen, dass das Ding dann nicht mehr in der Lage ist, das Elternobjekt zu finden... :rolleyes: Aber gut. Was hat das dann noch für einen Anwendungsfall? Da bleibt dann ja eigentlich nur noch die prepend/append-Situation übrig?
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Nimm mal das Honeygrid und das Malibu (ist ja noch ein Kind vom Honig :))
    Die Startseite des Malibu ist komplett auf Widgets aufgebaut und hat damit nichts mehr mit der Startseite des Honeygrid zu tun.
    Und genau für so einen Fall ist das.
    Wenn die Seite also nicht nur einen Zusatz bekommen soll, sondern eine andere Aufteilung oder einen komplett anderen Inhalt, dann ersetzt man die originale Datei
    Geht es nur um einen Zusatz, oder will man einen einzelnen Block verändern, dann erstellt man eine Datei mit eigenem Namen in "Custom" und setzt dort nur den Block ein, den man braucht.

    Alternativ kann man einzelne Blöcke auch in GXModules ändern, hier muss man den Namen der originalen Datei verwenden.
     
  6. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    OK, das verstehe ich jetzt! Danke für die detaillierte Erläuterung und das konkrete Beispiel! :)