自定义块不显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义块不显示相关的知识,希望对你有一定的参考价值。

我为我的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管理中的GUI恢复创建页脚。

另一答案

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

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

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

ETA:block-configure包含在drush_extras包中,可用于Drush 7。

另一答案

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

以上是关于自定义块不显示的主要内容,如果未能解决你的问题,请参考以下文章

自定义对话框片段

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

PagerSlidingTabStrip- 使用列表片段的自定义视图显示突然的行为

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段——声明函数