Prüfen Sie, ob jQuery ist enthalten in der Kopfzeile (Joomla)
Gibt es eine Möglichkeit zu prüfen ob jQuery geladen ist mit PHP?
Habe ich zwei verschiedene plugins in Joomla, laden Sie die jQuery JS, aber wenn es mehr als einmal funktioniert es nicht richtig.
Zu erklären, den Prozess ein bisschen mehr:
Joomla bietet eine Möglichkeit zum abfangen der HTML-Quelle, bevor es gerendert wird, wird im wesentlichen die Arbeit am source-code selbst.
Dies ist mit der Funktion:
onPrepareContent(&$row, &$params, $limitstart)
$row ist der HTML-Inhalt der Seite, die analysiert werden kann.
Dachte ich, dass vielleicht ein preg_match arbeiten könnte, aber habe nicht sehr viel Erfahrung damit.
- Möchten Sie vielleicht formulieren Sie diese Frage als "Prüfen Sie, ob jQuery enthalten ist in der Kopfzeile mit Joomla".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Besser noch, Sie können überprüfen, ob es mit JavaScript und dann fügen Sie es auf den Kopf, wenn Sie fehlt.
Ich nehme an, Sie sind mit Joomla1.0?
Joomla Puffer-Inhalt mit dem PHP-output-buffer. ie: ob_start().
Können Sie den Inhalt mit: ob_get_contents();
So können Sie einen regulären Ausdruck, der überprüft, ob JQuery. So etwas wie:
sollte gut genug sein. (Habe ich noch nicht getestet).
Mit ob_get_contents() kann nicht in Situationen zu arbeiten, da der PHP-Ausgabepuffer verschachtelt werden können. Sie können so viele Puffer in Puffer.
Für Joomla1.5, können Sie den Puffer über die API die sicherstellt, dass Sie immer Joomla-Ausgang.
Ob Joomla1.0 oder 1,5 ist zu beachten, dass Joomla hinzufügen kann, um die Puffer an jedem Punkt, bevor es rendert die Ausgabe (Anrufe ob_flush() oder gleichwertig). Damit Ihr check für JQuery ist zu berücksichtigen, dass JQuery geladen werden können, nach der Prüfung.
Beachten Sie, dass Joomla Puffer erstellt, der nicht nur für HTML, kann aber sein, CSS, JavaScript, XML, JSON etc. So möchten Sie vielleicht zu prüfen, HTML -, bevor Sie Ihre JQuery-tests. Sie können auch testen Sie das admin-panel.
Referenz hier ist ein Beispiel-system-plugin, dass teilweise nicht die Dinge, die Sie wollen. Es ist ein Kompatibilitäts plugin für MooTools1.2.
Sollten Sie zunächst die check-in javascript. zum Beispiel:
dann könnten Sie schicken eine Nachricht per ajax an den server.
Nicht möglich ist. PHP ist server-Seite, während Javascript (die Sprache von JQuery geschrieben ist) ist der client-Seite. PHP-code inhärent hat, bevor der text mit der Javascript-sogar an den Benutzer gesendet, und versuchte, die geladen werden.
Ihre beste Wette ist, kein jQuery mehr als einmal. Man könnte dies durch den Austausch aller Ihrer, auch mit etwas wie:
Zugegeben es ist ein bisschen ein hack, und es könnte ein besserer Weg.
EDIT: Nach ein bisschen gedacht: das kann gar nicht funktionieren, weil der Asynchronität der laden der jQuery-Bibliothek vom server. Es scheint, wie der beste Weg, dies zu tun wäre mit einem
onload
event-handler angebracht, um das Skript enthalten, aber den DOM nicht unterstützen.EDIT 2: Okay, jetzt glaube ich, Ihre beste Wette wäre zu einfach, es einmal in der Seite mit nur einem script-tag pro Seite. Sie könnten dies tun, indem Sie es zu einem globalen header von einer Art und dann das entfernen es überall. Dann, egal was, lassen Sie es wieder. Dies könnte bedeuten, dass Sie laden es auf einige Seiten, die es nicht brauchen, aber aufgrund der cache auf modernen Browsern sollte es kein problem sein.
Möchten Sie vielleicht zu versuchen, mit der
JDocument
- Objekts, um die Header, Suche für jQuery, dann stellen Sie diese gegebenenfalls. DiegetHeadData()
undsetHeadData()
Methoden sollten, damit Sie von dort aus. Sie erhalten den aktuellenJDocument
Objekt mit diesem code:Möglicherweise möchten Sie auch zu schauen, diese Antwort zu einer ähnlichen Frage: Joomla, jQuery Module widersprüchliche
In diesem einen, bist du eigentlich entfernen der redundanten jQuery lädt.
Es sei denn Joomla bietet eine Möglichkeit, Ihnen zu sagen, welche Skripte es ist darunter? (Zend-Framework hat so eine Liste)