Drupal: передача переменной из препроцессора в template.php?
Как получить значение из функции предварительной обработки в template.php в функции с именем sitename_modulename_user_loginblock($form)?
Я создал значение в функции предварительной обработки с помощью пользовательского запроса, чтобы я мог сделать это в самой функции loginblock, но там доступна только форма $ form, и мне нужны 3 другие переменные для построения запроса.
функция loginblock возвращает $ output, который является разметкой и несколькими переменными. afaik нет никакого дополнительного шага между этой функцией и отображением ее возвращаемого значения на странице?
2 ответа
Чтобы перейти от функции предварительной обработки к template.php, заполнить массив $vars[], указанным вами ключом будет имя переменной в шаблоне, а значение значение переменной так:
$vars['foo'] = "bar";
в вашем препроцессоре функция создаст в вашем шаблоне $ foo со значением "bar"
Я немного озадачен тем, что вы пытаетесь сделать. В идеале logingblock должен быть блоком, а не чем-то созданным в препроцессе. Вы можете посмотреть на эту опцию.
Как сказал Джереми, не совсем понятно, что вы хотите сделать, поэтому, возможно, вам следует отредактировать свой вопрос, чтобы уточнить.
Для меня это звучит так, как будто вы хотите переопределить значение по умолчанию user_login_block()
функция с пользовательской версией в ваших темах template.php. Если это так, вы не можете передавать туда переменные из функции предварительной обработки, поскольку они только подготавливают переменные для соответствующих им файлов *.tpl.php.
Эта статья о переопределении функций форм может быть полезна, в зависимости от того, чего вы хотите достичь.
Наименование является значительным. Чтобы функция работала как переопределение, вам нужно назвать ее themename_user_loginblock($form)
,