JCaptionをヘッド、jquery、jcaptionファイルから削除したいのですが、次の方法で非アクティブ化しました。
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);
Mootoolsを使用する必要がある以前のバージョンでjcaptionを削除するには、次の手順を実行します。
$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);
私もjqueryで削除しようとしましたが、preg_replace()の経験がないので、JCatpionを頭から削除するにはどうすればよいですか?
私のコード:
$this->_script = preg_replace('%jQuery\(window\)\.on(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\');\s*}\);\s*%', '', $this->_script);
これは非常に古い質問であり、おそらくもう誰も読んでいないでしょうが、とにかく私は私の答えを投稿します。
JQuery
キャプションの正規表現でエラーが発生しました。ドットをエスケープする必要はありませんが、特殊文字をエスケープする必要があります。また、配列内の正しいキーをターゲットにする必要があるため、スクリプトオブジェクトを呼び出した後に['text/javascript']
を追加する必要があります。
したがって、正しいregex/preg_replaceは次のようになります。
$this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%', '', $this->_script['text/javascript']);
少し前まで私は正規表現にも苦労していましたが、このサイトは大いに役立ちました: http://regexr.com/ サイトを試す場合は、openを使用する必要はなく、既に自動的に存在するため、タグを閉じます。
これを試して:
$this->_scripts = array();
unset($this->_script['text/javascript']);
これを試して:
if (isset($this->_script['text/javascript']))
{ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\ (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script['text/javascript']);
if (empty($this->_script['text/javascript']))
unset($this->_script['text/javascript']);}
$this->_scripts = array();
プラグインを使用して挿入されたスクリプトタグの設定を解除する場合は、次の方法が役立ちます。
public function onBeforeRender() {
// Front end
if ($this->app instanceof JApplicationSite) {
$doc = JFactory::getDocument();
foreach ($doc->_script as $key => $script) {
if (stristr($key, 'text/javascript') !== false) {
unset($doc->_script['text/javascript']);
}
}
}
}