Я думаю, что здесь есть два вопроса.Во-первых, как визуализируется / используется / отображается одна тема / шаблон, а во-вторых, как собирается весь сайт.Я думаю, что на второй вопрос уже был дан ответ выше, поэтому я попытаюсь объяснить первый немного подробнее.
Во-первых, модуль (вот почему существует system.module для всех этих вещей, которые толькомодуль может сделать то же самое, что реализация hook_menu ()) должна определить, что определенная функция / шаблон темы существует, объявив его в hook_theme ()
Говоря об этом, есть две разные вещикоторый можно использовать.Функция темы, которая является функцией с префиксом theme_.Часто используется для небольших элементов страницы с более сложной логикой / PHP, например theme_table () .И шаблон, который представляет собой файл с tpl.php, например page.tpl.php
Чтобы использовать функцию / шаблон темы, вы можете либо вызвать theme () вот так:
$output = theme('table', array('rows' => $rows, 'header' => $header));
Или вы можете использовать новую, так называемую вещь для рендеринга массива.Это в основном массив данных + информация, какую тему использовать:
$output = array(
'#theme' => 'table',
'#rows' => $rows,
'#header' => $header,
);
Второй вариант предпочтительнее, поскольку он означает, что он будет тематически как можно позже, и другие модули могут изменить его в хуках.Результат будет точно таким же, drupal_render () затем будет вызывать самой theme () во время окончательного рендеринга.
Когда вызывается theme (), он ищет используемую функцию / файл, проверяет, имеет ли онбыла переопределена используемая тема, если есть так называемые шаблонные предложения, а затем использует их.
Чтобы переопределить функцию темы в теме, скопируйте ее в файл template.php и замените «theme_» на «yourthemename_», если это файл tpl.php, скопируйте его в свой каталог.
Теперь окончательный процесс рендеринга в основном состоит в создании большого массива $ page, который представляет собой массив для рендеринга (некоторая документация по этому вопросу находится в hook_page_alter () и затем вызывается drupal_render () на нем.
Глобальная структура иерархии страниц / шаблонов (которая не жестко закодирована, а передается через все, что находится в $ page) выглядит примерно так:
html.php.tpl
head.php.tpl
page.php.tpl
multiple regions
multiple blocks
Почти все в Drupal 7 является блоком, включая фактический контент, который обычно является узлом. Тема определяет, какие области он имеет, и затем вы можете назначать ему блоки в пользовательском интерфейсе.