Drupal:将变量从预处理传递给template.php?

时间:2009-10-28 11:00:36

标签: php drupal preprocessor

如何在一个名为sitename_modulename_user_loginblock($ form)的函数中从preprocess函数获取一个值到template.php?

我使用自定义查询在预处理函数中创建了值,所以我可以在loginblock函数本身中执行此操作,但只有$ form可用,我需要3个其他变量来构造查询。

loginblock函数返回$ output,即标记和一些变量。 afaik这个函数和它在页面上显示返回值之间没有额外的步骤吗?

2 个答案:

答案 0 :(得分:1)

从预处理函数传递到template.php填充$ vars []数组,您指定的键将是模板中的变量名,值变量值为:

$vars['foo'] = "bar";
预处理函数中的

将在模板中创建$ foo,其值为“bar”

我对你要做的事感到有些困惑。理想情况下,logingblock将是一个块,而不是在预处理中创建的东西。您可能想看看该选项。

答案 1 :(得分:0)

正如杰里米所说,你想要做的事情并不是很清楚,所以也许你应该编辑你的问题来澄清。

对我而言,听起来好像要在主题template.php中使用自定义版本覆盖默认的user_login_block()功能。如果是这种情况,则不能从预处理函数传递变量,因为那些只为相应的* .tpl.php文件准备变量。

article on overriding form functions可能会有所帮助,具体取决于您希望实现的目标。

命名很重要。要使该函数作为覆盖,您必须将其命名为themename_user_loginblock($form)