Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 06. Dezember 2013 12:25
- kampkrusty
- Server-Pate
- Registriert: 03. April 2011
- Beiträge: 263
[GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Hallo und sorry das ich deswegen nochmal einen neuen Thread eröffne. Ich hatte das Problem schon einmal in einem anderen Thread angesprochen. Bisher habe ich aber noch keine Lösung dazu, daher dachte ich das dieses Problem einen eigenen Thread braucht.
Mein Problem besteht darin das immer wenn ich folgende Zeilen im Menütemplate stehen habe die unten stehende Fehlermeldung ausgegeben wird sobald ich eine Inhaltsseite bearbeiten möchte:
{* Bilderseite für nicht eingeloggte User *}
{if not tbtools::isLoggedIn()}
<li><a href="{cms_selflink href='bilder-2'}"> Bilder </a></li>
{/if}
{* 'abmelden' Button - nur für eingeloggte User sichtbar *}
{if isset($content_obj) && is_object($content_obj) && tbtools::isLoggedIn()}
<li>{FrontEndUsers form="logout" returnto="home"}</li>
{/if}
Den Code des "abmelden" Buttons hatte mir NaN mal empfohlen. Er brachte aber leider keine Änderung am eigentlichen Problem.
Der fehlertext:
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "module_db_tpl:MenuManager;terrafirma2" on line 37 "<li>{FrontEndUsers form="logout" returnto="home"}</li>" unknown tag "FrontEndUsers"' in /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php:709 Stack trace: #0 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php(495): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "Fr...', 37) #1 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag('FrontEndUsers', Array) #2 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36() #3 /[CMS Pfad]/lib/smarty/sysplu in /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 709
Habe jetzt 1.11.9 aktiv mit TB 1.3.8 und FEU 1.22.2.
Bin für jeden Tipp dankbar!
ff-jena-mitte.de
Offline
#2 06. Dezember 2013 12:45
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Also nach der Fehlermeldung hast du aus irgend einem Grund kodierte Anführungszeichen im Quelltext (") und das sollte nicht sein. Passiert manchmal, wenn man dies in WYSIWYG-Editoren eingibt.
Das ist unter anderem ein Grund, weswegen ich dir Smarty-Parameter IMMER in einfache Hochkommata setze, also
<li>{FrontEndUsers form='logout' returnto='home'}</li>
Zudem lässt es sich dann optisch von den HTML-Parametern besser unterscheiden.
Offline
#3 06. Dezember 2013 12:53
- kampkrusty
- Server-Pate
- Registriert: 03. April 2011
- Beiträge: 263
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Hab es geändert. Der Fehler bleibt:
Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "module_db_tpl:MenuManager;terrafirma2" on line 37 "<li>{FrontEndUsers form='logout' returnto='home'}</li>" unknown tag "FrontEndUsers"' in /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php:709 Stack trace: #0 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php(495): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "Fr...', 37) #1 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag('FrontEndUsers', Array) #2 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36() #3 /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal in /[CMS Pfad]/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 709
Beitrag geändert von kampkrusty (06. Dezember 2013 12:54)
ff-jena-mitte.de
Offline
#4 06. Dezember 2013 14:01
- Klenkes
- Server-Pate
- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.437
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Versuch es mal mit dem Komplettaufruf des Moduls:
{cms_module module='FrontEndUsers' form='logout' returnto='home'}
Offline
#5 06. Dezember 2013 14:06
- czarnowski
- kennt CMS/ms
- Registriert: 18. Oktober 2012
- Beiträge: 457
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Die Ausgabe des debug Textes ist grauenvoll da Zeichen codiert sind.
Wenn man in der index.php
debug_display($txt);
in
debug_display(html_entity_decode($txt));
und
echo $error;
in
echo html_entity_decode($error);
ändert ist es wesentlich besser lesbar.
SQL Anweisungen kann man dann zum Test auch einfach kopieren und z.B. unter PMA direkt einsetzen.
Offline
#6 06. Dezember 2013 14:08
- kampkrusty
- Server-Pate
- Registriert: 03. April 2011
- Beiträge: 263
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Versuch es mal mit dem Komplettaufruf des Moduls:
{cms_module module='FrontEndUsers' form='logout' returnto='home'}
Das ist es! Vielen, vielen Dank!
ff-jena-mitte.de
Offline
#7 06. Dezember 2013 15:35
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Da scheint etwas mit dem Registrieren der Module als Smarty-Plugins nicht ganz zu stimmen, wenn das Modul LazyLoading unterstützt.
Damit Module mit LazyLoading auch eigene Plugins registrieren können, werden dessen Plugin-Namen in der Datenbank gespeichert. Wenn also ein Plugin aufgerufen wird, welches nicht existiert, wird in der Datenbank geschaut, ob es dort zu finden ist. Dann wird das zugehörige Modul geladen und die zugehörige Funktion ausgeführt.
Das klappt aber im Backend immer genau dann nicht, wenn es sich nicht um compiler-Funktionen handelt. Compiler-Funktionen werden im Backend abgefangen bzw. mit Backend-Funktionen überschrieben (die sollen ja nicht ausgeführt werden, wenn man eine Seite bearbeitet bzw. sollen gesonderte Funktionen ausgeführt werden - wie z.B. das Auslesen von Content-Blöcken und die Anzeige der zugehörigen Inputfelder).
Normale Funktionen werden allerdings nicht abgefangen (was ja die meisten Frontend Plugins von Modulen sind). Das Problem ist, dass diese modulspezifischen Plugins generell nur im Frontend geladen werden:
if( cmsms()->is_frontend_request() ) {
$row = cms_module_smarty_plugin_manager::load_plugin($name,$type);
if( is_array($row) && is_array($row['callback']) && count($row['callback']) == 2 && is_string($row['callback'][0]) && is_string($row['callback'][1]) )
{
$cachable = $row['cachable'];
$callback = $row['callback'][0].'::'.$row['callback'][1];
return TRUE;
}
}
Ergo, wenn man sie im Backend ausführen will, gibt es einen Fehler. Daher muss man sie mit {cms_module} aufrufen. Das Plugin ist immer einsatzbereit.
Bei FrontendUsers ist es nun so, dass es im Backend LazyLoading unterstützt (dort wird es ja auch nicht immer gebraucht), im Frontend aber nicht. Das bedeutet, die Art, wie das Modul selbst ({FrontendUsers}) als Plugin registriert bzw. geladen wird, unterscheidet sich je nachdem ob ich im Backend oder im Frontend bin.
Im Backend schlägt {FrontendUsers} fehl, weil es sich selbst wegen LazyLoading über den Umweg der Datenbank als Plugin registriert, was aber im Backend nie geladen wird.
Im Frontend klappt es, weil 1. Die DB-Plugins geladen werden und 2. FrontEndUsers im Frontend garnicht in der DB steht Im Frontend wird es nicht über den Umweg über die DB registriert, sondern wird - weil es kein LazyLoading unterstützt - direkt bei Smarty registriert. Da klappt es also doppelt.
Der MenuManager hingegen registriert sich selbst generell über den Umweg mit der DB. Immer. Warum kapier ich nicht. Zumal er weder im Backend noch im Frontend LazyLoading unterstützt.
Um diese These mal auf die Probe zu stellen: Ändere doch mal in der Datei "/modules/FrontendUsers/FrontendUsers.module.php" in der Funktion LazyLoadAdmin() den Rückgabewert auf false und teste Dein ursprüngliches Szenario erneut. Das würde mich echt mal interessieren (hab hier nur den Code vor Augen, aber leider keine Testumgebung). Könnte auch alles Schmarrn sein, was ich da glaube herauszulesen.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#8 06. Dezember 2013 15:56
- kampkrusty
- Server-Pate
- Registriert: 03. April 2011
- Beiträge: 263
Re: [GELÖST] Fatal Error bei Nutzung von FEU und Toolbox im Menütemplate
Ich habe diese Zeile in der Datei FrontendUsers.module.php geändert:
[== PHP ==]
function LazyLoadAdmin() { return FALSE; }
Dann in meinem Menütemplate diese Zeile wieder eingefügt:
[== HTML ==]
<li>{FrontEndUsers form='logout' returnto='home'}</li>
Somit wäre der alte Stand wieder hergestellt mit dem Unterschied das der return Wert auf FALSE steht.
Ergebnis: Alles funktioniert wie gewünscht.
Als Gegenprobe den Wert wieder auf TRUE gesetzt, und schon erscheint wieder die bekannte Fehlermeldung.
Beitrag geändert von kampkrusty (06. Dezember 2013 15:56)
ff-jena-mitte.de
Offline
Seiten: 1