ich stehe gerade total auf’m schlauch und komme nicht wirklich weiter. Ich habe schon einige kleine “module” geschrieben die am ende einen wert an das template zurück geben oder etwas in die DB geschrieben wird.
Nun möchte ich gerne die FrontendController klasse erweitern und mit einer ganz simplen funktion versehen. Allerdings wird diese funktion unter keiner umständen ausgeführt.
Hier der Code:
class FrontendController extends FrontendController_parent
{
public function oct()
{
$oct = $_GET['oct'];
setcookie("oct", $oct, 0, "/");
//return true;
}
}
Mir ist bewusst das ich hier vermutlich was ganz simples übersehe bzw. zu **** bin
FrontendController habe ich ausgewählt weil die die funktion auf mehreren unterschiedlichen seiten brauche.
Ich überlege auch gerade ob es nicht mehr sinn machen wie die oxsession.php zu überschreiben und dann die session funktion von oxid zu nutzen. Aber da hätte ich vermutlich das gleiche problem wie aktuell.
Zumindest vor v6 konnte man nur die einzelnen Controller (content, start, alist etc) erweitern und nicht die Klasse, von der sie erben. Ich vermute stark, dass es immer noch so ist.
Du könntest ViewConfig oder oxcmp_user erweitern.
Vielen Dank für den hinweis @vanilla_thunder. Ich habe mal eben zum test fix die Article klasse erweitert und es funktioniert aber ich muss im entsprechenden template die funktion aufrufen.
[{$oDetailsProduct->getOct()}]
Gibt es da auch eine andere möglichkeit, so dass die funktion grundsätzlich (immer von alleine) ausgeführt wird, ohne das ich diese nun in jedes nötige template lade?
Bzw. von welchen dateien/klassen redest du genau, denn die oxcmp_user exisitert so nicht mehr …
class ViewConfig extends ViewConfig_parent
{
public function oct()
{
$oct = $_GET['oct'];
setcookie("oct_g", $oct, 0, "/");
}
}
tpl Block erstellt:
[{$smarty.block.parent}]
[{$oViewConf->oct()}]
Und den Block in die footer.tpl eingebunden:
[{block name="set_gclid_into_cookie"}]
[{/block}]
Somit habe ich die function praktisch überall verfügbar. Allerdings wirkt das mit dem tpl Block wie ein overkill für mich. Gibt es da keine andere Möglichkeit die function “überall” verfügbar zu machen?
du könntest ein anderes, bereits vorhandenes Block nutzen (wenn es darum ging, kein extra Block einfügen zu müssen). oder eine CMS Seite die überall eingebunden wird. Ggf irgendwas im footer oder im header (cookie note?)
es gibt ein paar component Klassen (oxcmp_xxx), die an vielen verschiedenen Stellen geladen werden, man müsste aber gucken, ob eine davon wirklich überall geladen wird. Ich würde mir oxcmp_user zuerst angucken.
Alternativ session erweitern + blForceSessionStart in der config.inc.php aktivieren