无法使用Drupal模块创建块

问题描述 投票:3回答:2

我正在尝试创建一个带有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个空格?我必须手动完成每一行,这也会破坏我的缩进...

php drupal drupal-7 drupal-modules
2个回答
4
投票

[实现钩子时,应将钩子名称中的“钩子”替换为模块的简称,因此只需将函数的名称从membercount_block_info更改为helicopter_contest_form_block_info(与“ hook_block_view”相同)。

而且,由于仍然需要.module,因此实际上不需要在.info文件中提及files[] = helicopter_contest_form.module


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;
}

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

© www.soinside.com 2019 - 2024. All rights reserved.