Ben Joomla1.0 kullanarak varsayarak yaşıyorum?
Joomla PHP çıktı tamponunu kullanarak içerik tamponlar. yani: ob_start ().
) Ob_get_contents (;: Kullandığınız içeriğini alabilirsiniz
Böylece JQuery için denetler normal bir ifade olabilir. Gibi bir şey:
$jquery_loaded = preg_match("/<script.*?src=[\"']jquery[^\"']\"/i", ob_get_contents());
yeterince iyi olmalıdır. (Ben test değil).
PHP çıktı tamponu iç içe olabilir beri ob_get_contents Kullanma () durumlarda çalışmayabilir. Sen tamponlar içinde birçok tamponlar başlayabilirsiniz.
Joomla1.5 için, size her zaman Joomla çıktı alıyoruz sağlayan API aracılığıyla tampon alabilirsiniz.
$Document =& JFactory::getDocument();
$buffer = $Document->getBuffer();
İster Joomla1.0 veya 1.5 bunu (eşdeğer ob_flush () çağırır veya) çıktı işler önce Joomla herhangi bir noktada tampon ekleyebilirsiniz dikkat etmelisiniz. Böylece JQuery için onay JQuery kontrolünden sonra yüklenebilecek dikkate almak zorundadır.
Joomla tampon HTML için değil, sadece oluşturulan unutmayın, ancak CSS olabilir, JavaScript, XML, JSON vb sizin JQuery testleri yapmadan önce HTML için kontrol etmek isteyebilirsiniz yüzden. Ayrıca admin panelinde için test edebilirsiniz.
$mainframe =& JFactory::getApplication();
$doctype = $document->getType();
// deactivate for backend
if ($mainframe->isAdmin() || $doctype != 'html') {
return false;
}
Burada referans için kısmen istediğiniz şeyler yapar bir örnek sistem eklentisi. Bu MooTools1.2 için bir uyumluluk eklenti.
<?php
/**
* MooTools1.2 w/ 1.1 compat for AjaxChat
* @copyright www.fijiwebdesign.com
* @author gabe@fijiwebdesign.com
* @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 gabe@fijiwebdesign.com
*/
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);
}
}
?>