eigene Smarty-Plugins erzeugen Fehler auf checkout/finish

Hallo, ich habe das Problem (im Shopware 5.1.1) das manchmal (kurioserweise nicht immer) auf der checkout/finish eine Exception erzeugt wird. Nach dem Anzeigen der Meldungen (showException => true) erhalte ich diese Meldung :frowning: [quote] Ups! Ein Fehler ist aufgetreten! Die nachfolgenden Hinweise sollten Ihnen weiterhelfen. Syntax Error in template „/kunden/…/…/…/themes/Frontend/Solarium/frontend/index/footer-navigation.tpl“ on line 3 „{content id=„47“ to=„bar“}“ unknown tag „content“ in Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657 Stack trace: #0 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(443): Smarty_Internal_TemplateCompilerBase->trigger_template_error(‚unknown tag "co…‘, 3) #1 Smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag(‚content‘, Array) #2 Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36() #3 Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(36) #4 Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, '\n

doCompile(’\n {* Smarty …’) #6 Smarty/sysplugins/smarty_internal_compile_block.php(197): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template)) #7 Smarty/sysplugins/smarty_internal_compile_block.php(255): Smarty_Internal_Compile_Block::compileChildBlock(Object(Smarty_Internal_SmartyTemplateCompiler), ‚frontend_index_…‘) #8 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(465): Smarty_Internal_Compile_Blockclose->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL) #9 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler(‚blockclose‘, Array, Array) #10 Smarty/sysplugins/smarty_internal_templateparser.php(2493): Smarty_Internal_TemplateCompilerBase->compileTag(‚blockclose‘, Array) #11 Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r58() #12 Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(58) #13 Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, ‚\n\n‘) #14 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile(’\n\n{* Service ho…’) #15 Smarty/sysplugins/smarty_internal_compile_include.php(146): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default)) #16 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(465): Smarty_Internal_Compile_Include->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL) #17 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler(‚include‘, Array, Array) #18 Smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag(‚include‘, Array) #19 Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36() #20 Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(36) #21 Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, ‚\n
\n‘) #22 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile(’{* Footer menu …’) #23 Smarty/sysplugins/smarty_internal_compile_include.php(146): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default)) #24 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(475): Smarty_Internal_Compile_Include->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL) #25 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler(‚include‘, Array, Array) #26 Smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag(‚include‘, Array) #27 Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36() #28 Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(36) #29 Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, ‚\n\t\t\t\t\t‘) #30 Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile(’{block name="fr…’) #31 Smarty/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default)) #32 Smarty/sysplugins/smarty_internal_templatebase.php(155): Smarty_Internal_Template->compileTemplateSource() #33 Enlight/View/Default.php(274): Smarty_Internal_TemplateBase->fetch() #34 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(216): Enlight_View_Default->render(Object(Enlight_Template_Default)) #35 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(242): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) #36 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(136): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->render() #37 [internal function]: Enlight_Controller_Plugins_ViewRenderer_Bootstrap->onPostDispatch(Object(Enlight_Controller_ActionEventArgs)) #38 Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs)) #39 Enlight/Event/EventManager.php(210): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs)) #40 Enlight/Controller/Action.php(201): Enlight_Event_EventManager->notify(‚Enlight_Control…‘, Object(Enlight_Controller_ActionEventArgs)) #41 Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch(‚finishAction‘) #42 Enlight/Controller/Front.php(227): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #43 Shopware/Kernel.php(148): Enlight_Controller_Front->dispatch() #44 vendor/symfony/http-kernel/HttpCache/HttpCache.php(492): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #45 Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #46 vendor/symfony/http-kernel/HttpCache/HttpCache.php(263): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) #47 vendor/symfony/http-kernel/HttpCache/HttpCache.php(280): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true) #48 Shopware/Components/HttpCache/AppCache.php(133): Symfony\Component\HttpKernel\HttpCache\HttpCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #49 vendor/symfony/http-kernel/HttpCache/HttpCache.php(209): Shopware\Components\HttpCache\AppCache->invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #50 Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #51 shopware.php(101): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #52 {main} [/quote] Man könnte nun meinen, dass es das Smarty-Plugin „content“ mit der Datei /themes/Frontend/Solarium/_private/smarty/function.content.php nicht geben würde - dem ist aber nicht so. Die Datei ist da und wird im Normalfall - also dem restlichen Shop problemlos vom Shopware geladen und verarbeitet. :frowning: Meine footer-navigation.tpl sieht ganz normal so aus: [code] {extends file=‚parent:frontend/index/footer-navigation.tpl‘} {* Service hotline *} {block name=„frontend_index_footer_column_service_hotline“} {content id=„47“ to=„bar“}

{$bar.description}
{block name=„frontend_index_footer_column_service_hotline_content“}
{$bar.html}
{/block}
{/block} [/code] Hängt es möglicherweise mit dem Minimal-Footer zusammen? Warum wird überhaupt die footer-navigation.tpl angeprochen - wo es doch auf der checkout/finish gar keinen Footer gibt? Warum tritt das Problem nur auf dieser Seite aus? Warum werden keine Log-Einträge in die Dateien geschrieben trotz aktivierter Option? Fragen über Fragen … Hat jemand das schon mal gehabt oder eine Idee dazu? Danke vorab. :slight_smile: vg tonzen

Ich habe das selbe Problem. Eine eigene Smarty-Funktion funktioniert überall, aber auf der checkout-finish-Seite bekomme ich die Fehlermeldungen. Was tun?

Ich konnte das Problem letztlich nicht ermitteln und habe mein Smarty-Plugin in ein echtes Plugin umgesetzt. Wenn du die Lösung oder einen Ansatz findest, wäre es schön es hier zu posten … andere Entwickler haben scheinbar damit keine Probleme … oder haben es noch nicht gemerkt … 

Ich habe eben das selbe gemacht. 

Ich hatte das gleiche Problem und habe eine Lösung gefunden. Auch wenn ich der Meinung bin dass es nicht Euer Ernst sein kann @Shopware, dass dieser Fehler noch immer existiert !! Die Lösung ist, die Datei „checkout/finish.tpl“ im eigenen Template zu überschreiben und am Anfang nicht von „index.tpl“ abzuleiten, sondern von einer Kopie der Original Datei aus „Bare“:

 {extends file="frontend/index/index-orig-for-checkout.tpl"}

Da die eigenen Smarty Funktionen dann nicht mehr auftauchen, ist auch der Fehler weg. Allerdings habe ich die eigenen Smarty Funktionen bei mir direkt in der „index.tpl“ genutzt im Main Content. Das Problem mit dem Footer bleibt aber, wenn dieser auch im Checkout angezeigt werden soll.

Vielleicht hilft es trotzdem dem einen oder anderen.

Trotzdem: Fixt diesen Fehler endlich, sonst sind eigene Smarty Funktionen in Shopware ein Witz!!

Ich habe auch festgestellt, dass eigene Smarty modifier und functions unter checkout/finish zu einer SmartyCompilerException führen.

Der Workaround von Goldfadendesign hat mir leider nicht geholfen.

Ich habe sichergestellt, dass unter checkout/finish keine eigenen Smarty modifier/functions mehr vorkommen, und eine Zeit lang gibt es auch kein Problem. Dann taucht aus unerklärlichen Gründen plötzlich wieder die Fehlermeldung auf und verweist auf einen „unknown modifier“ oder eine  „unknown function“, obwohl diese hier gar nicht in Verwendung sind.

Bisher habe ich das Problem nur beim lokalen Entwickeln beobachtet. Leider hat mir Cache leeren etc. nicht geholfen. Erst nachdem ich den Rechner neustarte, ist die Fehlermeldung verschwunden - ohne dass ich irgendwelche Änderungen am Code vorgenommen hätte.

Im Shopware Issuetracker hätte ich das hier gefunden: Shopware Issuetracker
Vielleicht nützt es, wenn mehr Leute dafür voten.

1 „Gefällt mir“

Ich konnte das ganze mit einem Subscriber auf Enlight_Controller_Action_PostDispatchSecure_Frontend und folgendem Code lösen:

 Shopware()-\>Template()-\>addPluginsDir( Shopware()-\>Template()-\>getTemplateDir(0) . '\_private/smarty' );

Index 0 scheint das eigene Template in der Vererbungshierarchie zu sein…

1 „Gefällt mir“

Besten Dank, Stefan Pöltl! Es hat geholfen.