Помогите понять концепцию Drupal

Главные вкладки

Аватар пользователя paladin_solo paladin_solo 29 июля 2010 в 19:26

Здравствуйте. Сразу скажу Друпал знаю пару часов. Взял Drupal не по своей воле. Общее впечатление не самое хорошее, надеюсь это не надолго. Есть задание создать тему Drupal, то есть интегрировать html, css, js в шаблоны. Я как любитель хорошего стиля MVC был удивлён, что MVC в Друпале как-то "не по-русски" (не по-человечески) реализовано или я чего-то не разобрал. Помогите просветлить:
1) Модули - это и есть контроллеры?
2) З View ничего не понятно. Есть в теме только page.tpl.php, node.tpl.php ну и еще пару темплейтов стандартных. Там есть глобальная переменная $content. Опять же откуда она берётся?? Один темплейт page.tpl.php сгодиться только если страницы статические. А как сделать если я хочу что-нибудь вытянуть из базы, прописать что-нибудь в контроллере и передать данные в свой темплейт, приведите пример пожалуйста.
3) Не понял как реализовать переключение между страницами. Есть пару страниц, 1я страница - главная, приветствие и всё такое, 2я страница - форма для заполнения данных, 3я - поиск по базе.
4) Ноды - это типа статический контент?
5) Примеров сайтов на Друпале так и не нашёл для скачивания (имею ввиду примеры).

Спасибо за помощь.

Комментарии

Аватар пользователя romsla romsla 29 июля 2010 в 19:35

В самом верху данного форума есть ссылка "Документация", там все есть. Начните с нее, а дальше как пойдет.

Аватар пользователя md5@drupal.org md5@drupal.org 29 июля 2010 в 19:59

Пишу навскидку, голова под вечер уже не варит, за ошибки просьба ногами по почкам не пинать.
Грубо и утрированно:

1. запрос → модуль → ядро → шаблонизатор → браузер
2. запрос (→ модуль) → ядро → куча переменных → шаблонизатор → куски html-кода → шаблонизатор → браузер. $content — это основное содержимое ноды ($body + доп. поля + данные из модулей (если есть)).
3. система меню + ноды. Поковыряетесь детальнее — поймёте.
4. ноды это ни разу не статический контент. Запомните раз и навсегда. Это динамический контент, созданный путем сборки как в п.2.
5. а какие вам примеры надо? Объясните, пожалуйста.

Аватар пользователя direqtor direqtor 29 июля 2010 в 20:29

Как работает друпал? Пусть вы набрали в браузере имя сайта + какой-то там путь на нём. Путь передаётся ядру друпала через get-переменную q. Ядро системы выясняет какая функция, какого модуля отвечает за этот путь и сливает все дело ей. Весь HTML-код от этой функции попадает в переменную $content и выводится в шаблон page.tpl.php. Это вкратце.

Аватар пользователя Dan Dan 29 июля 2010 в 21:07

Друпал не разделяет процесс строго на MVC (или MVT в терминологии джанго). Естественно, разделение на код и шаблоны, данные и оформление есть. Только концепции другие.

"paladin_solo" wrote:
1) Модули - это и есть контроллеры?

Они могут содержат в себе всё - и модель и контроллер и виды, всё автоматически интегрируется в систему. Модели описываются в схемах ([ru-api=hook_schema]), виды (шаблоны) - это препроцесс (подготовка переменных, [ru-api=template_preprocess], как пример — формирование переменных для ноды — [ru-api=template_preprocess_node]) и собственно сами шаблоны, которые хранятся в *.tpl.php-файлах. Ну и контроллеры они же.

"paladin_solo" wrote:
Там есть глобальная переменная $content. Опять же откуда она берётся?

Это одна из переменных. Можно перехватить её формирование, можно сформировать свои. Почитайте документацию, в двух словах не объяснить.