2009-10-28 4 views
2

Как я могу получить значение из функции preprocess в template.php в функции с именем sitename_modulename_user_loginblock ($ form)?Drupal: передача переменной от preprocess к template.php?

Я создал значение в функции preprocess с пользовательским запросом, чтобы я мог сделать это в самой функции loginblock, но там есть только $ form, и мне нужно 3 других переменных для построения запроса.

Функция loginblock возвращает $ output, который является разметкой и несколькими переменными. afaik нет дополнительного шага между этой функцией и отображением ее возвращаемого значения на странице?

ответ

1

перейти от функции Preprocess к template.php заселить $ вары [] массив, ключ, который вы определяете, будет имя переменной в шаблоне, а значение переменной значение так:

$vars['foo'] = "bar"; 

в вашей функции препроцесса создаст $ foo в вашем шаблоне со значением «bar»

Я немного смущен тем, что вы пытаетесь сделать. Идеально logingblock был бы блоком, а не чем-то, созданным в препроцессе. Возможно, вам захочется взглянуть на этот вариант.

+0

Я тоже не уверен, но я думаю, что он не означает передачу переменных в файл шаблона, а в функцию, переопределенную в файле temp.php тем, что было бы невозможно, afaik. –

0

Как сказал Джереми, на самом деле не совсем понятно, что вы хотите сделать, поэтому, возможно, вам следует отредактировать свой вопрос, чтобы уточнить.

Мне кажется, что вы хотите переопределить функцию по умолчанию user_login_block() с пользовательской версией в ваших шаблонах temp.php. Если это так, вы не можете передавать переменные из функции препроцесса, поскольку они только готовят переменные для соответствующих файлов * .tpl.php.

Возможно, это article on overriding form functions, в зависимости от того, чего вы хотите достичь.

Именование значимо. Чтобы функция работала как переопределение, вы должны назвать ее themename_user_loginblock($form).