ヘッドでのスクリプトの読み込みを無効にする


9

の読み込みを無効にする方法

  • mootools-core.js
  • core.js

では<head>サードパーティコンポーネント/プラグインを使用せずに?


Joomlaのどのバージョンを使用していますか?
TryHarder 2014

@moomoochoo joomla 3.2を使用しています
web-tiki

回答:


18

私は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]);
    }
}

これにより、それらのスクリプトが含まれるのを防ぎ、必要に応じてスクリプトを追加または削除します


3
これは私の最後のプロジェクト(joomla 3.3.6)で失敗しました。JURI::root(true).スクリプトパスの前に追加したところ、うまくいきました。
web-tiki 2014年

5

テンプレートで設定を解除できます

unset(
  $this->_scripts['/media/jui/js/mootools-core.js'],
  $this->_scripts['/media/jui/js/core.js']);

これにより、両方のJSファイルがヘッダーから削除されます。


4

Joomla 3.xでは、JHtml::_('jquery.framework')テンプレートを呼び出して、MootoolsなしでjQueryをロードできます。これにより、デフォルトでjQueryが競合なしモードでロードされるため、通常モードが必要な場合は、2番目のパラメーターfalseを追加するだけですJHtml::_('jquery.framework', false)

http://docs.joomla.org/J3.2:Javascript_Frameworks


2

私はこれを使用しました:

foreach ($doc->_scripts as $script => $value)
{
    if (preg_match('/media\/jui/i', $script))
      unset($doc->_scripts[$script]);
}

2
あなた以来needle文字列は変数ではなく、唯一の意図は大文字と小文字を区別しないマッチングを行うことで、それは使用へのより良い練習になりますstripos() ...if (stripos($script, 'media/jui') !== false)
mickmackusa

0

@ContextSwitchによるソリューションは、テンプレートが処理された後に一部のスクリプトが読み込まれ、その段階でファイルの設定を解除してもそれらのファイルに影響を与えなかったため、機能しませんでした。

したがって、私は同様のソリューションを実装する必要がありましたが、onBeforeCompileHeadイベントにバインドされた単純なプラグインを使用しました。ここで私が説明したよう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.