Neu get_template_vars() funktioniert nicht

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Hi,

ich versuche im Template mir per PHP Smarty Variablen ausgeben zu lassen.
Irgenwie bekomme ich das nicht hin.

PHP:
{php}
echo $smarty->get_template_vars('parent_template_path');
{/php}


Notice: Undefined variable: smarty in /var/customers/webs/No1/h24/templates_c/Hair24-Evo/0efdce1a518fc07e1b4c153b4966e76a8a4ebc89_0.file.step3_shipping_options.tpl.php on line 49 Fatal error: Uncaught Error: Call to a member function get_template_vars() on null in /var/customers/webs/No1/h24/templates_c/Hair24-Evo/0efdce1a518fc07e1b4c153b4966e76a8a4ebc89_0.file.step3_shipping_options.tpl.php:49 Stack trace: #0 /var/customers/webs/No1/h24/includes/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php(128): content_5bffb544aa8b87_67566313(Object(jtlTplClass)) #1 /var/customers/webs/No1/h24/includes/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php(172): Smarty_Template_Resource_Base->getRenderedTemplateCode(Object(jtlTplClass)) #2 /var/customers/webs/No1/h24/includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php(206): Smarty_Template_Compiled->render(Object(jtlTplClass)) #3 /var/customers/webs/No1/h24/classes/class.JTL- Shop.JTLSmarty.php(873): Smarty_Internal_Template->render(true, NULL) #4 /var/customers/webs/No1/h24/includes/vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php(372): jtlTplClass->render() #5 /var/customers/webs/No1/h in /var/customers/webs/No1/h24/templates_c/Hair24-Evo/0efdce1a518fc07e1b4c153b4966e76a8a4ebc89_0.file.step3_shipping_options.tpl.php on line 49



Jemand eine Idee was ich da falsch mache ?
 

Mirko.Schmidt User deaktiviert

Guest
Hallo,
warum wird nicht direkt mit
Code:
{$smarty->get_template_vars('parent_template_path');}
gearbeitet im Template? Dafür wird PHP nicht extra benötigt.
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Hi und Danke erst mal.

Mir ging es darum "temporär" eine Logdatei zu schreiben.

Ich habe es eben hinbekommen:

Wenn jemand noch eine Idee / Kritik hat dann bitte her damit

Code:
{php}
                    // Alle Smarty Variablen ausgeben
                    // $myVars = Shop::Smarty()->get_template_vars();
                    // echo "<pre>";
                    // var_dump($myVars);
                    // echo "</pre>";   
                    
                    // Gesamtbetrag
                    $myVar  = Shop::Smarty()->get_template_vars('WarenkorbGesamtsumme');
                    $betrag = $myVar[0];
                    
                    // Kunde
                    $myVar  = Shop::Smarty()->get_template_vars('Kunde');
                    $vorname = $myVar->cVorname;
                    $nachname= $myVar->cNachname;       
                
                    $file = $_SERVER['DOCUMENT_ROOT'].'/logfile.log';
                    $timestamp = time();
                    $datum = date("d.m.Y - H:i", $timestamp);
                    $Order_text = $datum."Betrag: ".$betrag."    Name: ".$vorname." ".$nachname.chr(0x0D).chr(0x0A);
                    file_put_contents($file, $Order_text, FILE_APPEND | LOCK_EX);
{/php}
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Es wäre so einfach das über die functions.php zu machen

hier mal ein Vorschlag ohne das ich das jetzt mit Parametern übergebe, was ja eigentlich noch besser wäre:
der Aufruf im Template wäre dann ein einfaches {mywritelog}, das Log wird da hingeschrieben wo es hingehört, in /jtllogs.
Hier wird für jeden Tag ein eigenes Log geschrieben.

Aber wenn du Shippingoptions als Template nimmst, dann wird nicht alles geloggt, weil es ja Kunden gibt die direkt am Ende landen.



Code:
$smarty->registerPlugin('function', 'mywritelog', 'mywritelog');
function mywritelog($params = array(), &$smarty)    {
    // Alle Smarty Variablen ausgeben
    // $myVars = Shop::Smarty()->get_template_vars();
    // echo "<pre>";
    // var_dump($myVars);
    // echo "</pre>";   
    
    // Gesamtbetrag
    $myVar  = \Shop::Smarty()->get_template_vars('WarenkorbGesamtsumme');
    $betrag = $myVar[0];
    
    // Kunde
    $myVar  = \Shop::Smarty()->get_template_vars('Kunde');
    $vorname = $myVar->cVorname;
    $nachname= $myVar->cNachname;       
    
    $timestamp = time();
    $datum = date("d.m.Y - H:i", $timestamp);
    $Order_text = $datum."Betrag: ".$betrag."    Name: ".$vorname." ".$nachname.chr(0x0D).chr(0x0A);
    
    $fp = fopen(PFAD_LOGFILES. 'Shop_'.date("d-m-Y").'.log',"a+");
    if($fp) {
        fwrite($fp,$Order_text."--------------------------------\n");
        fclose($fp);
    }
}
 
  • Gefällt mir
Reaktionen: Conny

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Ich habe bewußt nichts geändert. Das {php} ging einfach so.

Hey - danke für die SUPER Idee mit der functions.php!

Ich habe es bei den Shipping eingebunden um zu sehen ob es Abbrüche zwischen dem Shipping Select und den Kaufabschluss gibt.