3

我正在尝试创建一个带有 drupal 模块的块。我无法让它显示在我的阻止列表中。我尝试了很多不同的教程,即使只是复制粘贴,它仍然没有出现。可能是我的drupal设置中的任何东西阻止我的模块块出现吗?或者代码有什么问题吗?

模块显示并被激活。

这是我现在的代码:

hidden_ ​​contest_form.info 我正在尝试创建一个带有 drupal 模块的块。我无法让它显示在我的阻止列表中。我尝试了很多不同的教程,即使只是复制粘贴,它仍然没有出现。可能是我的drupal设置中的任何东西阻止我的模块块出现吗?或者代码有什么问题吗?

模块显示并被激活。

这是我现在的代码:

直升机竞赛表格信息

;$Id$
name = Helicopter contest form
description = Block module with a contest form
core = 7.x
package = My modules
files[] = helicopter_contest_form.module

直升机竞赛表格模块

 /**
* Implements hook_block_info().
*/
function membercount_block_info() {
 $blocks = array ();

$blocks['count_members'] = array (
'info' => t('Count Members'),
'cache' => DRUPAL_NO_CACHE,
);

return $blocks;
}

/**
* Implements hook_block_view().
*/
function membercount_block_view($name) {

if ($name == 'count_members') {
$count = db_query('SELECT COUNT(uid) - 1 FROM {users}')->fetchField();

$content = format_plural($count, 'This site has 1 user.', 'This site has @count users.');

$block = array (
  'subject' => t('Members'),
  'content' => $content,
);

return $block;
 }
 }

在旁注中,我如何一次将所有代码缩进 4 个空格?我必须手工完成每一行,这也破坏了我的缩进......

4

2 回答 2

4

在实现钩子时,您应该将钩子名称中的“hook”替换为模块的短名称,因此只需将函数的名称从更改membercount_block_infohelicopter_contest_form_block_info(与“hook_block_view”相同)。

此外,实际上不需要files[] = helicopter_contest_form.module在 .info 文件中提及,因为无论如何都需要 .module 。

于 2012-11-27T11:04:11.697 回答
2

尝试将代码调整为:

/**
 * Implements hook_block_info().
 * This hook declares what blocks are provided by the module.
 */
function helicopter_form_info() {
    $blocks = array(); // the added line.
    $blocks['helicopter_form'] = array(
        'info' => t('Helicopter'),
        'cache' => DRUPAL_CACHE_PER_ROLE,
    );
    return $blocks;
}

我知道这很奇怪,但是我曾经遇到过同样的问题,并且在添加该行后它就起作用了。

于 2012-11-27T10:41:02.433 回答