Друпал для «Чайников»

Хочу поделиться некоторыми мыслями по поводу построения сайтов на основе CMS Drupal.
Не вдаваясь в подробности построения архитектуры системы и наполнения ресурса, просто несколько правил и пояснений к ним.
Во первых надо четко понимать, то что мы можем получить, используя Друпал, делиться на две части:
1. Что выводить (какая информация попадает в контент сайта)
2. Как выводить (как эта информация представлена в конечном виде)
Если за первое (и частично за второе *) отвечает ядро системы и расширение функционала за счет системы модулей Друпала и «сниппетов»**, то за второе почти полностью отвечает система темизации принятая в Друпал.
** Сниппет – обычно, PHP-код, формирующий небольшой фрагмент контента.
Правило № 1. Никогда не следует пытаться исправить выводимую информацию и/или представление этой информации за счет изменения модулей ядра (или сторонних), единственное исключение это когда в модуле встречается явная ошибка, но и в этом случае правильнее или написать баг-репорт автору или создать патч и опять же отправить его автору модуля. Все что вы можете (или должны) изменять для управлением представления контента находится в каталоге sites/[all|ваша-сайт]/themes, и для управления самой информацией sites/[all|ваша-сайт]/modules/написанные-вами-модули (добавлю что кое-что еще можно (а иногда и нужно) изменять в файлике settings.php)
Для примера, допустим вы хотите, что бы фон комментария в превью у вас был не бледно-желтого цвета как задано по умолчанию в файле modules/comment/comment.css, а допустим голубым. Так вот, не надо исправлять файл modules/comment/comment.css, вполне достаточно прописать в файле стилей используемой вами темы строчку
.preview .comment { background-color: #e0efff;}, это будет работать и главное это концептуально правильно.
Другой пример, вы хотите, что бы в комментариях у вас не показывался заголовок, наверняка первое, что вам придет в голову это исправить файл (убрав там вывод переменной $title) modules/comment/comment.tpl.php , так вот опять же – не делайте этого. Тот же самый результат вы получите, скопировав указанный файл в каталог своей темы, и уже там исправив (т.е. убрав строку <h3><?php print $title ?></h3>).
Правило № 2. Любые изменения в теме (кроме, пожалуй, файлов css и то при условии, что они у вас не закэшированы), требуют очистки кэша, иначе вы не увидите ваших изменений, и будете долго пытается понять, почему ваши изменения не работают. Да тут имеется в виду кэш Друпала а не кэш браузера. Очистить кэш в шестой версии можно через admin/settings/performance – там внизу кнопка «Очистить кэш данных», в пятерке кэш тем, можно очистить, зайдя на страницу управления темами (admin/build/themes) и «засубмитив» данную страничку. Кроме того, очистить кэш можно почистив таблицы базы, начинающиеся с cache* (Делается это sql командой TRUNCATE имя-таблицы, тут важно не перепутать имя таблицы
иначе возможен крах вашего сайта).
Правило №3. Это правило касается PHP-сниппетов, перед их публикацией обязательно проверяйте их работоспособность, иначе вы можете попасть на долгий и нудный геморрой. Как это сделать ? Проще всего создать файлик в корне вашего сайта, допустим test.php, с содержимым вашего сниппета и добавив в него дополнительно две строчки перед сниппетом
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//тут код вашего проверяемого сниппета
?>
Да добавлю, что ваш сниппет должен выводить какой то контент, иначе блок с данным сниппетом не будет показан на странице. После проверки сниппета не забывайте удалять этот файлик.
Проверка запускается через ваш-сайт/test.php
Еще один вариант проверки сниппета (который мне подсказали на www.drupal.ru), создать новый материал или комментарий и поместить ваш сниппет в тело вашего материала, и затем нажав конопку "Предпросмотр" (Preview) для просмотра полученного результата, при этом не забыв предварительно установить формат ввода для материала в PHP code.
Правило №4. А по значимости, наверное, первое. После установки Друпала (если вы впервые с ним работаете), пройдитесь по всем настройкам системы, и постарайтесь понять как те или иные настройки влияют на содержание и на представление контента вашего сайта.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 9261 просмотр
Бренд особенной одежды BANAN. Для нас создают мировые звезды дизайна.
Спасибо за статью, очень полезная
Правило №1 концептуально понятно, но вот на практике... начиная с того что я не понял запись sites/[all|ваша-сайт]/themes, т.е. может быть sites/all/themes либо sites/имя_вашего_сайта/themes? Если я хочу подправить "стандартную" тему (bluemarine), мне её копировать в sites\all\themes, создавая такую папку, т.к. в sites\all после установки лежит только readme.txt. Если копировать, то из корневая\themes\ удалять скопированную тему?
Вобщем после часа моих глупостей я так и не смог на Друпале 6.6 сделать то, что в качестве примера приводится у вас в правиле №1, т.е. ни цвет поменять, ни заголовок в комментах убрать.
Тут все просто, надо только понимать в каком порядке идет поиск темы. А идет он от самого «детализированного» к более «универсальному».
Т.е. на примере данного сайта (для темы bluemarine) поиск тем (даже с одинаковым идентификатором), будет происходить следующим образом:
причем, тема записанная выше в данном списке, будет «перекрывать» тему расположенную ниже, из чего следует, что старую тему стирать не надо, и достаточно ее скопировать в каталог с большим приоритетом, и уже там производить необходимые изменения.
Спасибо большое за ответ. Суть ясна, но вот эти пути:
Есть у меня на локальной машинке под denwer'ом папка Green-Chest, в ней стоит Drupal (т.е. его install.php, index.php находятся именно в этой папке), таким образом не понятно:
Какая разница между sites/www.hotel-prog.ru/themes/bluemarine и sites/hotel-prog.ru/themes/bluemarine? это какое-то смешение локальных путей (физических) и url-ов... Какой у меня будет директория, в которой будет первой осуществлятся (друпалом) поиск тем?
Я ошибаюсь (и ничего не понял:) ) или после установки движка, существует только вот эта themes/bluemarine директория, остальные из вашего списка по необходимости можно создать самому, так?
Не заморачивайтесь пока с sites/ваш-сайт и т.п.
в папке sites у вас уже должно быть как минимум две дирректории all и default,
вот в all создайте папку themes (руками), в эту папку скопируйте нужную вам тему (включая саму папку с темой).
В итоге у вас дожна получится такая струтура
sites/all/themes/blumarine/тут файлы темы (page.tpl.php, style.css ...) - вот здесь и правте тему
PS. не забудтье после изменений сбросывать кэшь
Огромное спасибо. Буду пробовать.
Кэширование я вообще пока отключил в админке.
Очень полезная статья. Большое Спасибо!