jQuery UI einbinden
am 21.09.2007 - 20:55 Uhr in
Hallo zusammen!
Dass jQuery in Drupal 5 integriert ist, wissen wir schon lange. Nun ist endlich jQuery UI [1] erschienen. Dabei handelt es sich um eine Sammlung mit Widgets, welche man in seine Seite einbauen kann. Tabs, Tabelle, Schatten... alles Mögliche. Mir stellt sich nun die Frage, wie ich jQuery UI in meine Nodes hinein bekomme. Also lasst uns mal spinnen...
Wir nehmen uns als Beispiel eine einfache page. Wenn ich dort nun beispielsweise Tabs platzieren möchte, dann müsste ich
- eine ui.tabs.js und eine ui.tabs.css in meinen HTML-head einbinden
- im HTML-head die Tabs definieren (JS)
- in meinem Node die entsprechenden DIVs platzieren
Wenn ich die ersten beiden Punkte über meine template-files löse, dann funktioniert das auch wunderbar. Besonders ressourcenschonend ist es allerdings nicht. Im Worstcase wird bei jedem Seitenaufruf die ui.tabs.js geladen, obwohl sie nur auf einer einzelnen, selten benutzten Seite verwendet wird. Außerdem kann man nicht für jedes Node seine jQuery-Javascript-Initialisierungscode in das Template ballern.
Was muss also her? Eine Lösung,
- über die ich jedem Node seinen eigenen Javascript Initialiserungscode zuordnen kann
- die automatisch das zum Node gehörende JS in den HTML-header klatscht
Der WYSIWYG-Editor soll dabei auf keinen Fall ausfallen. Wir schreiben also besser kein JS in den Editor... Obendrein würde das JS dann auch im HTML-Body landen und das ist doof.
An der Stelle hänge ich (vielleicht, weil der Tag echt anstrengend war). Wie schreibe ich mir ein Modul, dass diese Aufgabe erledigt? Es müsste sich ja dann in die Nodes (unter Edit) einklinken, damit man dort das inizialiserende JS eintragen kann. Dann müsste es bei einem Seitenaufruf prüfen, ob diese Seite jQuery UI initialiseren soll. Wenn dem Node ein Initialiserungscode zugeordnet ist, dann muss es diesen Code in den HTML-header einpflanzen...
Hat jemand von euch einen anderen Ansatz und/oder weiterhelfende Manuals/Skripts?
MfG,
Pascal
- Anmelden oder Registrieren um Kommentare zu schreiben
...obwohl sie nur auf einer
am 21.09.2007 - 21:54 Uhr
...obwohl sie nur auf einer einzelnen, selten benutzten Seite verwendet wird.... dann erstell doch ein Template nur für diese seite! Somit wird se nur geladen, wenn sie aufgerufen wird
http://kochazubi.net
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Hallo Spartacus! Danke für
am 21.09.2007 - 22:02 Uhr
Hallo Spartacus! Danke für die Antwort :)
Leider geht das so nicht - es war auch eher als Beispiel gedacht. Es sollen auch andere User die UI Widgets in "ihren" Seiten benutzen können, nicht nur ich... *hm*
Ich wühle gerade weiter auf drupal.org, finde aber kaum etwas dazu. Ich überlege gerade, ob ich nicht doch das JS in den HTML-Body nehme (so unlieb mir das ist...). Dann könnte ich in den WYSIWYG-Editor den normalen Content eingeben und irgendwie ein extra-Textfeld für das JS einbauen... Vielleicht irgendwie in Verbindung mit CCK? :-/
Mit CCK kann man sich an die
am 21.09.2007 - 23:30 Uhr
Mit CCK kann man sich an die gewünschte Funktionalität "dran hangeln". Man erstellt einfach einen neuen Content-Type und fügt ein neues Feld "Text" ein. Dessen Input-Format darf der User selbst wählen, Default ist PHP. In der Ausgabe erscheint der "volle Artikel" ebenfalls in Default, alles andere kann versteckt werden. Sicherheitshalber den WYSIWYG standardmäßig abschalten, aber zuschaltbar lassen. Im neuen Content-Typ kann man jetzt in der neuen Textbox das JS eingeben, in der "normalen Inhaltsbox" die DIVs definieren und dann ihren WYSIWYG-Editor wieder einschalten...
Vielleicht wäre es ein erster Schritt in die richtige Richtung, wenn man ein neues Modul für CCK erstellt... Jedenfalls nervt, dass in der bisherigen "Lösung" der WYSIWYG-Editor auch auf die Javascript-Box aufgschaltet wird, wenn man ihn standardmäßig aktivert. Ich schau wohl morgen nochmal nach. So wie es jetzt ist läuft es zwar, langt mir aber nicht.
Bislang verwendet:
* CCK
* jQuery Update (leicht modifiziert)
* jQuery 1.2.1 (alte Version unter /misc überschrieben)
* jQuery UI 1.0 (/misc/jqueryui)