content_teaser_image-Modul funktioniert nicht bei Neuanlage eines Teasers

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
ttwm
Beiträge: 4
Registriert: Fr 28. Sep 2012, 14:17
Kontaktdaten:

content_teaser_image-Modul funktioniert nicht bei Neuanlage eines Teasers

Beitrag von ttwm »

CONTENIDO Version: 4.10.2-dev (vom 29.10.2024)
Webserver-Version: Apache
Installierte PHP-Version 8.2.26
Datenbankserver-Version (bei hosttech): 10.11.10-MariaDB-cll-lve
Datenbankserver-Version (bei strato): 10.11.7-MariaDB-log
PHP-Datenbankerweiterung: mysqli

Fehlermeldung:
[15-Dec-2024 12:22:55 MET] PHP Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') AND b.idart = c.idart AND b.idclient = 1 AND a.idlang = 1 AND a.idart = b.i...' at line 1 in XYZ/contest/contenido/classes/db/class.db.driver.mysqli.php:210
Stack trace:
#0 XYZ/contest/contenido/classes/db/class.db.driver.mysqli.php(210): mysqli_query()
#1 XYZ/contest/contenido/classes/db/class.db.driver.handler.php(811): cDbDriverMysqli->query()
#2 XYZ/contest/contenido/classes/class.article.collector.php(173): cDbDriverHandler->query()
#3 XYZ/contest/contenido/classes/class.article.collector.php(99): cArticleCollector->loadArticles()
#4 XYZ/contest/contenido/classes/content_types/class.content.type.teaser.php(324): cArticleCollector->__construct()
#5 XYZ/contest/contenido/includes/include.con_editcontent.php(515) : eval()'d code(251): cContentTypeTeaser->generateTeaserCode()
#6 XYZ/contest/contenido/includes/include.con_editcontent.php(515) : eval()'d code(252): {closure}()
#7 XYZ/contest/contenido/includes/include.con_editcontent.php(515): eval()
#8 XYZ/contest/contenido/includes/frontend/include.front_content.php(484): include('...')
#9 XYZ/contest/contenido/external/backendedit/front_content.php(49): include('...')
#10 {main}
thrown in XYZ/contest/contenido/classes/db/class.db.driver.mysqli.php on line 210

Aufgefallen ist mir das nach einem Update am Wochenende bei einer bestehenden Kunden-Installationen, nachdem ich die Ursache aber nicht ausmachen konnte, habe ich Contenido woanders frisch installiert.

Bereits in dem Beispielmandanten funktioniert das content_teaser_image-Modul nicht wie es soll (ausprobiert bei Strato als auch bei hosttech):
-> Die bereits konfektionierten/ausgefüllten Teaser auf der mitgelieferten Home-Seite des Beispielmandanten funktionieren und lassen sich bearbeiten
-> Wenn ich aber z. B. eine neue leere Home-Seite anlege (mit der Vorlage start_page) und diese dann bearbeiten will, werden mir im Editor überhaupt keine bearbeitbaren Felder mehr angezeigt und in den Logs erscheint o.g. Fehlermeldung. Entferne ich das Modul aus der Vorlage, passt wieder alles.

Ich hoffe, ich hab nicht irgend etwas Grundlegendes übersehen…

Viele Grüße
ttwm
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 14 Mal
Kontaktdaten:

Re: content_teaser_image-Modul funktioniert nicht bei Neuanlage eines Teasers

Beitrag von Faar »

Zumindest sollte das 1 so geschrieben stehen: '1'
Aber ich glaube nicht, dass das bereits zum Fatalen Fehler führt.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
xmurrix
Beiträge: 3213
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

Re: content_teaser_image-Modul funktioniert nicht bei Neuanlage eines Teasers

Beitrag von xmurrix »

Hallo ttwm,

danke dir für die Meldung des Fehlers.

Meine Vermutung ist, dass der Fehler bei einer neuen Konfiguration des Teaser-Moduls, in der noch keine Kategorien/Artikel konfiguriert wurden, auftaucht.

Ich kann das jetzt nicht gegenprüfen, denke aber, dass folgende Änderung den Fehler beheben sollte.

In der Datei contenido/classes/class.article.collector.php nach der Zeile 117 folgende Zeile einfügen:

Code: Alles auswählen

        $options['categories'] = array_filter($options['categories']);
also

Code: Alles auswählen

117        $options['categories'] = $options['categories'] ?? [];
118        $options['categories'] = array_filter($options['categories']);
Das werde ich die nächsten Tage prüfen, der Fehler sollte auch sehr bald behoben werden.

Viele Grüße
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Antworten