block.info はブロック モジュールの説明ファイルで、「package」プロパティはブロックが Drupal コア モジュールであり、メニュー「admin/structural/block」で設定できることを示します。
block.installはブロックのインストール時に実行されます。このファイルの目的は、必要なテーブルを作成することです: block、block_custom、block_role
テーブル ブロックは、コード ステートメントによって宣言されたブロック情報を保存するために使用されます。
テーブル block_custom は、管理インターフェイスによって作成されたブロック情報を保存するために使用されます。
テーブル block_role は、ブロックの可視性を制御するために使用されます。
メインロジックは block.module ファイルで定義されます。このファイルを見てみましょう。 block.module にはたくさんの関数がありますが、フック関数とブロックモジュール内部で使用される関数の 2 種類に分類できます。フック関数には、block_menu、block_theme、block_theme_initialize、block_themes_enable が含まれます
機能ブロックメニュー:ブロック設定、ブロック管理、テーマ別ブロックリスト
[html]
$default_theme = variable_get('theme_default', 'bartik');
$items['admin/structor/block'] = array(
'タイトル' => 「ブロック」、
'説明' => 'サイトのサイドバーやその他の領域に表示されるブロック コンテンツを構成します。',
'ページ コールバック' => 'block_admin_display'、
'ページ引数' =>配列($default_theme)、
'引数にアクセス' => array('管理ブロック')、
'ファイル' => 'block.admin.inc'、
);
$items['admin/structural/block/manage/%/%'] = array(
'タイトル' => 「ブロックを構成」、
'ページ コールバック' => 'drupal_get_form'、
'ページ引数' => array('block_admin_configure', 4, 5),
'引数にアクセス' => array('管理ブロック')、
'ファイル' => 'block.admin.inc'、
);
$items['admin/structural/block/manage/%/%/configure'] = array(
'タイトル' => 「ブロックを構成」、
'タイプ' => MENU_DEFAULT_LOCAL_TASK、
'コンテキスト' => MENU_CONTEXT_INLINE、
);
$items['admin/structural/block/manage/%/%/delete'] = array(
'タイトル' => 「ブロックを削除」、
'ページ コールバック' => 'drupal_get_form'、
'ページ引数' => array('block_custom_block_delete', 4, 5),
'引数にアクセス' => array('管理ブロック')、
'タイプ' => MENU_LOCAL_TASK、
'コンテキスト' => MENU_CONTEXT_NONE、
'ファイル' => 'block.admin.inc'、
);
$items['admin/structural/block/add'] = array(
'タイトル' => 「ブロックを追加」、
'ページ コールバック' => 'drupal_get_form'、
'ページ引数' => array('block_add_block_form')、
'引数にアクセス' => array('管理ブロック')、
'タイプ' => MENU_LOCAL_ACTION、
'ファイル' => 'block.admin.inc'、
);
foreach (list_主題() as $key => $theme) {
$items['admin/structor/block/list/' . $key] = array(
'タイトル' => check_plain($theme->info['name']),
'ページ引数' =>配列($key)、
'タイプ' => $key == $default_theme ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK、
「体重」 => $key == $default_theme ? -10 : 0、
'アクセスコールバック' => '_block_主題_アクセス'、
'引数にアクセス' =>配列($theme)、
'ファイル' => 'block.admin.inc'、
);
if ($key != $default_theme) {
$items['admin/ Structure/block/list/' . $key 。 '/add'] = array(
'タイトル' => 「ブロックを追加」、
'ページ コールバック' => 'drupal_get_form'、
'ページ引数' => array('block_add_block_form')、
'引数にアクセス' => array('管理ブロック')、
'タイプ' => MENU_LOCAL_ACTION、
'ファイル' => 'block.admin.inc'、
);
}
$items['admin/structor/block/demo/' . $key] = array(
'タイトル' => check_plain($theme->info['name']),
'ページ コールバック' => 'block_admin_demo'、
'ページ引数' =>配列($key)、
'タイプ' => MENU_CALLBACK、
'アクセスコールバック' => '_block_主題_アクセス'、
'引数にアクセス' =>配列($theme)、
'テーマ コールバック' => '_block_custom_theme'、
'テーマ引数' =>配列($key)、
'ファイル' => 'block.admin.inc'、
);
}
$items を返します。
}
関数 block_theme: 2 つのテーマ オプションを提供します: block はフロントエンド用、block_admin_display_form は管理インターフェイス用です
[html]
関数 block_theme() {
return array(
'ブロック' =>配列(
'レンダリング要素' => 「要素」、
'テンプレート' => 「ブロック」、
)、
'block_admin_display_form' =>配列(
'テンプレート' => 'ブロック管理者表示フォーム',
'ファイル' => 'block.admin.inc'、
'レンダリング要素' => 「フォーム」、
)、
);
}
関数 block_theme_initialize: ブロックをテーマの領域に割り当てます
[php]
関数 block_theme_initialize($theme) {
// テーマのブロックがまだ登録されていない場合は初期化します。
$has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE テーマ = :テーマ', 0, 1, array(':theme' => $theme))->fetchField();
if (!$has_blocks) {
$default_theme = variable_get('theme_default', 'bartik');
// 新しいテーマの表示領域にのみ適用されます。
$regions = system_region_list($theme, REGIONS_VISIBLE);
$result = db_query("SELECT * FROM {block} WHERE テーマ = :テーマ", array(':theme' => $default_theme), array('fetch' => PDO::FETCH_ASSOC));
foreach ($result as $block) {
// リージョンがテーマでサポートされていない場合は、ブロックをテーマのデフォルトのリージョンに割り当てます。
if ($block['status'] && !isset($regions[$block['region']])) {
$block['region'] = system_default_region($theme);
}
$block['theme'] = $theme;
unset($block['bid']);
drupal_write_record('block', $block);
}
}
}
関数 block_themes_enable: テーマ リストを反復し、ブロック リストをその領域に割り当てます。
[html]
関数 block_themes_enabled($theme_list) {
foreach ($theme_list as $theme) {
block_theme_initialize($theme);
}
}
http://www.bkjia.com/PHPjc/477871.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477871.html技術記事 block.info はブロック モジュールの説明ファイルであり、パッケージ プロパティは、ブロックが Drupal コア モジュールであり、メニュー admin/structural/block で設定できることを示します。ブロック.インスタ...