Здравствуйте, хабра-товарищи!
Я часто встречаю сообщения о том, что в Друпальных темах вечно мешаются лишние друпальные css инклуды (файлы вроде system.css, defaults.css, node.css), которые воздействуют на уже заготовленные стили и мешают спокойно жить верстальщикам.
Собственно о том, как грамотно от этих инклудов избавиться я сейчас и расскажу (решение не подойдет для тех, кто по какой-то причине предпочитает видеть админку в теме сайта — даже не приступайте к этим действиям!!!).
Для начала открываем файл template.php, который находится в нужной теме.
Затем куда душе угодно добавляем следующий код (замените YOURFUNCTIONNAME на имя вашей темы):
Вот и все — лишние ненужные стили не тормозят загрузку страницы и своим стилям проще найти верный путь до глаз пользователя. Условие "if( request_uri() != '/admin/build/block' ){}" здесь стоит для того, чтобы на странице редактировании блоков (которая хоть и является частью админки, все равно выводится в дизайне сайта) оставался нужный для работы функционал.
Раз уж мы порезали css, то аналогично возьмемся и за JavaScript инклуды. В ту же функцию YOURFUNCTIONNAME_preprocess_page добавляем:
Вот так можно легко избавиться от штатного JS вызова jQuery какой-то там бородатой 1.2.6 версии от 2008 года на главной странице (мне потребовалось на главной делать много сложного JS, который со старой версии jQuery не работал и таким образом я легко и просто устроил подмену).
Будьте осторожны с вырезанием JS — не загубите функционал Друпала :)
Вот и все! Надеюсь, это кому-то пригодится.
UPDATE По совету Anonym и Razunter, если требуется просто обновить версию jQuery, то лучше воспользоваться патчем или модулем jQuery Update. В случае с ручным вырезанием инклудов JavaScript могут возникнуть проблемы.
Я часто встречаю сообщения о том, что в Друпальных темах вечно мешаются лишние друпальные 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 — не загубите функционал Друпала :)
Вот и все! Надеюсь, это кому-то пригодится.
UPDATE По совету Anonym и Razunter, если требуется просто обновить версию jQuery, то лучше воспользоваться патчем или модулем jQuery Update. В случае с ручным вырезанием инклудов JavaScript могут возникнуть проблемы.