Drupal:自定义块不出现
Drupal: custom block doesn't appear
我是 Drupal 7 的新手,我正在按照此 tutorial.
通过代码创建块
所以我在 drupal/sites/all/modules 创建了一个新的模块文件夹并创建了两个文件:
block_square_menu.info: 它有模块的信息:
name = Block Square Menu
description = Module that create a Block for Square menu, menu shown only in home page
core = 7.x
package = custom
block_square_menu.module: 它包含 PHP 代码:
<?php
/**
* Implements hook_block_info().
*/
function block_square_block_info() {
$blocks = array();
$blocks['block_square'] = array(
'info' => t('Block Square'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function block_square_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'block_square':
$block['subject'] = t('block Title');
$block['content'] = t('Hello World!');
break;
}
return $block;
}
保存文件后,我转到Admin/Modules,激活新模块并保存配置。现在我去 Structure/Blocks 它应该列出我的新块,但它没有。
我已按照所有教程步骤进行操作并清理了 Drupal 缓存,但问题仍然存在。
首先解决你的错误:把你实现hook_block_view()的函数名改成函数blocks_square_block_view()
/**
* 实现 hook_block_view()。
*/
function blocks_square_block_view($delta = '') {
$block = array();
......
如果还没有解决,则从 hook_block_info() 中删除 'cache' 属性,它是可选的。
如果您错过了,请执行 2 个步骤。
1) 清除所有缓存 (/admin/config/development/performance).
2) 启用自定义模块 (/admin/modules).
重试后,您的区块应该出现在 (/admin/structure/block).
已解决,问题是函数的名称。所以名称以 "block_square" 开头,它有 "block" 这个词,这会造成一些麻烦,所以我用 menu_square.
更改了所有名称
所以现在的功能是:
- menu_square_block_info()
- menu_square_block_view($delta = '')
文件是:
- menu_square.info
- menu_square.module
文件的代码是:
信息:
name = Menu Square
description = Module that create a Block for Square menu, menu shown only in home page
core = 7.x
package = custom
模块:
<?php
/**
* Implements hook_block_info().
*/
function menu_square_block_info() {
$blocks['menu_square'] = array(
'info' => t('Block Square'),
//'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function menu_square_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'menu_square':
$block['subject'] = t('block Title');
$block['content'] = t('Hello World!');
break;
}
return $block;
}
我是 Drupal 7 的新手,我正在按照此 tutorial.
通过代码创建块所以我在 drupal/sites/all/modules 创建了一个新的模块文件夹并创建了两个文件:
block_square_menu.info: 它有模块的信息:
name = Block Square Menu
description = Module that create a Block for Square menu, menu shown only in home page
core = 7.x
package = custom
block_square_menu.module: 它包含 PHP 代码:
<?php
/**
* Implements hook_block_info().
*/
function block_square_block_info() {
$blocks = array();
$blocks['block_square'] = array(
'info' => t('Block Square'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function block_square_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'block_square':
$block['subject'] = t('block Title');
$block['content'] = t('Hello World!');
break;
}
return $block;
}
保存文件后,我转到Admin/Modules,激活新模块并保存配置。现在我去 Structure/Blocks 它应该列出我的新块,但它没有。
我已按照所有教程步骤进行操作并清理了 Drupal 缓存,但问题仍然存在。
首先解决你的错误:把你实现hook_block_view()的函数名改成函数blocks_square_block_view()
/** * 实现 hook_block_view()。 */
function blocks_square_block_view($delta = '') {
$block = array();
......
如果还没有解决,则从 hook_block_info() 中删除 'cache' 属性,它是可选的。
如果您错过了,请执行 2 个步骤。
1) 清除所有缓存 (/admin/config/development/performance).
2) 启用自定义模块 (/admin/modules).
重试后,您的区块应该出现在 (/admin/structure/block).
已解决,问题是函数的名称。所以名称以 "block_square" 开头,它有 "block" 这个词,这会造成一些麻烦,所以我用 menu_square.
更改了所有名称所以现在的功能是:
- menu_square_block_info()
- menu_square_block_view($delta = '')
文件是:
- menu_square.info
- menu_square.module
文件的代码是:
信息:
name = Menu Square
description = Module that create a Block for Square menu, menu shown only in home page
core = 7.x
package = custom
模块:
<?php
/**
* Implements hook_block_info().
*/
function menu_square_block_info() {
$blocks['menu_square'] = array(
'info' => t('Block Square'),
//'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function menu_square_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'menu_square':
$block['subject'] = t('block Title');
$block['content'] = t('Hello World!');
break;
}
return $block;
}