2012-03-27 4 views
0

В модуле, который я разрабатываю, я использую следующий код.Передача переменных в файл шаблона

function mymodule_page_alter(&$page) { 
    global $user; 

    $page['sidebar_first'] = array(
    '#markup' => 'text for first sidebar' 
); 
} 

Как загрузить файл шаблона HTML в первую панель и передать несколько переменных? Возможно, это будет что-то вроде следующего кода.

$page['sidebar_first'] = array(
    '#template' => path, 
    '#variables' => array(), 
); 

ответ

0

Вам необходимо использовать атрибут «#theme», например, в следующем коде.

$build['dblog_table'] = array(
    '#theme' => 'table', 
    '#header' => $header, 
    '#rows' => $rows, 
    '#attributes' => array('id' => 'admin-dblog'), 
    '#empty' => t('No log messages available.'), 
); 

#theme рассказывает Drupal, которая нуждается в тему вызываемой функции; другие свойства, если они уже используются для другой цели, используются как имена переменных для перехода к функции темы или файла шаблона, если они используются. В этом случае theme_table() получит следующий массив.

array(
    'header' => $header, 
    'rows' => $rows, 
    'attributes' => array('id' => 'admin-dblog'), 
    'empty' => t('No log messages available.'), 
); 

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

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

function mymodule_theme($existing, $type, $theme, $path) { 
    return array(
    'mymodule_sidebar' => array(
     'variables' => array('topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL), 
     'template' => 'mymodule-display', 
    ), 
); 
} 

Функция темы затем будет использоваться с чем-то похожим на следующий код.

$page['sidebar_first'] = array(
    '#theme' => 'mymodule_sidebar', 
    '#topics' => array('first topic', 'second topic', 'third topic'), 
    '#parents' => array('my topics', 'my friend's topics'), 
); 

Переменные, которые не получают явное значение получит по умолчанию один сообщается в hook_theme(); в этом случае значение по умолчанию для используемых переменных равно NULL.