Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Ü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
languagephp
title/xtFramework/classes/class.product.php
($plugin_code = $xtPlugin->PluginCode('class.product.php:_getPrice_center')) ? eval($plugin_code) : false;

Ein Hookpunkt im Template:

Code Block
languagexml
title/templates/xt_grid/xtCore/pages/account.html
{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
languagexml
title/plugins/xt_countryprices/installer/xt_countryprices.xml
<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
languagephp
title/xtFramework/classes/class.product.php
firstline260

// ....
// 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) {

// ....