私はブロックを持っており、それをある地域でアクティブ化し、特定のノードでのみ表示されるように条件を設定したいと考えています。Drupal 7 でプログラムでこれを行うにはどうすればよいですか?
質問する
4009 次
2 に答える
3
更新フック内で使用する場合、 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();
?>
パラメータの詳細については、hook_block_info API を参照してください。
于 2013-03-07T23:56:29.470 に答える
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);
于 2011-04-03T06:04:49.140 に答える