Drupal 7 - 不使用节点表单模板
Drupal 7 - node Form template is not used
我对一种节点类型及其形式有疑问。我想用模板文件改变它。我已经在我的 drupal 站点上使用另一种节点类型完成了此操作并且有效,但它不适用于第二种类型。
所以(就像我对其他节点类型所做的那样)我将这个挂钩放在我的模块中:
function MY_MODULE_theme($existing, $type, $theme, $path) {
return array(
'FORM_ID' => array(
'arguments' => array(
'form' => NULL,
),
'render element' => 'form',
'template' => 'TYPE-node-form',
'path' => drupal_get_path('module', 'MY_MODULE'),
),
);
}
并且还声明了这个函数(在我的模块中):
function template_preprocess_TYPE_node_form(&$variables) {
/* Some hide(elements) and stuff */
}
当然,我在模块目录
中创建了文件 TYPE-node-form.tpl.php
/* Something */
TEST
<?php if($form): ?>
<?php print drupal_render_children($form); ?>
<?php endif; ?>
/* Something more */
但它不加载此模板(我看不到 TEST 和其他内容)。同样经过多次清除缓存和刷新。
使用 DisplaySuite,我能够在后端设置模板(管理 » 结构 » 内容类型 » 类型 » 管理字段)。但我想拥有自己的模板文件(并且也不位于 sites/all/modules/ds/layout/.. 文件夹中)。停用 DisplaySuite 也不起作用。
我也试图将 MY_THEME_theme()
代码放入管理员主题的 template.php 文件中,但它也没有用。
有什么建议吗?我能做什么?有没有办法找出使用了哪个模板或在哪里被覆盖?我读过 Themes overwrite modules templates declaration?!
如果您使用的是 D7,hook_theme
实现没有 'arguments'
键,但是 'variables'
。
同样在这种情况下,删除 'arguments'
或 'variables'
键以使 'render element'
起作用。希望这会有所帮助。
最终代码:
function MY_MODULE_theme($existing, $type, $theme, $path) {
return array(
'FORM_ID' => array(
'render element' => 'form',
'template' => 'TYPE-node-form',
'path' => drupal_get_path('module', 'MY_MODULE'),
),
);
}
我对一种节点类型及其形式有疑问。我想用模板文件改变它。我已经在我的 drupal 站点上使用另一种节点类型完成了此操作并且有效,但它不适用于第二种类型。
所以(就像我对其他节点类型所做的那样)我将这个挂钩放在我的模块中:
function MY_MODULE_theme($existing, $type, $theme, $path) {
return array(
'FORM_ID' => array(
'arguments' => array(
'form' => NULL,
),
'render element' => 'form',
'template' => 'TYPE-node-form',
'path' => drupal_get_path('module', 'MY_MODULE'),
),
);
}
并且还声明了这个函数(在我的模块中):
function template_preprocess_TYPE_node_form(&$variables) {
/* Some hide(elements) and stuff */
}
当然,我在模块目录
中创建了文件 TYPE-node-form.tpl.php/* Something */
TEST
<?php if($form): ?>
<?php print drupal_render_children($form); ?>
<?php endif; ?>
/* Something more */
但它不加载此模板(我看不到 TEST 和其他内容)。同样经过多次清除缓存和刷新。
使用 DisplaySuite,我能够在后端设置模板(管理 » 结构 » 内容类型 » 类型 » 管理字段)。但我想拥有自己的模板文件(并且也不位于 sites/all/modules/ds/layout/.. 文件夹中)。停用 DisplaySuite 也不起作用。
我也试图将 MY_THEME_theme()
代码放入管理员主题的 template.php 文件中,但它也没有用。
有什么建议吗?我能做什么?有没有办法找出使用了哪个模板或在哪里被覆盖?我读过 Themes overwrite modules templates declaration?!
如果您使用的是 D7,hook_theme
实现没有 'arguments'
键,但是 'variables'
。
同样在这种情况下,删除 'arguments'
或 'variables'
键以使 'render element'
起作用。希望这会有所帮助。
最终代码:
function MY_MODULE_theme($existing, $type, $theme, $path) {
return array(
'FORM_ID' => array(
'render element' => 'form',
'template' => 'TYPE-node-form',
'path' => drupal_get_path('module', 'MY_MODULE'),
),
);
}