Як я можу повністю видалити Bootstrap з передньої частини Joomla?


14

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

Я вирішив проблему, тимчасово перейменувавши завантажувальний файл, але мені стало цікаво.

  • Це трапляється з усіма установками Joomla 3.3 або це лише моє?
  • Чи є спосіб я визначити, звідки завантажується завантажувальна програма?
  • Чи є спосіб я відключити завантажувальний завантажувач?

Відповіді:


15

Це трапляється з усіма установками 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']);

2
Чудово! Мені знадобилося 5 хвилин, щоб створити власний плагін "видалити jquery і boostrap" завдяки вам.
Олександр Пауло

16

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

Просто додайте сюди порожній файл: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.cssі templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

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


Ніколи не думав про це так, класно !!!
Мохд Абдул Муджіб

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);
}

4

Якщо ви не хочете створити свій власний плагін, спробувати просте рішення:

Видалити в шаблоні

//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

http://extensions.joomla.org/extensions/extension/core-enhancements/performance/js-css-control

Однак - у вас все ще інколи буде вставлений js inline у ​​ваш шаблон. Отже - іноді вам потрібно буде зробити preg_replace для вбудованого js.


4

Це щось, що клопоче мене з початку Joomla 3.x і до цього часу нічого не зроблено, щоб дати користувачеві можливість не допустити завантаження завантажувальних файлів.

На жаль, Bootstrap завантажується з ядра Joomla, і це пов'язано з деякими основними функціями, які вимагають його роботи, тим самим видаляючи його повністю, заважає деяким функціям працювати, наприклад, підказка.

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

бібліотеки \ cms \ html \ bootstrap.php

Єдиний інший спосіб, який я можу придумати, - це створити шаблон заміщення для кожного модуля, компонента та плагіна, який викликає бібліотеку завантажувального завантаження та видаляє його.

Жоден метод не є приємним, проте Joomla 3.x був побудований на Bootstrap, тому нам доведеться з цим жити


1
Спасибі Лодер. Здається, трохи недалекоглядні, у них немає кнопки вимкнення. Сподіваємось, вони додадуть його до Joomla 3.4 :)
TryHarder

У вас не повинно бути основних файлів. Період. Існує безліч інших способів видалення всіх слідів Bootstrap, без злому основних файлів, і всі вони бажані. Усі вони також переживуть оновлення Joomla, яке не можна сказати про зламані основні файли.
Сет Варбуртон

@seth, так, зараз є інші способи. Ця відповідь була написана 9 місяців тому, і тоді я не знав іншого способу
Лодер

@Valentin Despa, чи не могли б ви видалити цю відповідь для мене, оскільки я не в змозі?
Лодер

@oooooo - Я просив видалити "прийнятий" прапор з моєї відповіді, оскільки це не рішення тут. Якщо вони не можуть цього зробити, чи не проти ви позначити чужу відповідь як "прийняту"?
Лодер

3

Є два способи:

  1. Видаліть включені файли з вашого шаблону, а потім створіть заміщення, щоб запобігти включенню будь-якого модуля або компонента (не стільки роботи, скільки це звучить).

    1. Використовуйте будь-який із численних плагінів системи, який може це зробити. Особисто я рекомендую цей https://github.com/phproberto/plg_sys_mootable, оскільки він дає повний контроль над тим, коли та куди видаляти файли, щоб його можна було налаштувати так, щоб не порушувати фронтальне редагування, наприклад (що якщо ви видалите все буде порушено нормально).

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


2

Joomla не завантажує завантажувальний 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, тому на декілька різних спеціальних шаблонів я завантажив і включив css bootstrap 3 в мою голову шаблону після заголовка 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. Ви можете використовувати інші чуйні рамки, якщо хочете. Це все зроблено в шаблоні. Не потрібно хаків чи плагінів.


1

Joomla 3.3 (менше) базується на Bootstrap 2.3, а не Bootstrap 3.X

Я хотів перейти до нового випуску Bootstrap, і там було багато позицій, які я, звичайно, змінив, виходячи зі своєї ідеї. Я це робив, але зовсім недавно.

У багатьох позиціях коду мені довелося вимкнути Bootstrap з наступного коду:

// Додати JavaScript Frameworks JHtml :: _ ('bootstrap.framework');

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

Нове сприйняття 02 липня 2015 року: на основі методу "unset" в Joomla, що деякі наші друзі, згадані на цьому форумі, я могли повністю відключити попередню версію Bootstrap і Mootools або будь-яку іншу бібліотеку Javascript або CSS-файл. Вибачте, перш ніж я згадував про погане рішення. ви можете прочитати цю публікацію, щоб отримати більше інформації про відключення Bootstrap


Гарний улов. Bootstrap 3 - помилка. Я зараз її відредагую.
TryHarder

-2

Або ви можете використовувати шаблон від Yootheme, встановити його за замовчуванням, а потім у цій конфігурації шаблону вибрати "не завантажувати завантажувальний засіб".


3
Ви в основному говорите, що 49 євро видалити Bootstrap - це також варіант?
Лодер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.