#drupal #drupal-7 #drupal-blocks
#drupal #drupal-7 #drupal-блоки
Вопрос:
У меня есть блок, и я хочу активировать его в некотором регионе, а также установить для него условие, чтобы его видели только в заданном узле. Как я могу сделать это программно в Drupal 7?
Ответ №1:
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:
Я смог добиться этого, используя следующий код.
$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);