Как я могу полностью удалить Bootstrap из интерфейса Joomla?

Недавно я попытался удалить все экземпляры Bootstrap из передней части Joomla для целей отладки. Я использовал шаблон скелета с относительно новой установкой Joomla 3.3. Я удалил все включения Bootstrap из шаблона, и я отключил все плагины и модули, которые, как я думал, могли его загрузить. Я также очистил кэш Joomla. Несмотря на это, firebug сказал мне, что Joomla все еще пыталась загрузить bootstrap.min.js из /media/jui/js/bootstrap.min.js

Я столкнулся с проблемой, временно переименовав файл начальной загрузки, но мне стало интересно.

  • Это происходит со всеми установками Joomla 3.3 или просто у меня?
  • Есть ли способ определить, откуда загружается загрузочный файл?
  • Есть ли способ отключить загрузку из загрузки?
13 голосов | спросил TryHarder 27 +03002014-10-27T13:50:14+03:00312014bEurope/MoscowMon, 27 Oct 2014 13:50:14 +0300 2014, 13:50:14

9 ответов


14
  

Это происходит со всеми установками Joomla 3.3 или просто у меня?

В версии: 3.2-3.7 (я тестировал).

  

Есть ли способ отключить загрузку из загрузки?

Да, есть. Просто удалите его перед построением заголовка, используя событие onBeforeCompileHead ( Дополнительная информация в документах. ).

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

В моем проекте я использую bootstrap 3.2. Я провел целый день, чтобы найти способ удалить загрузочный файл 2.

Единственное решение - удалить скрипт перед созданием заголовка.

Мое решение состоит в том, чтобы вставить плагин:

class plgSystemYourPlugin extends JPlugin
{
    public function onBeforeCompileHead()
    {
        // Application Object
        $app = JFactory::getApplication();

        // Front only
        if( $app instanceof JApplicationSite )
        {
            $doc            = JFactory::getDocument();
            // Remove default bootstrap
            unset($doc->_scripts[JURI::root(true).'/media/jui/js/bootstrap.min.js']);
        }
    }
}

Он работает в Joomla! 3,2-3,6

(Для заинтересованных) Мне также нужно было удалить это:

    unset($doc->_scripts[JURI::root(true).'/media/system/js/frontediting.js']);
    unset($doc->_scripts[JURI::root(true).'/media/system/js/html5fallback.js']);
ответил Jacek Labuda 29 +03002014-10-29T07:10:34+03:00312014bEurope/MoscowWed, 29 Oct 2014 07:10:34 +0300 2014, 07:10:34
14

Альтернативный хак, который мне всегда нравится выкидывать, поскольку он не требует редактирования файлов ядра, это переопределить файл css с помощью пустого css-файла в вашем шаблоне. Это все равно приведет к вызову вашего сервера для загрузки ресурса, но вам не нужно будет иметь стиль начальной загрузки.

Просто добавьте пустой файл здесь: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.css и templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

Естественно, что любая настройка компонента для использования бутстрапа будет выглядеть неизученной, и все равно будет вызов для загрузки css и js-файлов браузером. Однако файлы будут пустыми (размер небольшой загрузки) и не будут влиять на стиль.

ответил David Fritsch 28 +03002014-10-28T05:20:01+03:00312014bEurope/MoscowTue, 28 Oct 2014 05:20:01 +0300 2014, 05:20:01
7

Просто идея (не тестировалась), но как насчет создания небольшого плагина, который не загружает Bootstrap?

Что-то вроде этого:

public function onAfterRender() {
    //get the array containing all the script declarations
     $document = JFactory::getDocument(); 
     $headData = $document->getHeadData();
     $scripts = $headData['scripts'];

     //remove script
     unset($scripts['/media/jui/js/bootstrap.min.js']);
     $headData['scripts'] = $scripts;
     $document->setHeadData($headData);
}
ответил johanpw 27 +03002014-10-27T14:34:35+03:00312014bEurope/MoscowMon, 27 Oct 2014 14:34:35 +0300 2014, 14:34:35
4

Это то, что прослушивало меня с самого начала Joomla 3.x и до сих пор не было сделано, чтобы дать пользователю возможность предотвратить загрузку загрузочных файлов.

К сожалению, Bootstrap загружается из ядра Joomla, и это связано с некоторыми основными функциями, которые требуют его работы, поэтому его полное удаление предотвратит работу некоторых функций, таких как Tooltip.

Единственный способ удалить его (что я знаю) - с помощью основного взлома в следующем файле: ( не рекомендуется )

  

библиотека \ К \ HTML \ bootstrap.php

Единственное, что я могу представить, это создать переопределение шаблона для каждого модуля, компонента и плагина, который вызывает библиотеку начальной загрузки и удаляет ее.

Ни один из методов не является хорошим, однако Joomla 3.x был построен на Bootstrap, поэтому мы должны жить с ним

ответил Lodder 27 +03002014-10-27T14:01:06+03:00312014bEurope/MoscowMon, 27 Oct 2014 14:01:06 +0300 2014, 14:01:06
3

Если вы не собираетесь создавать свой собственный плагин, простым решением было бы попробовать:

Отменить в шаблоне

//JS
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']);
// CSS    
unset($doc->_stylesheets[$this->baseurl.'/media/jui/js/bootstrap.css']);

Однако - некоторые расширения по-прежнему вставляют js или css, даже если вы его удалите. Самый надежный способ, который я обнаружил, - это:

JCC - JS CSS Control Plugin

http://extensions.joomla.org/расширения /расширение /ядро-усовершенствование /производительность /JS-CSS-управления

Тем не менее, вы все равно будете иметь встроенный js-файл, который будет вставлен в ваш шаблон. Так что иногда вам нужно сделать preg_replace для встроенных js.

ответил iamrobert 11 MarpmWed, 11 Mar 2015 15:10:17 +03002015-03-11T15:10:17+03:0003 2015, 15:10:17
3

Существует два способа:

  1. Отключите включенные файлы из своего шаблона, а затем создайте переопределение, чтобы предотвратить использование любого модуля или компонента из их повторного включения (не так много работы, как кажется).

    1. Используйте любой из многочисленных системных плагинов, которые могут это сделать. Лично я рекомендую этот https://github.com/phproberto/plg_sys_mootable , поскольку он дает полный контролировать, когда и где удалять файлы, чтобы он мог быть настроен, чтобы не нарушать, например, редактирование интерфейса (которое, если вы удаляете все, будет нормально нарушено).

Вариант 2 имеет простоту использования, но вам все равно придется жить с мутной загрузкой 2.x разметки, засоряющей ваш сайт. Вариант 1 требует немного больше работы, но означает, что вы можете удалить каждую трассировку из Bootstrap; всегда мой предпочтительный вариант. См. http://joomlafuture.com/, например, код.

ответил Seth Warburton 2 J000000Thursday15 2015, 10:10:16
2

Joomla не загружает bootstrap CSS автоматически, но загружает JS. Если ваш шаблон использует стандартный метод для загрузки главы Joomla:

<jdoc:include type="head" />

Он загрузит файлы mootools, jquery и bootstrap в следующем порядке:

<script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
<script src="/media/system/js/core.js" type="text/javascript"></script>
<script src="/media/system/js/caption.js" type="text/javascript"></script>
<script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>

Он не загружает файлы CSS. Вы можете протестировать его, удалив строку из файла шаблона, а затем проверьте, какие файлы головок пропадают.

Загрузочный CSS загружается вашим шаблоном. Joomla (с тех пор, как я полагаю, 2.5) включил Bootstrap 2.x в свои медиафайлы для легкого доступа. Protostar по какой-то причине не вызывает загрузку из медиафайлов. Вместо этого они копируют и вставляют весь загрузочный CSS в свой файл template.css. Другие фреймворки называют Bootstrap. У Warp 7, например, есть флажок для включения или отключения Bootstrap.

Поскольку интерфейс и бэкэнд имеют разные шаблоны, Bootstrap может быть загружен или отключен для одного, а не для другого. Нет никакой зависимости, если вы хотите отключить Bootstrap из внешнего интерфейса, а не для бэкэнд.

Мое предпочтение - Bootstrap 3, поэтому на нескольких разных пользовательских шаблонах я загрузил и включил загрузку 3 css в заголовок шаблона после строки заголовка joomla и в тегах заголовка шаблона:

$document = JFactory::getDocument();
$document->setMetaData( 'viewport', 'width=device-width, initial-scale=1, minimum-scale=1' );
$document->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/bootstrap.min.css');

Метод немного отличается для таких фреймворков, как Warp 7. Вы также можете загружать непосредственно с URL-адреса загрузочного CDN, если хотите.

Итак, Joomla не заставляет вас использовать Bootstrap или любую версию Bootstrap, по крайней мере для CSS. Если хотите, вы можете использовать другие адаптивные рамки. Все это делается в шаблоне. Нет необходимости в хаках или плагинах.

ответил Quinn 11 MaramWed, 11 Mar 2015 07:46:17 +03002015-03-11T07:46:17+03:0007 2015, 07:46:17
1

Joomla 3.3 (меньше) основана на Bootstrap 2.3, а не на Bootstrap 3.X

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

В больших положениях кода мне пришлось отключить Bootstrap таким ниже кода:

//Добавить JavaScript Framework JHTML :: _ ( 'bootstrap.framework');

и создал новый полностью Joomla шаблон для этого; но если вы хотите перейти на другой интерфейс пользовательского интерфейса, я думаю, вы должны продолжить этот процесс и, по крайней мере, у вас есть более 30 компонентов, модулей, плагинов и некоторые устаревшие коды Joomla, которые вы должны разработать снова. Это просто, но нужно много времени.

Новое восприятие 02 июля 2015: основанный на методе «unset» в Joomla, который некоторые из наших друзей упомянули в этом форуме, я мог полностью отключить предыдущую версию Bootstrap и Mootools или любую другую библиотеку Javascript или файл CSS. Прошу прощения, прежде чем я упомянул о плохом решении. вы можете прочитать этот пост , чтобы получить дополнительную информацию об отключении Bootstrap

ответил Sami 27 +03002014-10-27T17:18:54+03:00312014bEurope/MoscowMon, 27 Oct 2014 17:18:54 +0300 2014, 17:18:54
-2

Или вы можете использовать шаблон из Yootheme, установить его как значение по умолчанию, а затем в этой конфигурации шаблона выберите «Не загружать загрузочный файл».

ответил Jim Hill 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 01 Sep 2015 22:09:13 +0300 2015, 22:09:13

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

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

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