hschottm / tags

Contao tags extension
11 stars 16 forks source link

Gefilterte Nachrichtenliste in Nachrichteneintrag erzeugt Fatal Error #32

Closed maccs closed 7 years ago

maccs commented 7 years ago

Hallo, ich möchte in Nachrichteneinträgen auf andere Nachrichten mit der gleichen Auszeichnung verlinken. Dazu habe ich ein Nachrichtenmodul mit entsprechendem Auszeichnungs-Filter erstellt und dieses in die Nachricht eingebunden.

Wenn der Filter eine Auszeichnung enthält, die der angezeigten Nachricht auch zugeordnet ist, kann die Seite nicht geladen werden und es erscheint im Log folgende Meldung: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3072 bytes) in /www/htdocs/w00xxx/system/modules/core/library/Contao/BaseTemplate.php

Wenn der Filter eine andere Auszeichnung enthält, funktioniert alles.

Contao: 3.5.27 tags: 3.5.1

Viele Grüße maccs

edit: Contao-Version aktualisiert, Fehler besteht weiterhin

hschottm commented 7 years ago

Um was für ein Nachrichtenmodul handelt es sich denn? Nachrichtenliste? Nachrichtenleser? Ich habe gerade mal eine Nachrichtenliste angelegt und als Tag-Filter einen Tag angegeben, der auch verwendet wird, da funktioniert alles problemlos. Ich müsste schon genau wissen, was für eine Konstruktion hier vorliegt, damit ich das Problem reproduzieren kann.

Ich verstehe glaube ich nicht, wie die Module bei dem Problem aufgebaut sind.

maccs commented 7 years ago

Es ist ein Nachrichtenleser angelegt, der besagte Nachricht anzeigt. In den Elementen dieser Nachricht ist ein weiteres Nachrichtenliste-Modul angelegt, welches den entsprechenden Auszeichnungs-Filter beinhaltet.

hschottm commented 7 years ago

Also noch mal blöd nachgefragt:

Du hast eine Nachrichtenliste (ungefiltert) dort wählst du eine Nachricht aus. Es wird das Nachrichtenleser-Modul auf der gleichen Seite oder einer anderen Seite geöffnet. Die ausgewählte Nachricht beinhaltet unter anderem ein Nachrichtenlisten-Modul, welches nach einer bestimmten Auszeichnung gefiltert ist. Und sobald die Filter-Auszeichnung auch gleichzeitig für die aktuelle Nachricht als Auszeichnung vergeben ist, kracht es?

Ich habe das jetzt gerade mal gemacht. Nachrichtenliste ungefiltert mit 6 Nachrichten. Es werden 6 Nachrichten angezeigt. Eine Nachricht beinhaltet eine weitere gefilterte Nachrichtenliste, die nach "Auto" gefiltert ist. Es gibt insgesamt 2 Nachrichten mit der Auszeichnung Auto. Wenn ich nun die Nachricht mit der gefilterten Nachrichtenliste anklicke, wird mir diese auch angezeigt. Die Nachricht ist eine der beiden mit Auto gekennzeichneten Nachrichten.

Nach dem, was du beschrieben hast, müsste ich jetzt eigentlich einen Crash haben, habe ich aber nicht. Die Fehlermeldung ist ja ein Fehler, dass zu viel Speicher von PHP alloziiert wird. Das passiert entweder, wenn riesige Datenmengen verarbeitet werden oder aber, was ich vermute, irgendwo im Code eine Rekursion ist und da eine Liste wieder und wieder aufgebaut wird. Ich kann's nur leider nicht nachvollziehen, um rauszubekommen, an welcher Stelle ich die Schrauben ansetzen muss.

maccs commented 7 years ago

Ich habs nun auch nochmal neu aufgebaut, in ganz simpel und kann den Fehler nun eingrenzen: wenn im Template der Nachrichtenliste (ungefiltert oder gefiltert) auf $this-text zugegriffen wird, dann kommt es zum Fehler. Bei mir war das in der gefilterten Nachrichtenliste der Fall (template news_short), um einen Weiter-Knopf anzuzeigen, sollte es weiterführenden Inhalt geben.

Somit liegt der Fehler (Zirkelbezug) natürlich nicht in der tags-Erweiterung, sondern in Contao selbst (wenn man überhaupt von einen Fehler sprechen kann). Durch die Auszeichnungen konnte der Zirkelbezug nur umgangen werden, wenn eine gefilterte Nachrichtenliste erstellt wurde, auf der die derzeitige Nachricht nicht enthalten ist.

Sorry, da bin ich wohl erst mal der falschen Spur gefolgt!