我是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;
}
保存文件后,我转到管理员/模块,激活新模块并保存配置。现在我转到结构/块,它应该列出我的新块,但它没有。
我已经按照所有教程步骤操作并清理了Drupal缓存,但我仍然遇到了问题。
答案 0 :(得分:1)
首先解决你的错误:更改你实现hook_block_view()的函数名称,需要将其更改为 function blocks_square_block_view()
/ ** *实现hook_block_view()。 * /
function blocks_square_block_view($delta = '') {
$block = array();
......
如果不解决,请删除&#39; 缓存&#39;来自hook_block_info()的属性是可选的。
如果你错过了,请按照2步进行操作。
1)清除所有缓存(/ admin / config / development / performance)。
2)启用自定义模块(/ admin / modules)。
再次尝试后,您的广告块应显示在(/ admin / structure / block)中。
答案 1 :(得分:0)
解决了,问题是函数的名称。所以这些名字以“block_square”开头,它有“block”这个词,这会引起一些麻烦所以我用menu_square更改了所有的名字。
现在功能如下:
文件是:
文件的代码是:
信息:
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;
}