eigene Plugins programmieren

JTL Shop

PQ Selector & Plugin Programmierung

Um Inhalte zu überschreiben sollte man sich der PQ Funktion bedienen.
PQ(<selector>)→<Funktion>

Info's unter: https://code.google.com/archive/p/phpquery/wikis/Manipulation.wiki


Beispiele:

pq('#tsReviewStickerWrapper')->append($ts_ReviewStickerCode);
pq('#sidebox_ts_rating')->remove();
pq('body')->append('<h3>Variablen:</h3><pre>' . print_r($mailSmarty->getTemplateVars(), true) . '</pre>');
pq('#panel-edit-coupon')->parent()->remove();
pq('head > link[data-theme]')->attr('disabled', true);
pq('head > link[data-theme="' . $cTheme . '"]')->removeAttr('disabled');

Programmierung

Es geht einfach nur um die folgenden Schritte:
1) Ein PHP-Datei für Hook 140 anlegen
2) Darin via $smarty→assign() Variablen bereitstellen
3) Ein Template anlegen, das HTML erzeugen soll. Hier kann die zuvor assignte Variable genutzt werden.
4) Via $smarty→fetch() das HTML generieren
5) Das erzeugte HTML mit pq() in den DOM einfügen.

// 1. Variablen welche im TPL benötigt werden SMARTY zuweisen
 $smarty->assign('some_text', $someText);
 $smarty->assign('lang_var_1', vsprintf($this->plugin->oPluginSprachvariableAssoc_arr['xmlp_lang_var_1'],
 array($this->calculatePi(), $this->plugin->nVersion)));
 
// 2. Template einlesen un rendern
 $html = $smarty->fetch($file);
 
// 3. Einstelungen aus der XML auslesen
 $function = $this->plugin->oPluginEinstellungAssoc_arr['jtl_example_pqfunction'];
 $selector = $this->plugin->oPluginEinstellungAssoc_arr['jtl_exmple_pqselector'];
 
//4. PQ aufrufen
 pq($selector)->$function($html);
<Setting type="text" initialValue="#content" sort="21" conf="Y">
 <Name>PHP-Query-Selektor</Name>
 <Description>Ein beliebiger PHP-Query-Selektor</Description>
 <ValueName>jtl_exmple_pqselector</ValueName>
</Setting>
 
== config Einstellungen in der XML ==
<Setting type="selectbox" initialValue="append" sort="22" conf="Y">
 <Name>PHP-Query-Funktion</Name>
 <Description>Welche Funktion soll für das Einfügen des Templates verwendet werden?</Description>
 <ValueName>jtl_example_pqfunction</ValueName>
<SelectboxOptions>
 <Option value="append" sort="1">append() - Als als letztes Kind in Selektor einfügen</Option>
 <Option value="prepend" sort="2">prepend() - Als erstes Kind in Selektor einfügen</Option>
 <Option value="after" sort="3">after() - Nach Selektor einfügen</Option>
 <Option value="before" sort="4">before() - Vor Selektor einfügen</Option>
 <Option value="replaceWith" sort="4">replaceWith() - Selektor durch Inhalt ersetzen</Option>
</SelectboxOptions>
</Setting>

Gutes Beispiel für replacewith https://api.jquery.com/replaceWith/