【问题标题】:Custom block not displaying自定义块不显示
【发布时间】:2012-02-09 12:53:21
【问题描述】:

我为我的 Drupal 7 安装创建了一个自定义块,如下所示:

/*
 * Implements hook_block_info
 * To create a block to display the information for planB in the footer.
 */

function planb_block_info() {
  $blocks['planb_footer'] = array(
    'info' => t('PlanB Footer'),
    'status' => true,
    'weight' => 0,
    'visibility' => 1,
  );
  return $blocks;
}

function planb_block_view($delta = '') {
  switch($delta) {
    case 'planb_footer':
      $block['subject'] = NULL;
      $block['content'] = footer_block_content($delta);
      return $block;
      break;
  } 
}

function footer_block_content($delta) {
  return array('#markup' => theme('footer'));
}

现在,在我的本地测试环境中,页脚正确显示。但是,当我将模块文件上传到生产环境时,页脚不会出现在任何地方。它甚至没有出现在 Blocks 页面上,就好像钩子没有在 Drupal 中注册一样。有谁知道我可能忽略了什么?

我已经清除了缓存。

【问题讨论】:

  • 它是否出现在模块页面中?
  • 是的,该模块已启用,它提供的其余功能正在运行。
  • 嗯。您的测试环境和生产环境有什么不同?

标签: drupal drupal-7 drupal-hooks drupal-blocks


【解决方案1】:

我仍然没有发现这有什么问题,而是通过 Drupal 管理中的 GUI 恢复为创建页脚。

【讨论】:

    【解决方案2】:

    在另一个环境中安装自定义模块时,我经常遇到同样的问题。仅当块没有设置区域时才会发生,因此我的解决方法是在安装并启用模块后使用 Drush 移动块。设置区域后,该块将出现在管理视图中。

    drush block-configure --module=MY_MODULE --delta=BLOCK_DELTA --region=TARGET_REGION chdir="/PATH/TO/DRUPAL"
    

    如果我更改 delta 名称,也会出现丢失的块,但显然,当您部署到多个环境时,这不值得麻烦。

    ETA:块配置包含在 drush_extras 包中,可用于 Drush 7。

    【讨论】:

      【解决方案3】:

      这可能是缓存问题:您是否清除了生产服务器上的缓存?至少应该清空类注册表,以便 Drupal 注册您的新块。

      【讨论】:

      • 对不起:仔细检查但还是错过了最后一行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多