Das Spiel mit den JS-Frameworks
jQuery Logo
Ich weiß, schön langsam bekommt mein Blog etwas WordPress lastiges aber durch die viele Arbeit die ich derzeit in das Design und die Umarbeitung stecke, ist mein Kopf voll von WordPress. Das ist ja durchaus nicht schlecht. So habe ich beispielsweise heute erfahren, dass im Februar ein WordCamp in Jena stattfinden wird.
Nun aber mal zum Thema: Das Spiel mit den JS-Frameworks in WordPress. Es gibt viele Plugins die WordPress um neue Funktionalitäten erweitern. Manche davon hat aber WordPress bereits integriert und man weiß einfach nicht wie man diese Umsetzten kann. Beispiele dafür sind eben JavaScript-Frameworks wie Scriptaculous, Prototype, jQuery und so weiter. Durch einen Post von Frank Bültge bin ich auf eine Technik gestoßen wie man diese ohne viel Aufwand direkt aus dem WordPress Core in ein Theme integrieren kann.
Da ich hier nicht alles wiederkauen möchte werde ich den Beitrag von Frank mal kurz zusammenfassen. Es gibt in WordPress eine Funktion mit der man die Frameworks direkt aus dem Core in ein Theme integrieren kann. Diese Funktion hat den Vorteil, dass sie prüft ob das Framework schon geladen wurde oder nicht, außerdem stellt die Funktion sicher, dass die Frameworks korrekt geladen werden und sich nicht gegeseitig crashen.
Und so funktionierts:
{code type=php}wp_enqueue_script( ‘jquery’ );
wp_enqueue_script( ‘thickbox’ );
wp_enqueue_style( ‘thickbox’ );{/code}
Diese Anweisungen sollte man in die functions.php einbauen und schon werden die Frameworks und Stylesheets geladen. Neben der zahlreichen Auswahl, die WordPress im Core schon bietet, kann man auch eigene Frameworks mit diesem Befehl laden. Folgende Parameter können dazu übergeben werden:
{code type=php}wp_enqueue_script( ‘my_script’, plugins_url($path = ‘my_plugin_folder/js/my_script.php’), array(’jquery’), ‘1.2.1.3′ );{/code}
Meine Intention die Core Frameworks zu landen war, dass ich kein Lightbox-Plugin mehr installieren wollte. Da kam mir Thickbox ganz gelegen. Also habe ich es versucht und alles so umgesetzt wie Frank es in seinem Post geschrieben hatte. Nur bei mir funktionierte es nicht. Egal wie oft ich neu geladen hatte und auf das Bild klickte, es brachte mich immer wieder direkt zu dem Bild. Alle Frameworks (sowohl jQuery als auch Thickbox) schienen aber laut FireBug richtig geladen zu sein. Nach einiger Zeit und vielen Nerven bin ich auf den Fehler gestoßen.
Manchmal kann es passieren, dass wenn Plugins ebenso jQuery oder andere Frameworks geladen haben und diese nicht über die oben beschriebene Funktion in das Theme kommen, dann verhaken sich die Frameworks gegenseitig und nichts funktioniert mehr richtig. Also habe ich mein Lightbox-Plugin, das ich von der vorhergehende WP-Version noch installiert hatte, deaktiviert und siehe da es funktionierte.
Soweit hatte ich mein erstes Problem also gelöst. Nun wollte ich aber auch noch ein bisschen Action in meinen Blog bringen und habe mich dazu entschieden jQuery, was ja naheliegend ist, als Event-Framework zu nutzen. Ich habe mir also ein paar Zeilen Code geschrieben um einen Toggle-Event auszulösen:
{code type=php}
$(’a#commentbutton’).click(function() {
$(’#commentlist’).slideToggle(’middle’);
$(this).toggleClass(’collapse’);
$(this).toggleClass(’expand’);
return false;
});
{/code}
Und schon wieder gab es ein Problem. Offensichtlich wollte das jQuery Framework das $ Zeichen nicht als Deklaration annehmen. Ich bekam immer den Fehler “unbekannte Funktion”. Nach einigen Minuten stöber habe ich entdeckt, dass in jQuery auch mit jQuery('#IrgendeineID') ein Objekt deklarieren kann. Fragt mich bitte nicht wo ich das gefunden habe, aber das hat mir den Abend gerettet.
Soweit zu meinem Spiel mit den JS-Frameworks. Morgen, oder eigentlich heute, gibt’s noch “Den Kampf mit der wp_list_comments();” den ich zwischendurch auch geführt und gewonnen habe. Aber dazu später mehr. Wenn ihr auch schon mal unschöne Spielchen mit den Core-JS-Frameworks hattet, oder du andersweitig etwas Senf dazugeben willst, dann sag uns deine Meinung!
28. November 2008 um 11:36
[...] in meinen gestrigen, ich hab ja dazwischen geschlafen, Post (Das Spiel mit den JS-Frameworks) schon geschrieben dreht es sich heute um die wp_list_comments() -Funktion von WordPress [...]