Supongo que está utilizando Joomla1.0?
Joomla almacena contenido mediante el búfer de salida de PHP. es decir: ob_start().
Puede obtener los contenidos usando: ob_get_contents();
Por lo tanto, puede tener una expresión regular que busque JQuery. Algo como:
$jquery_loaded = preg_match("/<script.*?src=[\"']jquery[^\"']\"/i", ob_get_contents());
debería ser lo suficientemente bueno. (No lo he probado).
El uso de ob_get_contents() puede no funcionar en situaciones ya que el búfer de salida de PHP se puede anidar. Puede iniciar tantos búferes dentro de búferes.
Para Joomla1.5, puede obtener el búfer a través de la API, lo que garantiza que siempre obtenga la salida de Joomla.
$Document =& JFactory::getDocument();
$buffer = $Document->getBuffer();
Si Joomla1.0 o 1,5 que tienen que señalar que Joomla puede agregar a la memoria intermedia en cualquier momento antes de que se hace que la salida (llamadas ob_flush() o equivalente). Por lo tanto, su verificación de JQuery debe tener en cuenta que JQuery se puede cargar después de la verificación.
Tenga en cuenta que el búfer de Joomla se crea no solo para HTML, sino también para CSS, JavaScript, XML, JSON, etc. Por lo tanto, es posible que desee comprobar el código HTML antes de realizar las pruebas de JQuery. También puede probar para el panel de administración.
$mainframe =& JFactory::getApplication();
$doctype = $document->getType();
// deactivate for backend
if ($mainframe->isAdmin() || $doctype != 'html') {
return false;
}
Como referencia aquí es un plugin de sistema de ejemplo que en parte hace las cosas que quiere. Es un complemento de compatibilidad para 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);
}
}
?>
Es posible que desee reformular esta pregunta como "Compruebe si jQuery está incluido en el encabezado con Joomla". – deceze