Variable für Smarty verfügbar machen

Thema wurde von KostjaWaag, 13. Februar 2024 erstellt.

  1. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Hallo,
    ich habe eine für Viele wahrscheinlich realativ simple Frage. Ich bin einigermaßen fit mit PHP allerdings habe ich nie mit Klassen gearbeitet. Bisher habe ich PHP Skripte einfach mit
    include_php file="{$tpl_path}usermod/..."} direkt in Smarty geladen. Das ist nach einem Update ja nicht mehr möglich.
    Ich bräuchte nun mal eine ganz allgemeine Anleitung in möglichst einfachen Worten, wie ich eine Variable mit PHP erzeuge, die ich in Smarty anzeigen kann.

    Als ganz einfaches Beispiel:

    <?php
    $name = "Tom";
    $html = "Hallo " .$name;
    ?>

    Wie kann ich nun die Variable $html in einem vorhandenen Smarty Block verfügbar machen, so daß letztlich im Frontend "Hallo Tom" angezeigt wird? Also wie genau lautet die Klasse? Wo speichere ich die hin?

    Viele Grüße, Kostja
     
  2. Developer
    Developer Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    2.953
    Danke erhalten:
    650
    Danke vergeben:
    117
    Hallo Kostja,

    Du musst uns mitteilen, wo die Variable zur Verfügung gestellt werden soll, damit wir die sagen können, welche Klasse Du gegebenenfalls überladen kannst.

    Ist das eine Variable aus deinem Werk oder eine hauseigene von Gambio?
     
  3. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Ich möchte die Variable z.B. in einem neuen Smarty Block auf auf der content.html darstellen. Es handelt sich um eine eigene php Anwendung, die ich einbinden möchte, bzw. den erzeugten html code. Wie gesagt war das kleine php nur als Beispiel gedacht um eine Grundlage für eine Schritt für Schritt Anleitung zu geben. Ich hatte mehrere eigene php Scripte in verschiedene Seiten geladen, hauptsächlich aber in die Content Seite und Produkt Seite. Ich denke, ich muss also eigene Klassen erstellen?
     
  4. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    28. Dezember 2020
    Beiträge:
    384
    Danke erhalten:
    196
    Danke vergeben:
    60
    #4 Anonymous, 13. Februar 2024
    Zuletzt bearbeitet: 16. Februar 2024
    Nachdem ich auch festgestellt habe, das php in html nicht mehr geht, arbeite ich dafür mit SmartyPlugins.
    z.B.
    GXModules/meins/shop/SmartyPlugins/function.addHallo.php mit folgendem Inhalt:
    PHP:
    <?php
    function smarty_function_addHallo ($params, &$smarty)
    {
    $name "Tom";
    $html "Hallo " .$name;
    $smarty->assign('ADD_HALLO'$html);
    }
    ?>
    dann unter GXModules/meins/shop/themes/all/beispiel.html die Funktion eingefügt:
    HTML:
    {block name="kleines_beispiel"}
    {addHallo}
    {$ADD_HALLO}
    {/block}
                    
    
    Das mache ich auch mit vielen anderen Funktionen.
     
  5. Developer
    Developer Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    2.953
    Danke erhalten:
    650
    Danke vergeben:
    117
  6. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Vielen Dank für dein Beipiel.
    Also übetragen auf mein kleines Beispiel wäre das dann im Prinzip so:

    <?php
    $name = "Tom";
    $html = "Hallo " .$name;
    $smarty->assign('ADD_HALLO', $html);
    ?>

    und der Smarty Block wäre dann z.B.:

    {block name="kleines_beispiel"}
    {$ADD_HALLO}
    {/block}

    richtig?
     
  7. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Vielen Dank für den Hinweis. Ich kenne den Bereich, ist auch sehr nützlich. Da fehlt mir aber eben so ein ganz simples konkretes Beispiel. Ich hab da leider mein Anliegen sehr einfach erklärt nicht gefunden/verstanden...
     
  8. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    28. Dezember 2020
    Beiträge:
    384
    Danke erhalten:
    196
    Danke vergeben:
    60
    #8 Anonymous, 13. Februar 2024
    Zuletzt bearbeitet: 28. März 2024
    <?php
    function smarty_function_addHallo ($params, &$smarty)
    {
    $name = "Tom";
    $html = "Hallo " .$name;
    $smarty->assign('ADD_HALLO', $html);
    }
    ?>
    Die Datei muss auch den richtigen Namen haben function.addHallo.php

    und der Smarty Block wäre dann z.B.:

    {block name="kleines_beispiel"}
    {addHallo}
    {$ADD_HALLO}
    {/block}

    So mal aus dem Handgelenk geschrieben wäre das richtiger
     
  9. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Hallo Gerd,
    erstmal vielen Dank für deine Hilfe. Ich hab das mal genauso getestet. Leider funktioniert das so nicht? Fehler:
    Syntax error in template "get_usermod:get_usermod: ... "{addHallo}" unknown tag 'addHallo'
     
  10. KostjaWaag
    KostjaWaag Erfahrener Benutzer
    Registriert seit:
    21. November 2016
    Beiträge:
    64
    Danke erhalten:
    1
    Danke vergeben:
    5
    Hab den Fehler gerade selbst gefunden. Der richtige Name ist function.addHallo.php
    Du hattest das versehentlich mit "k" geschrieben und ich habs genauso rauskopiert...
    Das funtioniert jetzt und so werde ich auch zum Ziel kommen.

    Mich würde aber auch interssieren, wie man das auf Basis von Klassen löst. Kann jemand helfen?