Ich nehme an, Sie verwenden Joomla1.0?
Joomla puffert Inhalt mit dem PHP-Ausgabepuffer. zB: ob_start().
Sie können den Inhalt abrufen: ob_get_contents();
Sie können also einen regulären Ausdruck haben, der nach JQuery sucht. Etwas wie:
$jquery_loaded = preg_match("/<script.*?src=[\"']jquery[^\"']\"/i", ob_get_contents());
sollte gut genug sein. (Ich habe das nicht getestet).
Die Verwendung von ob_get_contents() funktioniert möglicherweise nicht in Situationen, da der PHP-Ausgabepuffer geschachtelt werden kann. Sie können so viele Puffer innerhalb von Puffern starten.
Für Joomla1.5 können Sie den Puffer über die API erhalten, die sicherstellt, dass Sie immer Joomla-Ausgabe erhalten.
$Document =& JFactory::getDocument();
$buffer = $Document->getBuffer();
Ob Joomla1.0 oder 1,5 Sie müssen beachten, dass Joomla an einer beliebigen Stelle auf den Puffer hinzufügen können, bevor sie den Ausgang macht (ruft ob_flush() oder gleichwertig). Daher muss bei der Prüfung auf JQuery berücksichtigt werden, dass JQuery nach der Prüfung geladen werden kann.
Beachten Sie, dass der Joomla-Puffer nicht nur für HTML, sondern auch für CSS, JavaScript, XML, JSON usw. erstellt werden kann. Sie sollten also vor der JQuery-Prüfung nach HTML suchen. Sie können auch für das Admin-Panel testen.
$mainframe =& JFactory::getApplication();
$doctype = $document->getType();
// deactivate for backend
if ($mainframe->isAdmin() || $doctype != 'html') {
return false;
}
Denn hier Bezug ist ein Beispiel System-Plugin, das teilweise die Dinge tut, die Sie wollen. Es ist ein Kompatibilitäts-Plugin für MooTools1.2.
<?php
/**
* MooTools1.2 w/ 1.1 compat for AjaxChat
* @copyright www.fijiwebdesign.com
* @author [email protected]
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
// included only
defined('_JEXEC') or die('Direct Access to this location is not allowed!');
jimport('joomla.plugin.plugin');
/**
* Joomla PHP Speedy Integration
*
* @author [email protected]
*/
class plgSystemAjaxchat extends JPlugin
{
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for plugins
* because func_get_args (void) returns a copy of all passed arguments NOT references.
* This causes problems with cross-referencing necessary for the observer design pattern.
*
* @access protected
* @param object $subject The object to observe
* @param array $config An array that holds the plugin configuration
* @since 1.0
*/
function plgSystemAjaxchat(& $subject, $config)
{
parent::__construct($subject, $config);
$mainframe =& JFactory::getApplication();
$document =& JFactory::getDocument();
$doctype = $document->getType();
// deactivate for backend
if ($mainframe->isAdmin()) {
return false;
}
// add mootools 1.2
if ($doctype == 'html') {
$document->addScript('components/com_ajaxchat/js/mootools-1.2-core.js');
$document->addScript('components/com_ajaxchat/js/mootools-1.2-more.js');
$document->addScript('components/com_ajaxchat/js/mootools-1.2-core-compat.js');
$document->addScript('components/com_ajaxchat/js/mootools-1.2-more-compat.js');
}
}
/**
* After Templte output is in buffer
*/
function onAfterRender() {
$mainframe =& JFactory::getApplication();
$document =& JFactory::getDocument();
$doctype = $document->getType();
// deactivate for backend
if ($mainframe->isAdmin()) {
return false;
}
// Only render for HTML output
if ($doctype !== 'html') {
return;
}
// get the output buffer
$body = JResponse::getBody();
// remove mootools if not needed
if (stristr($body, 'mootools.js') || stristr($body, 'mootools-uncompressed.js')) {
$body = preg_replace("/<script.*?mootools(-uncompressed)?\.js.*?<\/script>/i", '', $body);
} else {
$body = preg_replace("/<script.*?mootools-1\.2\-.*?\.js.*?<\/script>[\s\t\r\n]*/i", "\n", $body);
}
JResponse::setBody($body);
}
}
?>
Sie können diese Frage als "Überprüfen Sie, ob jQuery im Header mit Joomla enthalten ist" neu formulieren. – deceze