Jump to content
xt:Commerce Community Forum

Hook Code wird nicht ausgeführt?


FS03

Recommended Posts

Hallo,

ich bin gerade dabei ein Plugin zu schreiben mit dem ich all die kleinen Änderungen zusammen fassen möchte.

Bisher hat auch alles geklappt bis jetzt.

Im Hook class.price.php:_Format_data möchte ich eine weitere Templatevariable definieren, welche mir den Produktpreis ohne eingerechnete Mwst. ausgibt. Die Änderung habe ich in der Class schon vorgenommen welche auch das gewünschte Ergebnis bringt. Wenn ich jetzt diesen Code aber in den Hook packe klappt es leider nicht mehr.

Betreffende Zeilen in der class.price.php:

			$template = new Template();
($plugin_code = $xtPlugin->PluginCode('class.price.php:_Format_data')) ? eval($plugin_code) : false;
if(isset($plugin_return_value))
return $plugin_return_value;

$tpl_price = $template->getTemplate('price_smarty','/'._SRV_WEB_CORE.'pages/price/'.$tpl,$tpl_data);
$return_array = array ('formated' => $tpl_price, 'plain' => $price, 'plain_otax' => $price_otax);
if (isset($add_return_array)) $return_array=array_merge($return_array,$add_return_array);
return $return_array;[/PHP]

Und hier der Code aus meinem Hook:

[PHP] $tpl_price = $template->getTemplate('price_smarty','/'._SRV_WEB_CORE.'pages/price/'.$tpl,$tpl_data);
$return_array = array ('formated' => $tpl_price, 'plain' => $price, 'plain_otax' => $price_otax, 'formatedotax' => $Fprice_otax);
if (isset($add_return_array)) $return_array=array_merge($return_array,$add_return_array);
return $return_array;[/PHP]

Wo gehts schief?

Link to comment
Share on other sites

Moin,

das Problem wird wohl daran liegen, dass du das Array "$return_array" in deinem Hook deklarierst und es nach dem Hook von der Klasse neu deklariert wird und somit deine Deklaration überschrieben wird.

Versuche mal folgendes in dienem Hook:


$add_return_array['formatedotax'] = $Fprice_otax;
[/PHP]

Das dürfte eigentlich shcon reichen.

LG

Link to comment
Share on other sites

Moin,

das Problem wird wohl daran liegen, dass du das Array "$return_array" in deinem Hook deklarierst und es nach dem Hook von der Klasse neu deklariert wird und somit deine Deklaration überschrieben wird.

Versuche mal folgendes in dienem Hook:


$add_return_array['formatedotax'] = $Fprice_otax;
[/PHP]

Das dürfte eigentlich shcon reichen.

LG

Tatsache, funktioniert! Ich hab gedacht, dass die weitere Ausführung in der Funktion durch den return abbricht und dadurch der Rest der nach dem Hook Code kommt abgeschnitten wird?

Vielen Dank!

Link to comment
Share on other sites

Du musst dir das Hook-System so vorstellen, als wenn der Code den du in den Hook direkt in die Core-Datei geschrieben wird und zwar genau an der Stelle, an der der Hook abgefragt wird. Damit stheen dir im Hook alle vorher deklarierten Variablen zur verfügung und wenn du sie änderst, arbeitet die Datei nach dem Hook mit den geänderten Werten weiter.

Abbrechen würde der Code an der Stelle, wenn im Plugin, sprich in deinem Hook, die Variable $plugin_return_value deklariert worden wäre. Dann würde an der Stelle der Inhalt dieser Variable zurückgegeben werdne und Damit das Script beendet werden.

LG

Link to comment
Share on other sites

Du musst dir das Hook-System so vorstellen, als wenn der Code den du in den Hook direkt in die Core-Datei geschrieben wird und zwar genau an der Stelle, an der der Hook abgefragt wird. Damit stheen dir im Hook alle vorher deklarierten Variablen zur verfügung und wenn du sie änderst, arbeitet die Datei nach dem Hook mit den geänderten Werten weiter.

Abbrechen würde der Code an der Stelle, wenn im Plugin, sprich in deinem Hook, die Variable $plugin_return_value deklariert worden wäre. Dann würde an der Stelle der Inhalt dieser Variable zurückgegeben werdne und Damit das Script beendet werden.

LG

Okay, prima! Verstanden. Vielen Dank.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...