Search
Write a publication
Pull to refresh

Как вырезать ненужные инклуды css и js из Друпальных тем (6.х версии)

Reading time2 min
Views689
Здравствуйте, хабра-товарищи!

Я часто встречаю сообщения о том, что в Друпальных темах вечно мешаются лишние друпальные css инклуды (файлы вроде system.css, defaults.css, node.css), которые воздействуют на уже заготовленные стили и мешают спокойно жить верстальщикам.

Собственно о том, как грамотно от этих инклудов избавиться я сейчас и расскажу (решение не подойдет для тех, кто по какой-то причине предпочитает видеть админку в теме сайта — даже не приступайте к этим действиям!!!).

Для начала открываем файл template.php, который находится в нужной теме.

Затем куда душе угодно добавляем следующий код (замените YOURFUNCTIONNAME на имя вашей темы):

function YOURFUNCTIONNAME_preprocess_page(&$vars) {

if( request_uri() != '/admin/build/block' ){

// получаем массив всех css
$css = drupal_add_css();

// Удаляем неугодные элементы
unset($css['all']['module']['modules/system/system.css']);
unset($css['all']['module']['modules/system/defaults.css']);
unset($css['all']['module']['modules/system/system-menus.css']);
unset($css['all']['module']['modules/node/node.css']);
unset($css['all']['module']['modules/views/css/views.css']);

// Возвращаем почищенный массив Друпалу
$vars['styles'] = drupal_get_css($css);

}

}


Вот и все — лишние ненужные стили не тормозят загрузку страницы и своим стилям проще найти верный путь до глаз пользователя. Условие "if( request_uri() != '/admin/build/block' ){}" здесь стоит для того, чтобы на странице редактировании блоков (которая хоть и является частью админки, все равно выводится в дизайне сайта) оставался нужный для работы функционал.

Раз уж мы порезали css, то аналогично возьмемся и за JavaScript инклуды. В ту же функцию YOURFUNCTIONNAME_preprocess_page добавляем:
if(drupal_is_front_page()){

// Добавляем свеженький jQuery
drupal_add_js('misc/jquery_new.js');

// Получаем массив всех JS инклудов
$js = drupal_add_js();

// Вырезаем неугодный старенький jQuery
unset($js['core']['misc/jquery.js']);

// Возвращаем Друпалу почищенный массив JS
$vars['scripts'] = drupal_get_js('header', $js);

}


Вот так можно легко избавиться от штатного JS вызова jQuery какой-то там бородатой 1.2.6 версии от 2008 года на главной странице (мне потребовалось на главной делать много сложного JS, который со старой версии jQuery не работал и таким образом я легко и просто устроил подмену).

Будьте осторожны с вырезанием JS — не загубите функционал Друпала :)

Вот и все! Надеюсь, это кому-то пригодится.

UPDATE По совету Anonym и Razunter, если требуется просто обновить версию jQuery, то лучше воспользоваться патчем или модулем jQuery Update. В случае с ручным вырезанием инклудов JavaScript могут возникнуть проблемы.
Tags:
Hubs:
Total votes 7: ↑4 and ↓3+1
Comments15

Articles