我创建了一个模块,该模块应该能够显示某种内容类型的内容。该显示有点复杂,为了能够将其关闭并将所有内容分组在一起,我为此创建了一个模块。
但是最后,它应该只是使用自定义的.tpl.php文件覆盖普通的node.tpl.php。当我将文件放在模板文件夹中时,它会被拾取,页面按预期显示,但是当文件在模块文件夹中时,我无法使它工作。
我阅读了很多有关regsiter .tpl文件和预处理的内容,但没有任何内容可以组合我所需的内容。
这就是我到目前为止
function apps_theme($existing, $type, $theme, $path) {
$items = array(
'node--app' => array(
'template' => drupal_get_path('module', 'app') . '/node--app',
'variables' => array('node' => (object)array())
)
);
return $items;
}
function apps_preprocess_node(&$vars) {
$variables['theme_hook_suggestions'][] = 'node__app';
}
1
我可能对此有所呼吁,但以我的看法(不是这样),一个模块不应该关心节点在显示时的外观,它所关心的只是将数据传递给主题,然后该主题显示部分。现在,如果您希望模块创建一个显示在节点中的自定义对象,那就是另一回事了,那么您可以为此创建一个模板。但是,如果您想缩短该步骤,则将node.tpl.php放入主题目录是唯一的“正确”方法。
—
Jimajamma 2011年
如果有人希望在Drupal 6中专门执行此操作,请查看以下答案:stackoverflow.com/a/6153043/1154642
—
bryanbraun