#1 (permalink)  
Alt 17.11.2007, 07:48
Neuer Benutzer
 
Registriert seit: 18.03.2006
Beiträge: 4
Standard Code-Verständnisfrage

Hallo,

ich soll für jemandem im Shop was ein wenig Code hinzufügen und stolpere gerade über folgenden Code:
Datei: checkout_success.php
Zeile: ganz am Ende wo "if (DOWNLOAD_ENABLED == 'true')" steht.

Bei mir sieht das so aus (ich hoffe, dass dies nicht schon vorher verändert wurde oder evlt. eine alte Datei ist, die schon in einer neueren Version vorliegt).

Als mein Dateiende sieht so aus
PHP-Code:
if (DOWNLOAD_ENABLED == 'true')
    include (
DIR_WS_MODULES.'downloads.php');
$smarty->assign('language'$_SESSION['language']);
$smarty->assign('PAYMENT_BLOCK'$payment_block);
$smarty->caching 0;
$main_content $smarty->fetch(CURRENT_TEMPLATE.'/module/checkout_success.html');

$smarty->assign('language'$_SESSION['language']);
$smarty->assign('main_content'$main_content);
$smarty->caching 0;
if (!
defined(RM))
    
$smarty->load_filter('output''note');
$smarty->display(CURRENT_TEMPLATE.'/index.html');
include (
'includes/application_bottom.php');
?> 
Wenn ich den Code richtig interpretiere, kann man das ja auch so schreiben, was für mich wenig Sinn macht:
PHP-Code:
if (DOWNLOAD_ENABLED == 'true') {
    include (
DIR_WS_MODULES.'downloads.php');
}

$smarty->assign('language'$_SESSION['language']);
$smarty->assign('PAYMENT_BLOCK'$payment_block);
$smarty->caching 0;
$main_content $smarty->fetch(CURRENT_TEMPLATE.'/module/checkout_success.html');

$smarty->assign('language'$_SESSION['language']);
$smarty->assign('main_content'$main_content);
$smarty->caching 0;

if (!
defined(RM)) {
    
$smarty->load_filter('output''note');
}

$smarty->display(CURRENT_TEMPLATE.'/index.html');
include (
'includes/application_bottom.php');
?> 
Das würde ja bedeuten, dass
PHP-Code:
$smarty->assign('language'$_SESSION['language']);
und
$smarty
->caching 0
Zweimal zugewiesen werden würden. Da ich das erstmal merkwürdig finde wollte ich mal fragen, ob:

1. Die Datei so im original so aussieht?
2. Noch aktuell ist? (evtl. habe ich ja eine alte Datei)
3. So richtig interpretiert wurde? (evtl. habe ich das ja falsch verstanden)
4. Wenn 1-3 mit "ja" beantwortet werden können, bitte mal diesen Code erklären.

Vielen Dank.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 17.11.2007, 09:46
Erfahrener Benutzer
 
Registriert seit: 02.05.2007
Beiträge: 149
Standard

Zitat:
Zitat von docdawson Beitrag anzeigen
1. Die Datei so im original so aussieht?
2. Noch aktuell ist? (evtl. habe ich ja eine alte Datei)
3. So richtig interpretiert wurde? (evtl. habe ich das ja falsch verstanden)
4. Wenn 1-3 mit "ja" beantwortet werden können, bitte mal diesen Code erklären.

Vielen Dank.
Im Ergebnis ist da kein Unterschied. Die Zweite ist nur näher am Code-Standard. Die if-Schleifen gehören immer in geschweifte Klammern, was in der "alten" Version eben nicht so war. Die Datei in meiner SP2.1 sieht aus wie das untere Beispiel. Im Dateikopf steht übrigens ne Versionsnummer, bei mir ist das
PHP-Code:
$Idcheckout_success.php 896 2005-04-27 19:22:59Z mz 
Naja, ich versuch mal die zwei cache und language zu erklären:
Zuerst wird das, was in der checkout_success.php errechnet wurde dem Template checkout_success.html übergeben und als Ganzes mit fetch der Variable $main_content zugewiesen. Der Inhalt ist immer neu und darf nicht gecached sein. Deshalb wird das caching genullt. Das Template braucht auch die Sprache, weil ja #Text#-Tags drin stecken.
PHP-Code:
$main_content $smarty->fetch(CURRENT_TEMPLATE.'/module/checkout_success.html'); 
$main_content wird dann dem Template index.html übergeben und mit display am Bildschirm ausgegeben.
PHP-Code:
$smarty->display(CURRENT_TEMPLATE.'/index.html'); 
Auch für dieses Template muß caching 0 sein, weil ja sonst irgendein alter Content drin stehen würde. Die Sprache braucht das Template auch nochmal, weil die mit assign übergebenen Variablen nicht global zur Verfügung stehen und nach dem "fetch" des Templates "weg" sind.

"fetch" heißt quasi, merk Dir das mal, das hau ich später raus.
"display" bedeutet, daß jetzt gut ist mit der Rechnerei, jetzt will ichs sehen.

Da wird das viel besser erklärt: ;-)
http://smarty.php.net/manual/de/

Gruß
Numerobis
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 18.11.2007, 06:43
Neuer Benutzer
 
Registriert seit: 18.03.2006
Beiträge: 4
Standard

Cool, danke für die ausführliche Beschreibung. Das genügt schon.

Meine Version ist auch die
Code:
$Id: checkout_success.php 896 2005-04-27 19:22:59Z mz $
Komisch, dass die dann unterschiedlich aussehen.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 18.11.2007, 10:30
xt:Commerce Support Kunde
 
Registriert seit: 13.10.2006
Beiträge: 697
Standard

Auf die Versionsnummer würde ich mal gar nichts geben. Trotz großer Unterschiede zwischen verschiedenen Releases ändert die sich eher zufällig.

Und zum Thema 'if-Schleifen' noch was lesenswertes...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 19.11.2007, 11:35
Erfahrener Benutzer
 
Registriert seit: 02.05.2007
Beiträge: 149
Standard

Zitat:
Zitat von wibros Beitrag anzeigen
Und zum Thema 'if-Schleifen' noch was lesenswertes...
Haarspalter ;-)

Du hast natürlich recht. So ist das halt mit den Autodidakten. Da fällt einem kein richtiger Begriff ein und schon hat man einen falschen. Zumindest passt Schleife phonetisch ganz gut zur geschweiften Klammer ...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
codeverständnisfrage

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand