Drupal:自定义块不会出现

时间:2018-03-14 13:32:30

标签: php drupal-7

我是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缓存,但我仍然遇到了问题。

2 个答案:

答案 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更改了所有的名字。

现在功能如下:

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