0

私はブロックを持っており、それをある地域でアクティブ化し、特定のノードでのみ表示されるように条件を設定したいと考えています。Drupal 7 でプログラムでこれを行うにはどうすればよいですか?

4

2 に答える 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 に答える