【发布时间】:2017-01-11 16:58:04
【问题描述】:
我对一种节点类型及其形式有疑问。我想用模板文件来改变它。我已经在我的 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文件中,也没有成功。
有什么建议吗?我能做些什么?有没有办法找出使用的模板或覆盖的位置?我读过主题覆盖模块模板声明?!
【问题讨论】:
标签: php forms templates drupal drupal-7