Vérifier si jQuery est inclus dans l'en-Tête (Joomla)
Est-il un moyen de vérifier si jQuery est chargé à l'aide de PHP?
J'ai deux différents plugins de Joomla qui charge le jQuery, JS, mais quand il est inclus plus d'une fois il ne fonctionne pas correctement.
Pour expliquer le processus un peu plus:
Joomla dispose d'une capacité d'intercepter le code HTML source avant qu'il ne soit rendu, essentiellement à travailler sur le code source lui-même.
C'est à l'aide de la fonction:
onPrepareContent(&$row, &$params, $limitstart)
$row est le contenu HTML de la page qui peuvent être analysés.
Je pensais que peut-être un preg_match pourraient travailler, mais n'ont pas beaucoup d'expérience avec elle.
Vous pouvez reformuler cette question comme "Vérifier si jQuery est inclus dans l'en-tête avec Joomla".
OriginalL'auteur privateace | 2009-08-26
Vous devez vous connecter pour publier un commentaire.
Mieux encore, vous pouvez le vérifier avec le JavaScript et l'ajouter ensuite à la tête en cas de disparition.
Cela ne répond pas à la question.
OriginalL'auteur Renfro
Je suis en supposant que vous êtes à l'aide de Joomla1.0?
Joomla tampons de contenu à l'aide du tampon de sortie PHP. c'est à dire: ob_start().
Vous pouvez obtenir le contenu de l'aide: ob_get_contents();
Ainsi vous pouvez avoir une expression régulière qui vérifie pour JQuery. Quelque chose comme:
devrait être assez bon. (Je n'ai pas testée).
À l'aide de ob_get_contents() peut ne pas fonctionner dans les situations depuis le tampon de sortie PHP peuvent être imbriquées. Vous pouvez démarrer autant de tampons dans les zones tampons.
Pour Joomla1.5, vous pouvez obtenir le tampon, via l'API, ce qui vous garantit que vous êtes toujours obtenir Joomla sortie.
Si Joomla1.0 ou 1.5 vous avez à noter que Joomla pouvez ajouter de la mémoire tampon à tout moment avant elle rend la sortie (appels ob_flush() ou l'équivalent). Ainsi, votre chèque de JQuery doit prendre en compte le fait que JQuery peut être chargé après la vérification.
Noter que Joomla tampon est créé non seulement pour le HTML, mais peut être CSS, JavaScript, XML, JSON, etc. De sorte que vous pouvez vérifier pour le HTML avant de faire votre JQuery tests. Vous pouvez aussi tester le panneau d'admin.
Pour la référence ici est un exemple de système de plugin qui en partie ne fait les choses que vous voulez. C'est un plugin de compatibilité pour MooTools1.2.
OriginalL'auteur bucabay
Devez d'abord effectuer la vérification en javascript. par exemple:
ensuite, vous pouvez envoyer un message à l'ajax au serveur.
OriginalL'auteur andres descalzo
Ce n'est pas possible. PHP côté serveur, tout en Javascript (langage JQuery est écrit en) est côté client. Le code PHP intrinsèquement doit s'exécuter avant le texte qui inclut le Javascript de la même sera envoyé à l'utilisateur et tenté d'être chargé.
Votre meilleur pari est de ne pas inclure jQuery plus d'une fois. Vous pouvez le faire par le remplacement de tous vos comprend avec quelque chose comme:
Il est vrai que c'est un peu un hack, et il pourrait y avoir une meilleure façon.
EDIT: Après un peu de réflexion: cela peut même pas travailler en raison de l'asynchronicité de chargement de la bibliothèque jQuery à partir du serveur. Il semble que la meilleure façon de le faire ce serait avec un
onload
gestionnaire d'événement attaché à inclure le script, mais le DOM ne prend pas en charge.EDIT 2: Ok, maintenant, je pense que votre meilleur pari serait de simplement inclure qu'une seule fois dans la page à l'aide d'une seule balise de script par page. Vous pouvez faire cela en ajoutant un mondial de l'en-tête de la sorte, et puis de le retirer partout ailleurs. Ensuite, n'importe quoi, ne pas l'inclure à nouveau. Cela pourrait signifier que vous chargez sur certaines pages qui n'en ont pas besoin, mais en raison de cache sur les navigateurs modernes, il ne devrait pas être un problème.
OriginalL'auteur Imagist
Vous pourriez vouloir essayer à l'aide de la
JDocument
objet pour obtenir les en-têtes, recherche pour jQuery, puis réinitialiser si nécessaire. LegetHeadData()
etsetHeadData()
méthodes devrait vous aider à partir de là. Vous pouvez obtenir le courantJDocument
objet avec ce code:Vous pouvez également regarder cette réponse à une question similaire: Joomla, jQuery, modules contradictoires
Dans celui-ci, vous êtes réellement en enlevant l'redondant jQuery charges.
OriginalL'auteur jlleblanc
À moins que Joomla propose une façon de vous dire quels scripts, c'est compris? (Zend Framework a une telle liste)
OriginalL'auteur jeef3