我为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"
如果我更改delta名称,丢失的块也会出现,但很明显,当您部署到多个环境时,这不值得麻烦。
ETA:块配置包含在drush_extras包中,可用于Drush7。
可能是缓存问题:是否清除了生产服务器上的缓存?至少应该清空类注册表,以便Drupal注册您的新块。