Система темизации
Функции и шаблоны, которые выводят содержимое посетителю, и которые могут быть внедрены с помощью тем.
Уровень представления Друпала реализован в виде модульной системы — уровня темы (theme layer). Каждая тема контролирует почти весь вывод Друпала и имеет полный контроль над CSS.
Внутри Друпала, уровень темы реализуется с помощью функции theme()
, которая передает имя компоненты темы (хук темы) и аргументы. Пример: theme('table', $header, $rows)
.
Также функция theme()
может содержать массив хуков темы, которые могут быть использованы для реализации “fallback” (использования встроенной функции темы, если не будет найден более специфичный хук), для лучшего контроля вывода. Пример: функция theme(array('table__foo', 'table'), $header, $rows)
попытается найти хук 'table__foo'
, а если не найдет, то будет использована встроенная функция темизации 'table'
.
Эта возможность может быть использована для присвоения специфических функций темы именованным объектам, давая дизайнерам-авторам больше контроля над выводом специфических типов содержимого.
Начиная с 6-ой версии Друпала, каждый хук темизации, определенный в модуле, нужно зарегистрировать в этом модуле, чтобы Друпал знал, где искать этот хук, и чтобы упростить темам поиск и модификацию этих хуков.
Хуки темизации регистрируются в hook_theme()
. Этот хук должен возвращать массив описаний хуков темизации, которые реализованы в данном модуле. Каждое из описаний в свою очередь является ассоциативным массивом. Должны быть описаны параметры, которые требуются каждой функции или шаблону уровня темы, а также значения по умолчанию для всех этих параметров. Если хук темизации реализуется как функция, то по умолчанию она называется theme_HOOK()
.
Каждый модуль должен предоставить свою реализацию для всех хуков темизации, которые он регистрирует. Реализация может быть как в виде функции, так и в виде шаблона; реализации-функции необходимо указать в hook_theme()
. По соглашению считается, что реализации хуков темизации в виде функций должны называться theme_HOOK()
. Реализации хуков темизации в виде шаблонов должны находиться в одной директории с модулем, определяющим эти хуки.
Стандартный обработчик шаблонов Друпала просто выполняет шаблон как скрипт PHP и возвращает результат. Движок тем Друпала можно расширить, добавив поддержку альтернативных обработчиков шаблонов, таких как XTemplate, Smarty или PHPTal. Чаще всего темы Друпала используют движок под названием PHPTemplate (входит в стандартную поставку Друпала, файл phptemplate.engine), использующий стандартный обработчик шаблонов Друпала.
Для того, чтобы в теме реализовать собственную версию какого либо хука темизации, нужно переопределить хук как функцию или шаблон. Такие реализации перекрывают реализацию по умолчанию хука. В «чистой» теме (теме, не использующей какой-либо движок тем) необходимо в файле темы реализовать хук hook_theme()
и сообщить в нем Друпалу о всех хуках темизации, которые тема реализует; в темах, пользующихся движками тем, хуки темизации, названные соответствующим образом, регистрируются автоматически. Соглашения по названию хуков могут зависеть от движка тем, но большинство придерживаются стандарта, заданного PHPTemplate: функции должны носить название ENGINE_HOOK()
(в случае PHPTemplate — phptemplate_HOOK()
) или THEMENAME_HOOK()
. Например, движок PHPTemplate будет искать реализацию хука 'table'
в стандартной теме Друпала (Garland) в функциях phptemplate_table()
и garland_table()
. Синтаксис ENGINE_HOOK()
предпочтительнее, поскольку функции с такими именами будут видны и из подтем (тем с общим кодом но разными таблицами стилей).
Система темизации реализуется в файле theme.inc.
Смотри также
Функция theme()
, хук hook_theme()
Функции
Имя | Описание |
---|---|
phptemplate_menu_local_tasks themes/garland/template.php | Returns the rendered local tasks. The default implementation renders them as tabs. Overridden to split the secondary tasks. |
theme_admin_block modules/system/system.admin.inc | Темизирует блок (внутри контента) на страницах администрирования. |
theme_admin_block_content modules/system/system.admin.inc | Функция форматирует контент административного блока. |
theme_admin_page modules/system/system.admin.inc | Форматирует административную страницу для отображения. |
theme_aggregator_page_opml modules/aggregator/aggregator.pages.inc | Темизирует вывод новостной ленты в формате OPML. |
theme_aggregator_page_rss modules/aggregator/aggregator.pages.inc | Темизирует вывод RSS. |
theme_blocks includes/theme.inc | Возвращает набор блоков, доступных для текущего пользователя. |
theme_book_admin_table modules/book/book.admin.inc | Theme function for the book administration page form. See alsobook_admin_table() |
theme_book_title_link modules/book/book.module | Generate the HTML output for a link to a book title when used as a block title. Генерирует вывод HTML-кода для заголовка книги, при использовании в качестве заголовка блока. |
theme_box includes/theme.inc | Возвращает темизированный бокс(область, контейнер). |
theme_breadcrumb includes/theme.inc | Возвращает темизированные хлебные крошки (полоса иерархической навигации. Например: Главная > Каталог > Принтеры > Лазерные) |
theme_button includes/form.inc | Форматирует кнопку для формы. |
theme_checkbox includes/form.inc | Темизирует чекбокс. |
theme_checkboxes includes/form.inc | Изменяет стиль сразу нескольких чекбоксов. |
theme_closure includes/theme.inc | Выполняет hook_footer() который выполняется в конце страницы и расположен перед тегом, закрывающим тело документа (</body>). |
theme_color_scheme_form modules/color/color.module | Темизирует форму выбора расцветки темы оформления. |
theme_comment_admin_overview modules/comment/comment.admin.inc | Темизирует форму комментирования администратора. |
theme_comment_controls modules/comment/comment.module | Темизирует область(бокс) контроля комментариев, где пользователь может изменить отображение по умолчанию и упорядочить их показ. |
theme_comment_flat_collapsed modules/comment/comment.module | Темизирует комментарий в сжатом виде. |
theme_comment_flat_expanded modules/comment/comment.module | Темизирует комментарий в раскрытом виде. |
theme_comment_post_forbidden modules/comment/comment.module | Темизирует уведомление "вы не можете оставить комментарий". |
theme_comment_submitted modules/comment/comment.module | Темизирует информацию об авторстве комментария. |
theme_comment_thread_collapsed modules/comment/comment.module | Темизирует комментарии в свёрнутом виде. |
theme_comment_thread_expanded modules/comment/comment.module | Темизирует комментарии в развёрнутом виде. |
theme_comment_view modules/comment/comment.module | Темизировать блок с единичным комментарием |
theme_date includes/form.inc | Форматирует дату выбранного элемента. |
theme_dblog_filters modules/dblog/dblog.module | Theme dblog administration filter selector. |
theme_feed_icon includes/theme.inc | Возвращает код, который выдает иконку новостной ленты. |
theme_fieldset includes/form.inc | Форматирует группу элементов формы |
theme_file includes/form.inc | Форматирует поле загрузки файла. |
theme_filter_admin_order modules/filter/filter.admin.inc | Темизирует форму конфигурации порядка фильтров. |
theme_filter_admin_overview modules/filter/filter.admin.inc | Theme the admin overview form. |
theme_filter_tips Форматирование подсказок по редактированию modules/filter/filter.pages.inc | Форматирование подсказок по редактированию |
theme_filter_tips_more_info modules/filter/filter.module | Format a link to the more extensive filter tips. |
theme_form includes/form.inc | Темизирует форму. |
theme_form_element includes/form.inc | Возвращает темизированный элемент формы. |
theme_help includes/theme.inc | Возвращает темизированное сообщение справки. |
theme_hidden includes/form.inc | Форматирует скрытое поле формы. |
theme_image includes/theme.inc | Возвращает темизированную картинку. |
theme_image_button includes/form.inc | Темизирует кнопку-картинку формы. |
theme_indentation includes/theme.inc | Создает стандартный
|
theme_item includes/form.inc | Возвращает темизированный элемент формы. |
theme_item_list includes/theme.inc | Возвращает темизированный список. |
theme_links includes/theme.inc | Возвращает темизированный набор ссылок. |
theme_locale_languages_overview_form includes/locale.inc | Темизирует форму обзора языков сайта. |
theme_mark includes/theme.inc | Возвращает темизированный маркер, полезный для маркировки нового или обновленного содержимого. |
theme_menu_item includes/menu.inc | Генерирует HTML код для пункта меню и подменю. |
theme_menu_item_link includes/menu.inc | Генерирует вывод HTML данных для единичной ссылки меню. |
theme_menu_local_task includes/menu.inc | Создаёт HTML для ссылки на одну локальную задачу (рисует вкладку). |
theme_menu_local_tasks includes/menu.inc | Returns the rendered local tasks. The default implementation renders them as tabs. |
theme_menu_overview_form modules/menu/menu.admin.inc | Theme the menu overview form into a table. |
theme_menu_tree includes/menu.inc | Генерирует HTML-код, выводимый для дерева меню. |
theme_more_help_link includes/theme.inc | Returns code that emits the 'more help'-link. |
theme_more_link includes/theme.inc | Returns code that emits the 'more' link used on blocks. |
theme_node_add_list modules/node/node.pages.inc | Выводит список доступных типов контента для создания нод. |
theme_node_admin_nodes modules/node/node.admin.inc | Theme node administration overview. |
theme_node_filters modules/node/node.admin.inc | Theme node administration filter selector. |
theme_node_filter_form modules/node/node.admin.inc | Theme node administration filter form. |
theme_node_form modules/node/node.pages.inc | Выводит форму добавления ноды. |
theme_node_list modules/node/node.module | Форматирует список ссылок на ноды. |
theme_node_log_message modules/node/node.module | Темизирует сообщения системного журнала. |
theme_node_preview modules/node/node.pages.inc | Отображает предпросмотр ноды во время ее создания и редактирования. |
theme_node_search_admin modules/node/node.module | Theme the content ranking part of the search settings admin page. |
theme_node_submitted modules/node/node.module | Формат представления "Опубликовано _пользователем_ в _дата/время_" для каждой ноды |
theme_pager includes/pager.inc | Темизирует "листалку" страниц. |
theme_pager_first includes/pager.inc | Форматирует ссылку "первая страница". |
theme_pager_last includes/pager.inc | Форматирует ссылку "последняя страница". |
theme_pager_link includes/pager.inc | Форматирует ссылку на определенную запрошенную страницу. |
theme_pager_next includes/pager.inc | Форматирует ссылку "следующая страница". |
theme_pager_previous includes/pager.inc | Форматирует ссылку "предыдущая страница". |
theme_password includes/form.inc | Форматирует поле ввода пароля. |
theme_password_confirm includes/form.inc | Форматирует пункт подтверждения пароля. |
theme_placeholder includes/theme.inc | Formats text for emphasized display in a placeholder inside a sentence. Used automatically by t(). |
theme_poll_choices modules/poll/poll.module | Theme the admin poll form for choices. |
theme_profile_admin_overview modules/profile/profile.admin.inc | Theme the profile field overview into a drag and drop enabled table. See alsoprofile_admin_overview() |
theme_progress_bar includes/theme.inc | Возвращает темизированный индикатор выполнения. |
theme_radio includes/form.inc | Форматирует одиночный переключатель (радио-кнопку) для их группы. |
theme_radios includes/form.inc | Форматирует сразу несколько радио-кнопок. |
theme_select includes/form.inc | Format a dropdown menu or scrolling selection box. |
theme_status_messages includes/theme.inc | Возвращает темизированные сообщения статуса и/или ошибок. Сообщения сгруппированы по типу. |
theme_status_report modules/system/system.admin.inc | Темизирует отчет о статусе системы. |
theme_submenu includes/theme.inc | Возвращает темизированное подменю, обычно отображается под вкладками. |
theme_submit includes/form.inc | Форматирует кнопку отправки формы. |
theme_syslog_format modules/syslog/syslog.module | Изменяет стиль записи в системном журнале. |
theme_system_admin_by_module modules/system/system.admin.inc | Темизирует вывод страницы администрирования по модулям. |
theme_system_modules modules/system/system.admin.inc | Темизирует форму модулей. |
theme_system_modules_uninstall modules/system/system.admin.inc | Темизирует таблицу отключенных на данный момент модулей. |
theme_system_powered_by modules/system/system.module | Форматирует текст надписи "Powered by Drupal" (Создано на Друпале). |
theme_system_themes_form modules/system/system.admin.inc | Theme function for the system themes form. |
theme_system_theme_select_form modules/system/system.admin.inc | Темизирует форму выбора темы. |
theme_table includes/theme.inc | Возвращает темизированную таблицу. |
theme_tablesort_indicator includes/theme.inc | Возвращает темизированную иконку сортировки колонки таблицы. |
theme_table_select_header_cell includes/theme.inc | Возвращает ячейку заголовка для таблиц, имеющих функцию "Выделить все". |
theme_task_list includes/theme.maintenance.inc | Возвращает темизированный список эксплуатационных задач для выполнения. |
theme_taxonomy_overview_terms modules/taxonomy/taxonomy.admin.inc | Темизирует обзор терминов как сортируемый список. |
theme_taxonomy_overview_vocabularies modules/taxonomy/taxonomy.admin.inc | Темизирует обзор словарей как сортируемый список. |
theme_taxonomy_term_page modules/taxonomy/taxonomy.pages.inc | Рендерит HTML-представление страницы термина таксономии. |
theme_taxonomy_term_select modules/taxonomy/taxonomy.module | Format the selection field for choosing terms (by deafult the default selection field is used). |
theme_textarea includes/form.inc | Форматирует многострочное текстовое поле ввода для формы. |
theme_textfield includes/form.inc | Форматирует однострочное текстовое поле ввода. |
theme_token includes/form.inc | Темизирует токен формы. |
theme_trigger_display modules/trigger/trigger.admin.inc | Display actions assigned to this hook-op combination in a table. |
theme_update_report modules/update/update.report.inc | Темизирует сообщение о состоянии модуля или темы. |
theme_update_version modules/update/update.report.inc | Темизирует отображение версии проекта. |
theme_upload_attachments modules/upload/upload.module | Отображение прикрепленных файлов в виде таблицы. |
theme_upload_form_current modules/upload/upload.module | Темизирует список прикрепленных файлов (вложений). |
theme_upload_form_new modules/upload/upload.module | Темизирует форму для прикрепления вложений. |
theme_username includes/theme.inc | Форматирует имя пользователя. |
theme_user_admin_account modules/user/user.admin.inc | Theme user administration overview. |
theme_user_admin_new_role modules/user/user.admin.inc | Theme the new-role form. |
theme_user_admin_perm modules/user/user.admin.inc | Темизирует страницу управления разрешениями. |
theme_user_filters modules/user/user.admin.inc | Theme user administration filter selector. |
theme_user_filter_form modules/user/user.admin.inc | Theme user administration filter form. |
theme_user_list modules/user/user.module | Темизирует список пользователей. |
theme_user_profile developer/theme.php | Темизирует страницу профиля пользователя. |
theme_user_signature modules/user/user.module | Темизирует подпись пользователя. |
theme_xml_icon includes/theme.inc | Возвращает код, который отображает иконку XML. |