drupal - 设置哪些 block 将出现在 Drupal 安装配置文件中的页面

标签 drupal drupal-blocks hook-install

创建了安装配置文件,需要使一些自定义 block 在特定页面上可见。

在 profile_name.install 中:profile_name_install():

$values = array( 
    array( 
        'module' => 'my_custom_module',  
        'delta' => 'my_block', 
        'theme' => $default_theme,  
        'status' => 1,  
        'weight' => 0, 
        'region' => 'help',  
        'pages' => "admin/page1\nadmin/page2\nadmin/page3",  
        'cache' => 0,  
    ),
);

$query = db_insert('block')->fields(array('module', 'delta', 'theme', 'status', 'weight', 'region', 'pages', 'cache'));
foreach ($values as $record) { 
    $query->values($record); 
} 
$query->execute();

安装后, block 配置中的这些页面设置为“除列出的页面外的所有页面”,但我需要它们位于“仅列出的页面”中;

我应该在 $values 数组中添加哪些额外值?用\n 分隔符设置多页是正确的方法吗?

最佳答案

根据 hook_block_info() docs ,您需要添加可见性:

array( 
    'module' => 'my_custom_module',  
    'delta' => 'my_block', 
    'theme' => $default_theme,  
    'status' => 1,  
    'weight' => 0, 
    'region' => 'help',  
    'pages' => "admin/page1\nadmin/page2\nadmin/page3",  
    'cache' => 0,  
    'visibility' => BLOCK_VISIBILITY_LISTED
),

关于drupal - 设置哪些 block 将出现在 Drupal 安装配置文件中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16687073/

相关文章:

jquery - $(window).load 的 Drupal 7 jQuery 语法是什么?

javascript - Drupal Filefield 不会上传 javascript 文件?

drupal - 在 Drupal 6 中覆盖用户注册表单

php - 如何在 Drupal 6 的一个模块中创建多个不同的 block ?

drupal - 二级菜单中的用户菜单 : why?

php - 清除 drupal 缓存 - php 脚本