Drupal: передача переменной из препроцессора в template.php? - PullRequest
2 голосов
/ 28 октября 2009

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

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

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

Ответы [ 2 ]

1 голос
/ 28 октября 2009

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

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

в вашей функции preprocess создаст $ foo в вашем шаблоне со значением "bar"

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

0 голосов
/ 29 октября 2009

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

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

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

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

...