无法使用drupal模块创建块

时间:2012-11-27 10:22:51

标签: php drupal drupal-7 drupal-modules

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

模块显示并激活。

这是我现在的代码:

helicopter_contest_form.info 我正在尝试创建一个drupal模块附带的块。我不能让它显示在我的阻止列表中。我尝试了很多不同的教程,甚至只是复制粘贴,它仍然没有出现。在我的drupal设置中是否可以阻止我的模块阻止显示?或者代码中有什么问题吗?

模块显示并激活。

这是我现在的代码:

helicopter_contest_form.info

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

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个空格?我必须手工完成每一行,它也会破坏我的缩进......

2 个答案:

答案 0 :(得分:4)

在实现钩子时,你应该用你的模块的短名称替换钩子名称中的“hook”,所以只需将你的函数名称从membercount_block_info更改为helicopter_contest_form_block_info(对于“hook_block_view”也是如此) )。

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

答案 1 :(得分: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;
}

我知道这很奇怪,但我有一次相同的问题,并且在我添加该行之后它才有用。

希望这有效......穆罕默德。

相关问题