hschottm / tags

Contao tags extension
11 stars 16 forks source link

tagcloud.js - Contao-Combiner #70

Open marmeladenmopser opened 3 years ago

marmeladenmopser commented 3 years ago

Hallo,

leider wird das Script tagcloud.js nicht über den Contao-Combiner mit anderen Scripts kombiniert, obwohl "Skripte zusammenfassen" im Seitenlayout aktiviert ist. Gibts da ne einfache Lösung?

Ach jo: Contao Version 4.9.9 - Tags Version 4.5.5 (lässt sich über den Contao Manager nicht auf 4.6.4 aktualisieren)

hschottm commented 3 years ago

Das mit der tags-Version ist erstmal korrekt. Die 4.5.x-Versionen sind für Contao 4.9.x, die 4.6.x-Versionen sind nur für Contao 4.10.x

Das tagcould-Skript muss ja von dir in deinen Frontend-Code eingebunden werden, das sollte doch wie bei allen anderen Javascript-Snippets problemlos möglich sein, wie hast du das Skript denn eingebunden?

marmeladenmopser commented 3 years ago

Hi, super, daß du so schnell antwortest :)

Das wird von Contao automatisch eingebunden, sobald ein Modultyp "Tag Cloud" in die Seite eingebunden wird. Hab jetzt auch schon herausgefunden, woran es liegt. Das liegt an der Zeile 199 in modules/ModuleTagCloud.php: $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/tags/assets/tagcloud.js'; Wenn ich das durch $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/tags/assets/tagcloud.js|static'; ersetze, dann klappt es auch mit dem Script-Combining. Ich möchte aber wegen Updates nur ungern in deinem Code rumfummeln :(

hschottm commented 3 years ago

Ach, das ist das Javascript für die Tag-Eingabefelder im Backend. Komisch, bei mir funktioniert das unter 4.9. Ich schau mir das mit dem static mal an, keine Ahnung wozu diese Option gut ist, wenn ich weiß, was es macht, ändere ich einfach die Integration. Danke für den Hinweis auf jeden Fall schon mal.

marmeladenmopser commented 3 years ago

Ah, ok. Hab mir das Script gar nicht näher angeschaut, aber wenn es nur im Backend benötigt wird, dann wäre evtl. if (TL_MODE == 'BE') $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/tags/assets/tagcloud.js'; die bessere Wahl.

hschottm commented 3 years ago

Nein, ist es nicht, ich bin jetzt schon total durcheinander. Das JavaScript wird für das TagCloud-Frontend-Modul eingebunden, es ist für die Top 10 und die Related Tags, die man per klick ausblenden kann. Ich schaue mal, seit wann man dieses static mit angeben muss.

hschottm commented 3 years ago

Also, der static-Parameter soll eigentlich nur verwendet werden, wenn das Skript mehr oder weniger auf allen Contao-Seiten verwendet werden soll, weil es dann mit anderen Static-Skripten in ein kombiniertes Skript eingefügt wird. Ohne den Parameter wird das Skript als extra-Datei nur dann eingebunden, wenn es benötigt wird. Da das Skript ja nur benötigt wird, wenn eine Tag Cloud verwendet wird, ist das eigentlich die korrekte vorgehensweise, static fügt das Skript auf allen anderen Seiten auch noch ein, obwohl es dort gar nicht benötigt wird.

marmeladenmopser commented 3 years ago

Ok, ich verstehe. In meinem Fall ist es tatsächlich so, dass eine Tagcloud auf jeder Seite im Footer anzeigt wird. Wäre es denkbar, bei der Modulkonfiguration eine Checkbox wie "auf allen Seiten einfügen" einzubauen, die dann den static-Parameter steuert?

Aber auch andersrum gedacht, wenn ich das Modul auf Seiten nicht verwende, also ein anderes Seitenlayout verwende, dann würde es ja auch trotz "static" nicht eingebunden werden, oder?

hschottm commented 3 years ago

Das weiß ich eben nicht, so wie ich die Dokumentation lese, würde das Skript dann wohl immer eingebunden werden, selbst wenn das Modul gar nicht verwendet wird.

marmeladenmopser commented 3 years ago

Tatsächlich, würde ich das auch so verstehen wir du:

A stylesheet should be defined as static, if it will occur on every or most pages of a website, ...

Aber ich habe das mal getestet, also den static-Parameter wieder angefügt. Raus kam dabei im Quelltext: <script src="assets/js/megamenu.js,tagcloud.js-67d8c1dc.js"></script> Dann hab ich das Modul im Seitenlayout deaktiviert (bei verbleibendem static-Parameter) und es kam folgendes raus: <script src="assets/js/megamenu.js-69c0bd1a.js"></script> Daraus wäre zu folgern, dass es nicht auf allen Seiten eingebunden wird. Keine Ahnung wie obiges zu interpretieren ist.