Рабочий процесс функций Drupal в модуле - PullRequest
0 голосов
/ 25 августа 2009

Я немного новичок в тематике Drupal и не могу получить ни одной детали по тематике модулей форума.

файл forum.module содержит функцию forum_theme, которая управляет темой этого модуля и имеет эту строку

function forum_theme() {
......
'forum_list' => array(
  'template' => 'forum-list',
  'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
),

Я также вижу forum-list.tpl.php файл в каталоге форума, поэтому я начинаю задумываться, когда этот файл вызывается и откуда он получает данные, но все, что я могу найти в forum.module, это эта функция.

function template_preprocess_forum_list(&$variables) 

Я что-то упустил? В общем, мой вопрос в том, кто и когда вызывает пользовательскую зарегистрированную функцию темы, например forum_list

1 Ответ

0 голосов
/ 25 августа 2009

Простой ответ - если вы поместите mytheme-forum-list.tpl.php (где mytheme - название вашей темы) и настроите его, drupal должен его забрать (сначала очистите кеш).

Эта строка в template_preprocess_forum вызывает функцию темы Drupal

$variables['forums'] = theme('forum_list',
                              $variables['forums'],
                              $variables['parents'],
                              $variables['tid']);

Это будет ссылаться на строку в forum_theme ()

  'forum_list' => array(
      'template' => 'forum-list',
      'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
    ),

Что говорит шаблонному движку искать forum-list.php и предоставляет аргументы.

Если вы установили модуль devel и включили модуль разработчика темы. Это покажет вам все возможные шаблоны и функции, которые Drupal будет искать при рендеринге контента.

В общем (но с конкретными исключениями) Drupal ищет шаблон наилучшего соответствия и возвращается к предопределенным функциям.

если нет ничего подходящего. Посмотрите руководство по теме и, в частности, раздел по Переопределение выводимого значения . Также вы можете найти hook_theme , представляющий интерес.

...