以编程方式将视图分配给Drupal 7中的区域

时间:2012-03-15 22:30:34

标签: api view drupal-7 block region

在安装模块期间,我需要为区域分配视图,并从该区域取消分配块。这需要在UI中花费3秒钟,但这必须以编程方式完成。

该视图称为“合法页脚”,需要将其分配给区域“页脚”。 同样,我有一个名为“footer-logos”的块,它当前位于“页脚”区域,但需要删除。

我想我想要hook_block_info_alter,但我不确定它是否适用于View,并且API文档中有一条注释,它不能用于取消分配块...

我是Drupal的新手,我可以很容易地在UI中找到我想要的任何东西,但是我很难使用API​​。

1 个答案:

答案 0 :(得分:1)

将块分配给区域使用数组中的'region'键返回的信息包含应该将该块分配给的区域的名称

<强> E.g

function module_block_info() {
    $blocks = array();
    $blocks[0] = array(
        'info' => t('Block Title'),
        'region' => 'name-of-the-region', // here is the name of the region
        'status' => 1, // 1 if you want the block to be enabled by default
    );
    return $blocks;
}

您可以使用此类查询来禁用存在块

db_update('block')->fields(array('region' => '', 'status' => 0))->condition('bid', $block_id)->execute();

将$ block_id替换为您要禁用的块的ID

<强>更新 您可以使用hook_block_info_alter来禁用存在块

function hook_block_info_alter(&$blocks, $theme, $code_blocks) {
  // Disable the login block.
  $blocks['defining_module']['delta']['status'] = 0;
}
祝你好运