の読み込みを無効にする方法
mootools-core.js
core.js
<head>
サードパーティのコンポーネント/プラグインを使用せずに?
私はJoomla 3.2を使用しています。
$doc = JFactory::getDocument();
$dontInclude = array(
'/media/jui/js/jquery.js',
'/media/jui/js/jquery.min.js',
'/media/jui/js/jquery-noconflict.js',
'/media/jui/js/jquery-migrate.js',
'/media/jui/js/jquery-migrate.min.js',
'/media/jui/js/bootstrap.js',
'/media/system/js/core-uncompressed.js',
'/media/system/js/tabs-state.js',
'/media/system/js/core.js',
'/media/system/js/mootools-core.js',
'/media/system/js/mootools-core-uncompressed.js',
);
foreach($doc->_scripts as $key => $script){
if(in_array($key, $dontInclude)){
unset($doc->_scripts[$key]);
}
}
これにより、これらのスクリプトが含まれるのを防ぎ、必要に応じてスクリプトを追加または削除します
テンプレートで設定を解除できます
unset(
$this->_scripts['/media/jui/js/mootools-core.js'],
$this->_scripts['/media/jui/js/core.js']);
これにより、両方のJSファイルがヘッダーから削除されます。
Joomla 3.xでは、テンプレートでJHtml::_('jquery.framework')
を呼び出して、MootoolsなしでjQueryをロードできます。これはデフォルトでjQueryを競合なしモードでロードするため、通常モードが必要な場合は、falseの2番目のパラメーターを追加するだけです:JHtml::_('jquery.framework', false)
。
私はこれを使用しました:
foreach ($doc->_scripts as $script => $value)
{
if (preg_match('/media\/jui/i', $script))
unset($doc->_scripts[$script]);
}
@ContextSwitchによる解決策は、テンプレートの処理後に一部のスクリプトが読み込まれるため機能しなかったため、その段階でファイルの設定を解除しても、それらのファイルには影響がありませんでした。
そのため、同様のソリューションを実装する必要がありましたが、onBeforeCompileHead
イベントにバインドされた単純なプラグインを使用しました。私が説明したように ここ 。