Hi all,
ich habe ein Problem und hoffe ihr könnt mir helfen.
Und zwar habe ich ein Plugin geschrieben welches die “frontend/indes/header.tpl” appended und um ein JavaScript erweitert. In diesem JavaScript muss jedoch eine Tracking ID aus der Plugin Config ausgelesen und eingesetzt werden.
Das ganze funktioniert auch schon wenn ich mich im frontend im Plugin namespace bewege. Dann bekomme ich meinen Header appended mit dem JS und der Tracking ID.
Nun habe ich jedoch das Problem das wenn ich z.B. auf ein Produkt oder eine andere Seite im Shop gehe, welche nicht mehr den Namesapcae des Plugins besitzt ist zwar die appendede Header.tpl mit dem JS da, jedoch habe ich keinen Zugriff mehr auf die Config des Pluigins und somit den Variable in der die Tracking ID steht. Somit ist der Tracking Code nicht funktional und sinnlos.
Kann mir hier jemand sagen wo mein Fehler ist, wie kann ich die Tracking ID Global verfügbar machen?
Anbei poste ich den Plugin Code in der Hoffnung das jemand meinen Fehler findet und mir helfen kann.
Schon einmal vielen Dank für eure Hilfe.
Daypaio.php
'onPreDispatch'
//'Enlight_Controller_Action_PreDispatch_Frontend_Checkout' => 'onPreDispatch'
'Enlight_Controller_Action_PostDispatch_Frontend' => 'onPostDispatch',
'Enlight_Controller_Action_PreDispatch' => 'onPreDispatch'
];
}
public function onPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Shopware_Controllers_Frontend_RoutingDemonstration $subject */
$controller = $args->getSubject();
$controller->View()->addTemplateDir( __DIR__. '/Resources/views');
}
public function onPreDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Shopware_Controllers_Frontend_RoutingDemonstration $subject */
$controller = $args->getSubject();
$controller->View()->addTemplateDir( __DIR__. '/Resources/views');
//$this->view->assign('tracking_id', $tracking_id);
}
public function install(InstallContext $context)
{
$context->scheduleClearCache(InstallContext::CACHE_LIST_DEFAULT);
}
public function uninstall(UninstallContext $context)
{
$context->scheduleClearCache(InstallContext::CACHE_LIST_DEFAULT);
}
}
Subscribers/DaypaioSubscriber.php
'onPreDispatch',
'Enlight_Controller_Action_PostDispatchSecure_Frontend' => 'onPreDispatch'
];
}
public function onPreDispatch(\Enlight_Event_EventArgs $args)
{
$controller = $args->getSubject();
$controller->View()->addTemplateDir( __DIR__. '/../Resources/views');
}
}
Resources/config.xml
access_token
daypaio API Access Token
daypaio API Access Token
Tragen Sie hier den Access Token aus Ihrem daypaio Portal ein.
Enter the access token from your daypaio portal here.
tracking_id
daypaio Tracking ID
daypaio Tracking ID
Tragen Sie hier die Tracking ID aus Ihrem daypaio Portal ein.
Enter the tracking id from your daypaio portal here.
Resources/views/frontend/daypaio/index.tpl
{extends file="parent:frontend/index/index.tpl"}
{block name='frontend_index_content' append}
ich bin die {$currentAction}-action
{*
{s name="GoToNextPage"}{/s}
*}
Auth Token: {$authToken};
Tracking ID: {$trackingId}
{/block}
Resources/views/frontend/index/header.tpl
{extends file="parent:frontend/index/header.tpl"}
{block name="frontend_index_header_javascript_tracking" append}
{literal}
(function(w,d,sc,src,sy,scr,id){w['SYSObject']=sy;w[sy]=w[sy]||function(){
(w[sy].q=w[sy].q||[]).push(arguments)},w[sy].l=1*new Date();scr=d.createElement(sc),
id=d.getElementsByTagName(sc)[0];scr.async=0;scr.src=src;id.parentNode.insertBefore(scr,id)})
(window,document,'script','https://data.getsystem.de/dc.js','sys');
sys('init','{/literal}{$tracking_id}{literal}')
{/literal}
{/block}
Controllers/Frontend/Daypaio.php
view->addTemplateDir( __DIR__. '/../../Resources/views');
$tracking_id = $this->getTrackingId();
$this->view->assign('tracking_id', $tracking_id);
}
public function onPostDispatch()
{
$tracking_id = $this->getTrackingId();
//$this->view->assign('tracking_id', $tracking_id);
}
public function indexAction(){
$this->view->assign('nextAction', 'foo');
// get the auth token from config
$auth_token = $this->getAuthToken();
$this->view->assign('authToken', $auth_token);
// get the tracking id from config
$tracking_id = $this->getTrackingId();
$this->view->assign('trackingId', $tracking_id);
}
public function fooAction(){
$this->view->assign('nextAction', 'index');
}
public function finishAction(){
$this->view->assign('apiAction', 'index');
}
public function postDispatch()
{
$currentAction = $this->request()->getActionName();
$this->view->assign('currentAction', $currentAction);
}
public function cartAction(){
$this->view->assign('daypayio_action', 'cart');
}
/*
* getAuthToken
*/
private function getAuthToken()
{
$pluginConfig = $this->container->get('shopware.plugin.cached_config_reader')->getByPluginName('Daypaio');
$authToken = $pluginConfig['access_token'];
return $authToken;
}
/*
* getTrackingId
*/
private function getTrackingId()
{
$pluginConfig = $this->container->get('shopware.plugin.cached_config_reader')->getByPluginName('Daypaio');
$trackingId = $pluginConfig['tracking_id'];
return $trackingId;
}
}