Как программно активировать и установить условия для блока в Drupal 7? - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть блок, и я хочу активировать его в каком-то регионе, а также установить для него условие, которое будет видно только в данном узле.Как я могу сделать это программно в Drupal 7?

Ответы [ 2 ]

3 голосов
/ 08 марта 2013

drupal_write_record не работает, если вы хотите использовать в хуке обновления. Вы также можете использовать db_update или db_insert в зависимости от курса, если вы обновляете или создаете базу данных. Вот пример обновления:

<?php
// find your block id, for me $bid = 38
db_update('block')
  ->fields(array(
    'module' => 'system',
    'delta' => 'main-menu', // block delta, find in database or module that defines it
    'theme' => 'mytheme', // theme to configure
    'visibility' => BLOCK_VISIBILITY_NOTLISTED, // see drupal constants
    'region' => 'main_menu', // region declared in  theme
    'status' => 1,
    'pages' => '',
    )
  )
  ->condition('bid', $bid, '=')
  ->execute();
?>

См. API-интерфейс hook_block_info для более подробной информации о параметрах.

2 голосов
/ 03 апреля 2011

Мне удалось добиться этого с помощью следующего кода.

$menu_block = array(
    'module' => 'menu',
    'delta' => 'IDBLOCK', // the id of the block
    'theme' => 'MYTHEME', // the current theme
    'visibility' => 1, // it is displayed only on those pages listed in $block->pages.
    'region' => 'menu',
    'status' => 1,
    'pages' => '', // display the menu only for these pages
    );

drupal_write_record('block', $menu_block);
...