function posts_theme($existing, $type, $theme, $path) {
return array(
'post_node_form' => array(
'arguments' => array('form' => NULL),
'template' => VARIABLE,
)
);
}
这是建议模板在Drupal 6中呈现'post_node_form'的方式。但我想从2个不同的路径获取节点编辑表单:
如果我根据路径(或任何其他条件)替换“VARIABLE”,它将无法工作,因为它似乎?缓存模板的名称,您需要刷新缓存以刷新它。
建议使用不同表单模板的任何解决方案?
请注意。这不是节点模板的情况(然后您可以将模板建议放在预处理挂钩中)。这是关于节点FORM。
答案 0 :(得分:0)
将此函数添加/或修改(如果存在)到您主题的template.php中:
function phptemplate_preprocess_page(&$vars) {
// ...
$node = menu_get_object();
if ($node->type == 'post') {
$vars['template_files'][] = VARIABLE;
}
// ...
}
答案 1 :(得分:0)
好的,我回答了我自己的问题:
解决方案的关键是钩子preprocess_NAME_OF_MY_FORM
,它在每个页面加载时执行,可以在您的模块或主题中。
所以在我的案例中,我在“posts”模块中写道:
/**
* Implementation of hook_theme().
*/
function posts_theme($existing, $type, $theme, $path) {
return array(
'post_node_form' => array(
'arguments' => array('form' => NULL),
'template' => 'post-form-custom',
)
);
}
function posts_preprocess_post_node_form(&$vars) {
// I check the path to know if node_form is retrieve through normal way or ajax way.
if (check_plain(arg(0)) == 'node'){
$vars['template_files'][] = 'post-form-default';
}
}
我的模块文件夹中包含文件post-form-custom.tpl.php
和post-form-default.tpl.php