Facebook Werbeanzeigen-"Pixel" schrottet Frontend?!

Hallo,

wir haben eine Facebook-Werbeanzeige geschaltet, und hierzu wollen wir das sog. „Zählpixel“ von Facebook integrieren. So sieht der allgemeine Teil aus:

    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
    document,'script','https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', 'XXXXXXXXXXXXXXXXXXXX'); // Insert your pixel ID here.
    fbq('track', 'PageView');
    fbq('track', 'Purchase');

Dieses Script soll im Head der Seite platziert werden. Wunderbar, hierfür steht ja in der fontend/index/header.tpl der Block frontend_index_header_javascript_tracking direkt vor dem schießenden Head-Tag zu Verfügung. Also rein damit, Theme neu kompiliert und zack:

Syntax Error in template "/pfad/zum /shop/shopware/themes/Frontend/xxx/frontend/index/header.tpl" on line 4 "!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?" - Unexpected ".", expected one of: "","" , ")" in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657
Stack trace:

#0 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error()
#1 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(59, '.')
#2 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(59, '.')
#3 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile('\n

@pierre-schmitz schrieb:

Hallo,

wir haben eine Facebook-Werbeanzeige geschaltet, und hierzu wollen wir das sog. „Zählpixel“ von Facebook integrieren. So sieht der allgemeine Teil aus:

!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version=‚2.0‘;n.queue=;t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,‚script‘,‚https://connect.facebook.net/en_US/fbevents.js‘);
fbq(‚init‘, ‚XXXXXXXXXXXXXXXXXXXX‘); // Insert your pixel ID here.
fbq(‚track‘, ‚PageView‘);
fbq(‚track‘, ‚Purchase‘);

https://www.facebook.com/tr?id=XXXXXXXXXXXXXXXXXXXX&ev=PageView&noscript=1";
/>

Dieses Script soll im Head der Seite platziert werden. Wunderbar, hierfür steht ja in der fontend/index/header.tpl der Block frontend_index_header_javascript_tracking direkt vor dem schießenden Head-Tag zu Verfügung. Also rein damit, Theme neu kompiliert und zack:

Jetzt bin ich ziemlich ratlos. Wie kann denn ein (meinetwegen auch fehlerhaftes) Stück Javascript dafür sorgen, dass die serverseitige Verarbeitung komplett aussteigt?

Hallo,

das liegt daran, das nunmal das Zeichen { und } für Smarty reserviert ist und du das nicht einfach so nutzen kannst, siehe: http://www.smarty.net/docsv2/en/language.function.literal .

Setze also am besten um den JavaScipt einfach folgendes drum herum:

{literal}
     
    
    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
    document,&#39;script&#39;,&#39;<a href="https://connect.facebook.net/en_US/fbevents.js'"; rel="nofollow" target="_blank">https://connect.facebook.net/en_US/fbevents.js&#39;</a>;);
    fbq(&#39;init&#39;, &#39;XXXXXXXXXXXXXXXXXXXX&#39;); // Insert your pixel ID here.
    fbq(&#39;track&#39;, &#39;PageView&#39;);
    fbq(&#39;track&#39;, &#39;Purchase&#39;);
    
    https://www.facebook.com/tr?id=XXXXXXXXXXXXXXXXXXXX&ev=PageView&noscript=1";
    />
    
    
{/literal}

Man sollte so und so wenn möglich versuchen, JavaScript nicht inline einzubinden, um der Performance des Shops nicht zu schaden.

Beste Grüße

Sebastian

Hallo Sebastian,

vielen Dank! Es hat jetzt geklappt. Performance ist auch okay, es funktioniert eben nur, wenn das Script im Head eingebunden wird. Aber das Facebook-Trackingpixel hat wohl auch noch einige datenchutzrechtliche Fallstricke, anscheinend kann man das in Deutschland nur nach vorheriger eindeutiger Einwilligung mittels Vorschaltseite und anschließendem Seitenreaload, der erst dann das Script ausführt, rechtskonform einsetzen.

Das ist mir zu viel Heckmeck, ich glaub ich bau es wieder aus. So groß ist der Informationsgewinn dann auch wieder nicht. Man kriegt das auf Facebook beim Erstellen einer Werbeanzeige so penetrant angeboten, dass man das einfach mal ausprobiert.

Grüße
Pierre

@pierre-schmitz schrieb:

Hallo Sebastian,

vielen Dank! Es hat jetzt geklappt. Performance ist auch okay, es funktioniert eben nur, wenn das Script im Head eingebunden wird. Aber das Facebook-Trackingpixel hat wohl auch noch einige datenchutzrechtliche Fallstricke, anscheinend kann man das in Deutschland nur nach vorheriger eindeutiger Einwilligung mittels Vorschaltseite und anschließendem Seitenreaload, der erst dann das Script ausführt, rechtskonform einsetzen.

Das ist mir zu viel Heckmeck, ich glaub ich bau es wieder aus. So groß ist der Informationsgewinn dann auch wieder nicht. Man kriegt das auf Facebook beim Erstellen einer Werbeanzeige so penetrant angeboten, dass man das einfach mal ausprobiert.

Grüße
Pierre

Du kannst den Code doch auch ganz einfach im Theme Konfiguration einbinden, neben Google Analytics etc.

 
Hier habe ich es eingebunden, so musst du weder in die .tpl Datein noch ein Plugin kaufen.

Bitte berichtigt mich, sollte ich hier einen fatalen Fehler gemacht haben @Moderatoren

Eine Frage hätte ich dennoch: Wie kann ich diesen Custom Event Code für Search/Basket/Purchase/etc. auf jeder Seite einzelt installieren? Gibt es da eine elegante Lösung oder geht das nur über Plugins / .tpl bearbeitung?

@Pierre-Schmitz: Ich würde das Pixel auf jeden Fall installieren, falls du etwas auf deiner Seite verkaufst. FB Ads sind deutlich günstiger als AdWords etc. und damit kannst du deinen Cost per Conversion super messen.

 

 

EDIT 1: 
Ich habe nun versucht die /frontend/checkout/confirm.tpl zu erweitern und habe dabei dein SMARTY {literal} berücksichtig: Hier ist der Auszug:

{extends file='parent:frontend/checkout/confirm.tpl"}
{literal}

fbq('track', 'Purchase', {
value: 10.00,
currency: 'EUR'
});

{/literal}

Somit habe ich gesagt, dass er das { als solches betrachten soll. Ich bekomme aber in der erweiterten Fehlerbeschreibungsansicht immer wieder diesen Fehler:

Ups! Ein Fehler ist aufgetreten!
Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template "/var/www/web868/html/shopware/themes/Frontend/Moebly/frontend/checkout/confirm.tpl" on line 4 "fbq('track', 'Purchase', {" - Unexpected "track", expected one of: "}" , " " , ATTR in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

Was mache ich falsch?

EDIT 2: Hinzufügen von {literal} oder Leerzeichen vor und nach { } hat das komplette Frontent zerschossen nach dem ich versucht habe den FB Pixel in der header.tpl zu integrieren. Seltsamer Weise funktioniert es im Theme Konfig Problemlos und sendet auch. Auf einzelne TPL Datein kann man es aber nicht ohne weiteres anweden… jemand ne Idee was ich falsch mache?

@moebly schrieb:

@pierre-schmitz schrieb:

Hallo Sebastian,

vielen Dank! Es hat jetzt geklappt. Performance ist auch okay, es funktioniert eben nur, wenn das Script im Head eingebunden wird. Aber das Facebook-Trackingpixel hat wohl auch noch einige datenchutzrechtliche Fallstricke, anscheinend kann man das in Deutschland nur nach vorheriger eindeutiger Einwilligung mittels Vorschaltseite und anschließendem Seitenreaload, der erst dann das Script ausführt, rechtskonform einsetzen.

Das ist mir zu viel Heckmeck, ich glaub ich bau es wieder aus. So groß ist der Informationsgewinn dann auch wieder nicht. Man kriegt das auf Facebook beim Erstellen einer Werbeanzeige so penetrant angeboten, dass man das einfach mal ausprobiert.

Grüße
Pierre

Du kannst den Code doch auch ganz einfach im Theme Konfiguration einbinden, neben Google Analytics etc.

 
Hier habe ich es eingebunden, so musst du weder in die .tpl Datein noch ein Plugin kaufen.

Bitte berichtigt mich, sollte ich hier einen fatalen Fehler gemacht haben @Moderatoren

Eine Frage hätte ich dennoch: Wie kann ich diesen Custom Event Code für Search/Basket/Purchase/etc. auf jeder Seite einzelt installieren? Gibt es da eine elegante Lösung oder geht das nur über Plugins / .tpl bearbeitung?

@Pierre-Schmitz: Ich würde das Pixel auf jeden Fall installieren, falls du etwas auf deiner Seite verkaufst. FB Ads sind deutlich günstiger als AdWords etc. und damit kannst du deinen Cost per Conversion super messen.

 

 

EDIT 1: 
Ich habe nun versucht die /frontend/checkout/confirm.tpl zu erweitern und habe dabei dein SMARTY {literal} berücksichtig: Hier ist der Auszug:

{extends file='parent:frontend/checkout/confirm.tpl"}
{literal}

fbq(‚track‘, ‚Purchase‘, {
value: 10.00,
currency: ‚EUR‘
});

{/literal}

Somit habe ich gesagt, dass er das { als solches betrachten soll. Ich bekomme aber in der erweiterten Fehlerbeschreibungsansicht immer wieder diesen Fehler:

Ups! Ein Fehler ist aufgetreten!
Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template „/var/www/web868/html/shopware/themes/Frontend/Moebly/frontend/checkout/confirm.tpl“ on line 4 „fbq(‚track‘, ‚Purchase‘, {“ - Unexpected „track“, expected one of: „}“ , " " , ATTR in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

Was mache ich falsch?

Hallo,

die bessere Frage wäre hier eher, was du bei deinem Code überhaupt richtig gemacht hast, da dieser überhaupt kein Sinn ergibt und berechtigterweise zu einem Fehler führt.

Der Code müsste eher lauten:

{extends file='parent:frontend/checkout/confirm.tpl"}

{block_in_der_confirm_tpl_der_ergänzt_werden_soll}
{$smarty.block.parent}
{literal}

fbq('track', 'Purchase', {
value: 10.00,
currency: 'EUR'
});

{/literal}
{/block}

Wobei du natürlich einen Shopware Block und einen Bereich (beispielsweise checkout/confirm.tpl für die Bestellabschlussseite) nehmen müsstest, nachdem du den Code angezeigt haben möchtest, siehe: Getting started with Shopware templating . Man kann das Facebook - Pixel  wie erwähnt problemlos in einer Template - Datei im eigenen Theme ergänzen ;).

Beste Grüße

Sebastian

1 Like

@sschreier schrieb:

@moebly schrieb:

@pierre-schmitz schrieb:

Hallo Sebastian,

vielen Dank! Es hat jetzt geklappt. Performance ist auch okay, es funktioniert eben nur, wenn das Script im Head eingebunden wird. Aber das Facebook-Trackingpixel hat wohl auch noch einige datenchutzrechtliche Fallstricke, anscheinend kann man das in Deutschland nur nach vorheriger eindeutiger Einwilligung mittels Vorschaltseite und anschließendem Seitenreaload, der erst dann das Script ausführt, rechtskonform einsetzen.

Das ist mir zu viel Heckmeck, ich glaub ich bau es wieder aus. So groß ist der Informationsgewinn dann auch wieder nicht. Man kriegt das auf Facebook beim Erstellen einer Werbeanzeige so penetrant angeboten, dass man das einfach mal ausprobiert.

Grüße
Pierre

Du kannst den Code doch auch ganz einfach im Theme Konfiguration einbinden, neben Google Analytics etc.

 
Hier habe ich es eingebunden, so musst du weder in die .tpl Datein noch ein Plugin kaufen.

Bitte berichtigt mich, sollte ich hier einen fatalen Fehler gemacht haben @Moderatoren

Eine Frage hätte ich dennoch: Wie kann ich diesen Custom Event Code für Search/Basket/Purchase/etc. auf jeder Seite einzelt installieren? Gibt es da eine elegante Lösung oder geht das nur über Plugins / .tpl bearbeitung?

@Pierre-Schmitz: Ich würde das Pixel auf jeden Fall installieren, falls du etwas auf deiner Seite verkaufst. FB Ads sind deutlich günstiger als AdWords etc. und damit kannst du deinen Cost per Conversion super messen.

 

 

EDIT 1: 
Ich habe nun versucht die /frontend/checkout/confirm.tpl zu erweitern und habe dabei dein SMARTY {literal} berücksichtig: Hier ist der Auszug:

{extends file='parent:frontend/checkout/confirm.tpl"}
{literal}

fbq(‘track’, ‘Purchase’, {
value: 10.00,
currency: ‘EUR’
});

{/literal}

Somit habe ich gesagt, dass er das { als solches betrachten soll. Ich bekomme aber in der erweiterten Fehlerbeschreibungsansicht immer wieder diesen Fehler:

Ups! Ein Fehler ist aufgetreten!
Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template “/var/www/web868/html/shopware/themes/Frontend/Moebly/frontend/checkout/confirm.tpl” on line 4 “fbq(‘track’, ‘Purchase’, {” - Unexpected “track”, expected one of: “}” , " " , ATTR in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

Was mache ich falsch?

Hallo,

die bessere Frage wäre hier eher, was du bei deinem Code überhaupt richtig gemacht hast, da dieser überhaupt kein Sinn ergibt und berechtigterweise zu einem Fehler führt.

Der Code müsste eher lauten:

{extends file='parent:frontend/checkout/confirm.tpl"}

{block_der_ergänzt_werden_soll}
{$smarty.block.parent}
{literal}

fbq(‘track’, ‘Purchase’, {
value: 10.00,
currency: ‘EUR’
});

{/literal}
{/block}

Wobei du natürlich einen Shopware Block und einen Bereich (beispielsweise checkout/confirm.tpl für die Bestellabschlussseite) nehmen müsstest, vor dem du den Code angezeigt haben möchtest. Man kann das Facebook - Pixel  wie erwähnt problemlos in einer Template - Datei im eigenen Theme ergänzen ;).

Beste Grüße

Sebastian

Hallo Sebastian,

vielen lieben Dank für die schnelle Hilfe. Das ist nicht gewöhnlich einfach so Sonntags Abends da noch Hilfe zu bekommen! Also Dankeschön!!
Ich hab es leider noch nicht ganz verstanden, was du mit  “Man kann das Facebook - Pixel  wie erwähnt problemlos in einer Template - Datei im eigenen Theme ergänzen  ;).” meinst. Willst du damit sagen, dass der Weg den ich gewählt habe, es in der Theme KOnfig hinzupacken richtig oder falsch war. Wenn du damit meinst, in einer .tpl datei im eigenen Theme, dann wäre ich dir riesig dankbar wenn du mir zeigst wie. 

Mit deinem Code bekomme ich jetzt folgenden Fehler:

The provided X-CSRF-Token is invalid. Please go back, reload the page and try again. in engine/Shopware/Components/CSRFTokenValidator.php on line 161

Stack trace:

#0 [internal function]: Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#2 engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#3 engine/Library/Enlight/Controller/Action.php(143): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs))
#4 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('loginAction')
#5 engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#6 engine/Shopware/Kernel.php(176): Enlight_Controller_Front->dispatch()
#7 vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 vendor/symfony/http-kernel/HttpCache/HttpCache.php(275): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 engine/Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 vendor/symfony/http-kernel/HttpCache/HttpCache.php(206): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#13 engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main}

 

@moebly schrieb:

Hallo Sebastian,

vielen lieben Dank für die schnelle Hilfe. Das ist nicht gewöhnlich einfach so Sonntags Abends da noch Hilfe zu bekommen! Also Dankeschön!!
Ich hab es leider noch nicht ganz verstanden, was du mit  „Man kann das Facebook - Pixel  wie erwähnt problemlos in einer Template - Datei im eigenen Theme ergänzen  ;).“ meinst. Willst du damit sagen, dass der Weg den ich gewählt habe, es in der Theme KOnfig hinzupacken richtig oder falsch war. Wenn du damit meinst, in einer .tpl datei im eigenen Theme, dann wäre ich dir riesig dankbar wenn du mir zeigst wie. 

Hallo,

ich würde es auf jeden Fall nicht über die Theme - Konfiguration lösen, sondern über eine Template - Anpassung (Shopware - Block - Erweiterung im eigenen Theme) wie in meinem letzten Beitrag erwähnt, wo ja auch schon der genaue Code steht, bis auf den entsprechenden Shopware - Block - Namen (alternativ auch eine Template - Anpassung im Rahmen eines eigenen Plugins, um die Änderung schnell an- und ausschalten zu können).

Beste Grüße

Sebastian

1 Like

@moebly schrieb:

Mit deinem Code bekomme ich jetzt folgenden Fehler:

The provided X-CSRF-Token is invalid. Please go back, reload the page and try again. in engine/Shopware/Components/CSRFTokenValidator.php on line 161

Stack trace:

#0 [internal function]: Shopware\Components\CSRFTokenValidator->checkFrontendTokenValidation(Object(Enlight_Controller_ActionEventArgs))
#1 engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#2 engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#3 engine/Library/Enlight/Controller/Action.php(143): Enlight_Event_EventManager->notify(‘Enlight_Control…’, Object(Enlight_Controller_ActionEventArgs))
#4 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch(‘loginAction’)
#5 engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#6 engine/Shopware/Kernel.php(176): Enlight_Controller_Front->dispatch()
#7 vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 vendor/symfony/http-kernel/HttpCache/HttpCache.php(258): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 vendor/symfony/http-kernel/HttpCache/HttpCache.php(275): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true)
#11 engine/Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#12 vendor/symfony/http-kernel/HttpCache/HttpCache.php(206): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true)
#13 engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main}

 

Hallo,

also zu 100% kommt dieser Fehler nicht von dem Codebeispiel, da der CSRF-Token nur bei Formularen greift (und aufgrund beispielsweise von abgelaufenen Sessions kommt). Du vermischt hier also eine Fehlermeldung, die bei dir unabhängig von dem oben genannten Code kommt. Zum Theme CSRF-Token: CSRF Protection .

Beste Grüße

Sebastian

Ich weiß, du denkst wahrscheinlich es ist vergebens aber ich habe nun die ganze Dev zum Smarty gelesen und die confirm.tpl so abgeändert, dass es passen müsste aber anscheinend finde ich den richtigen smarty block nicht denn ich erhalte immer noch diese Meldung… tut mir leid wenn ich da so mit nerve aber ich weiß auch nicht mehr weiter…

Syntax Error in template “/var/www/web868/html/shopware/themes/Frontend/Moebly/frontend/checkout/confirm.tpl” on line 3 “{block name=‘frontend_index_content’}” - Unexpected “frontend_index_content”, expected one of: “}” , " " , ATTR in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

Hallo,

der von mir verwendete Block ist standardmäßg leer und der Name legt doch nahe, dass er genau für sowas benutzt werden soll, der Block sitzt ja auch genau an der richtigen Stelle. Das Escaping mit {literal} funktioniert auch tadellos, ich hatte es kurzzeitig so bei mir eingebunden.

Über das Feld in der Themekonfiguration eingebundenen Scripte werden am Ende der Seite vor dem schließenden Body-Tag einfügt. Das ist für das Facebook-Zählpixel zu spät, die Empfehlung lautet eindeutig, es im Head der Seite zu platzieren.

Eine Bitte hab ich noch an Sebastian, bitte poste doch nicht jedesmal ein Vollzitat, wenn du dich auf den vorangegangenen Eintrag beziehst. Der Informationsgewinn ist gleich null und es beeinträchtigt den Lesefluss.

Danke und Grüße
Pierre

Hallo Pierre-Schmitz,

um das einmal nachzuvollziehen habe ich genau das gemacht, was bei ir funktioniert haben soll. Inklusive der {literal} Sache.
Resultat (wie ich mir fast gedacht habe und wie es bei dir auch war):

Ups! Ein Fehler ist aufgetreten!

Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template „/var/www/web868/html/shopware/themes/Frontend/Moebly/frontend/index/header.tpl“ on line 2 „{block name=‚frontend_index_header_javascript_tracking‘}“ - Unexpected „frontend_index_header_javascript_tracking“, expected one of: „}“ , " " , ATTR in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

 

Code:

{extends file='parent:frontend/index/header.tpl"}
{block name='frontend_index_header_javascript_tracking'}
{$smarty.block.parent}
{literal}


!function(f,b,e,v,n,t,s){ if(f.fbq)return;n=f.fbq=function(){ n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments) };if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s) }(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'xxxxxxxxxxx'); // Insert your pixel ID here.
fbq('track', 'PageView');




{/literal}
{/block}

So ich bin langsam mit meinem Latein am Ende aber bei dir hat das genauso doch funktioniert?

Hi, versuch ma den Code ohne {$smarty.block.parent}. Denn der ist ja leer im Original. Nimm stattdessen lieber “append”. {block name=‘frontend_index_header_javascript_tracking’ append}. Die Datei heisst und liegt in DEINTHEME/frontend/index/header.tpl ?

EDIT: Ausserdem nutz das literal mal nur innerhalb von deinem Script-Tag. Ich hatte schonmal den Fall da half auch nur ldelim, left-delimiter für { und rdelim, right delimiter für },  ansatt literal

[SOLVED]
Sollte mir mal nen Tag Pause gönnen…Fehler lag in falscher Setzung von ’ bzw " …

@moebly schrieb:

[SOLVED]
Sollte mir mal nen Tag Pause gönnen…Fehler lag in falscher Setzung von ’ bzw " …

Hallo,

das war auch das erste, was mir sofort bei deinem Code aufgefallen ist, dass du den Vererbungsbefehl mit ’ begonnen und mit " beendet hast und das konnte auch nur den Fehler verursachen. Deshalb hat Smarty auch den Blocknamen bemängelt (und diesmal auch nichts anderes). Und $smarty.block.parent ist auch definitiv die updatesichere Variante zu append oder prepend, daran konnte es wohl auch kaum liegen. Und Shopware und sogar Smarty selbst nutzt das literal auch außerhalb von < script >…< /script >, das kann man genauso als Fehlerquelle ausschließen (siehe: http://www.smarty.net/docsv2/en/language.function.literal ).

Aber ist ja gut, das es bei dir nun auch funktioniert, sowie ganz oben beschrieben.

Beste Grüße

Sebastian