Überall in xt:Commerce sind im System sogenannte Hookpunkte ("Einhängepunkte") welche es Plugins erlauben beliebigen php-Code an dieser Stelle in die Funktion bzw. Datei einzubinden.
Ein Hookpunkt in einer Klasse:
Code Block | ||||
---|---|---|---|---|
| ||||
($plugin_code = $xtPlugin->PluginCode('class.product.php:_getPrice_center')) ? eval($plugin_code) : false; |
Ein Hookpunkt im Template:
Code Block | ||||
---|---|---|---|---|
| ||||
{hook key=account_tpl_module_data_bottom} |
Beispiel xt_countryprices:
Das Plugin xt_countryprices zeigt den Preis in Abhängigkeit zum Herkunftsland des Kunden an, d.h. es lassen sich für die verschiedenen Länder verschiedene Produktpreise einstellen.
Es ist also erforderlich es die Funktion _getPrice() in der Klasse class.products.php zu erweitern bzw. zu verändern. (In der Funktion wird der Preis eines Produkts abgefragt.)
D.h. in der Installations-Datei des Plugins wird ein Hookpunkt erstellt:
Code Block | ||||
---|---|---|---|---|
| ||||
<code>
<hook>class.product.php:_getPrice_center</hook>
<phpcode><![CDATA[
// hier der phpcode der im Hook class.product.php:_getPrice_center eusgeführt werden soll.
]]></phpcode>
<order>1</order>
<active>1</active>
</code> |
Auszug aus der Funktion _getPrice():
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// ....
// Products Price
$products_price = $this->data['products_price'];
$format_type = 'default';
// Hookpunkt:
($plugin_code = $xtPlugin->PluginCode('class.product.php:_getPrice_center')) ? eval($plugin_code) : false;
if(isset($plugin_return_value))
return $plugin_return_value;
// special price ?
$special_price_otax = $this->data['flag_has_specials'] ? $this->getSpecialPrice():false;
if ($special_price_otax!=false) {
// .... |