Joomla 3.X – Удалить скрипт всплывающей подсказки из заголовка?

Я пытаюсь удалить нежелательные скрипты из моего настраиваемого заголовка joomla, который мне удалось удалить все, кроме этого:

<script type="text/javascript"> jQuery(document).ready(function() { jQuery('.hasTooltip').tooltip({}); }); </script> 

Я искал часы, и я пробовал множество вещей, чтобы удалить его, но я не могу избавиться от него. Вот что я сделал, чтобы удалить другие сценарии, которые я не хочу (для тех, у кого есть эта проблема):

 # unset frameworks JHtml::_('bootstrap.framework',false); JHtml::_('jquery.framework',false); # unset scripts unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); с # unset frameworks JHtml::_('bootstrap.framework',false); JHtml::_('jquery.framework',false); # unset scripts unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); с # unset frameworks JHtml::_('bootstrap.framework',false); JHtml::_('jquery.framework',false); # unset scripts unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 

Если кто-то может помочь мне удалить эту всплывающую подсказку javascript, это будет фантастично. О, и я не хочу касаться основных файлов, поэтому я пытаюсь удалить его из самого файла index.php.

    Некоторые компоненты / Module / Plugin вызывают функцию JHTML :: _ ('behavior.tooltip'). и эта функция добавляет ваш код.

    ты можешь сделать:

    Грязный путь: перейдите в библиотеки \ cms \ html \ bootstrap.php и измените файл на методе tooltip (). но помните, что это основной файл, поэтому обновление может переопределить ваши изменения.

    Чистым способом, найдите компонент, который добавляет этот код и удаляет или меняет его.

    Удачи

    Вам придется вручную разобрать $doc->_script . Массив $doc->_scripts содержит сценарии, связанные с другим источником, в то время как $doc->_script предназначен для объявлений сценариев, таких как всплывающая подсказка.

    В конце вашего веб-корня index.php (не шаблон, http://domain.com/index.php ) замените $ app-> execute (); выполните следующие действия:

     // Start the output buffer. ob_start(); // Execute the application. $app->execute(); // Get buffer $buffer = ob_get_clean(); // Change HTML $buffer = str_replace('<script type="text/javascript">'.chr(10).'jQuery(document).ready(function(){'.chr(10).' jQuery(\'.hasTooltip\').tooltip({"html": true,"container": "body"});'.chr(10).'});'.chr(10).' </script>','',$buffer); // Output buffer echo($buffer); 

    Обратите внимание, что вам нужно будет использовать EXACT HTML, который создается модулем. Это то, что мой модуль создает, твой может немного отличаться.

    В дополнение к выполнению перезаписи HTML, например, вы могли бы также убрать выход, удалить ссылки на модули и т. Д.

    Я также использую это для выполнения таких действий, как изменение года авторских прав на веб-сайте. В позиции модуля я ссылаюсь на текущий год как «{год}», а затем добавляю еще одну str_replace, которая выполняет следующие действия:

     $buffer = str_replace('{year}',date('Y'),$buffer); 

    Бинго, всегда показывает текущий год.

    Наслаждаться…

    Мне удалось избавиться от встроенного javascript, используя этот код в файле index.php моего шаблона:

     unset($this->_script['text/javascript']); 

    отказ от ответственности: я не разработчик PHP, поэтому используйте код выше на свой страх и риск 🙂

    Основываясь на документах Joomla , нужно рассмотреть два вопроса:

    a) В приведенном ниже коде вы фактически включаете / включаете bootstrap и jquery:

     # unset frameworks JHtml::_('bootstrap.framework',false);// including bootstrap! JHtml::_('jquery.framework',false);// including jquery! 

    Когда загрузочный бот включен, joomla автоматически включает jquery, и если joomla включен jquery, joomla автоматически включает всплывающую подсказку.

    Просто не называйте эти функции. unset вами unset удалит bootstrap и jquery правильно:

     unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); с unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); с unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); с unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); 

    б) если скрипт всплывающей подсказки по-прежнему включен, он, вероятно, вставлен JHtml::_('behavior.tooltip'); где-то в используемом компоненте.

    Наконец, никогда никогда не изменяйте основные файлы Joomla. это худшая практика.

    PS. Для тех, кто упомянул, что скрипт всплывающей подсказки вставлен, но он не находит его в $doc , это связано с тем, что $doc не содержит встроенных скриптов.

    Я уже встречаю эту проблему, я использую Joomla 3. Если это ваш случай, вы можете решить ее, выполнив это: Joomla 3 поставляется с jQuery на борту, поэтому, добавив Joomla самостоятельно, это может вызвать проблему. Также убедитесь, что вы включили jQuery поверх <jdoc:include type="head" /> . Если вам необходимо включить его. Но я не рекомендую этого. Надеюсь это поможет

    У меня была такая же проблема, когда я строил шаблон / сайт Joomla только с HTML5, CSS3 и некоторыми небольшими плагинами jQuery для эффектов. Было недостойно включать тяжелый Bootstrap просто, чтобы показать некоторые подсказки, которые я также не использовал вообще.

    Хотя я уже отключил media / jui / js / bootstrap.min.js из JDocument, но эти строки кода

     jQuery(document).ready(function(){ jQuery('.hasTooltip').tooltip({"html": true,"container": "body"}); }); 

    были добавлены в библиотеки / cms / html / bootstrap.php. Так что я получил ошибку "function tooltip not found".

    Я решил, что добавив пустую функцию в JS-файл моего шаблона.

     jQuery.fn.tooltip = function (option) { }; 

    Существует доступный плагин Joomla, который отключает Bootstrap, а также удаляет фрагмент функции всплывающей подсказки, который вставляется JHtml::_('behavior.tooltip'); где-то в любом компоненте.

    См. Здесь: Отключить плагин Bootstrap