Joomla 3.4.1 как удалить JCaption, вызванный с помощью jQuery?

Я хочу удалить JCaption из файла head, jquery и jcaption i, дезактивированного следующими способами:

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']);

Чтобы удалить jcaption в предыдущих версиях, где требуется использовать mootools:

$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);
9 голосов | спросил xxx 22 AMpWed, 22 Apr 2015 00:13:38 +030013Wednesday 2015, 00:13:38

4 ответа


5

Это очень старый вопрос, и, вероятно, никто его не читает, но в любом случае я отправлю свой ответ.

В регулярном выражении для заголовка 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 и close, потому что он уже существует автоматически.

ответил Laci K 5 Jam1000000amTue, 05 Jan 2016 03:44:53 +030016 2016, 03:44:53
3

Попробуйте следующее:

$this->_scripts = array();
unset($this->_script['text/javascript']);
ответил Sahil Purav 22 AMpWed, 22 Apr 2015 09:40:37 +030040Wednesday 2015, 09:40:37
2

Попробуйте следующее:

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();
ответил stckvrw 22 AMpWed, 22 Apr 2015 08:18:02 +030018Wednesday 2015, 08:18:02
0

Если вы хотите использовать плагин для отмены введенного тега скрипта, может оказаться полезным следующее.

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']);
            }
        }
    }
}
ответил 9KSoft 15 32017vEurope/Moscow11bEurope/MoscowWed, 15 Nov 2017 04:47:48 +0300 2017, 04:47:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132