我觉得我必须非常接近,但我只是稍微没有正确渲染我的第一个Drupal模块(当然下一步是通过ajax提交和处理表单,猜猜我不是相当远离树林)
无论如何,从“Pro Drupal Development 7”开始,阅读并在堆栈上询问一些问题,我已经达到了设置Drupal模块的程度。
\sites\all\modules\custom\mymodule
---- mymodule.info
---- mymodule.css
---- mymodule.js
---- mymodule.tpl
---- mymodule.module
所有要求似乎都能正常运行,以便将模块放入我的阻止列表,CSS和&如果我选择查看源代码,则JS在页面上可见。
出于测试目的,我的TPL文件中包含以下内容。
<h1> HERE </h1>
模块文件(根据我的理解,它是我编写主题钩子的地方)具有以下(从我收集的内容)关键功能。
function mymodule_theme($existing, $type, $theme, $path){
return array(
'mymodule' => array(
'variables' => array('content' => "FOO"),
'file' => 'mymodule',
'path' => drupal_get_path('module', 'mymodule')
)
);
}
function mymodule_page(){
$content = "";
return theme('mymodule', $content);
}
我很确定我只是有一个小的,相对简单的问题 - 但是我自己已经打了一个小时。有谁知道答案,我在这里错过了什么?
谢谢!
答案 0 :(得分:3)
嘿,未来发现这个的人...事实证明,在drupal中呈现页面视图的函数是<modulename>_block-view
该块的内容是什么被渲染。
function mymodule_block_view($delta = '') {
$build['mymodule'] = array(
'#theme' => 'mymodule',
'#title' => "FOO"
);
$block['subject'] = t('Title of second block (example_empty)');
// $block['content'] = drupal_render($build); // this was wrong
$block['content'] = $build;
return $block;
}
我通过下载和单步执行
中的代码找到了示例http://drupal.org/project/examples
专门解压缩并将此http://ftp.drupal.org/files/projects/examples-7.x-1.x-dev.zip安装到/sites/all/modules
,您可以在自己的drupal网站上看到实时示例,而单步执行代码。
注意:以下NMC的答案是正确的,因为模块文件必须重命名为mymodule.tpl.php
编辑根据下面的评论,不需要在注释掉的行上进行drupal_render
调用。它在一个环境中工作,但在另一个环境中不工作。最好不要为了一致性而这样做。
答案 1 :(得分:1)
尝试
function mymodule_theme($existing, $type, $theme, $path){
return array(
'mymodule' => array(
'variables' => array('content' => "FOO"),
'template' => 'mymodule',
)
);
}
并将您的mymodule.tpl
重命名为mymodule.tpl.php