ホームページ >バックエンド開発 >PHPチュートリアル >Drupal 7のカスタムCToolsプラグインを構築します
ctools:drupal 7
でカスタムプラグインの作成に深く潜りますCtoolsは不可欠なDrupal 7モジュールであり、ビューやパネルなどの他の多くのモジュールの基礎を形成しています。 その広範なAPIと関数は、オブジェクトキャッシュ、構成エクスポート、フォームウィザード、ダイアログ、堅牢なプラグインシステムなどの機能を提供することにより、モジュールの開発を合理化します。 この記事では、カスタムプラグインの作成に焦点を当てたCtoolsプラグインを調べます。 Drupal 7ブロックの定義を簡素化し、Drupal 8のより合理化されたアプローチをミラーリングするモジュールを構築します。
重要な概念:
hook_ctools_plugin_type()
hook_ctools_plugin_directory()
ブロックシステムの変換:hook_block_info()
hook_block_view()
モジュールの構築: Drupal 7のブロックシステムをプラグインベースのアーキテクチャに変換するモジュールを作成します。 ファイルを作成することから始めます:block_plugin
内でblock_plugin.info
:
<code>name = Block Plugin description = Simplifies Drupal 7 block definition using cTools plugins. core = 7.x dependencies[] = ctools</code>
block_plugin.module
コールバックhook_ctools_plugin_type()
は、プラグインデータを準備します:
<code class="language-php">function block_plugin_ctools_plugin_type() { return array( 'block' => array( 'label' => 'Block', 'use hooks' => FALSE, 'process' => 'block_plugin_process_plugin' ) ); }</code>また、ctoolsにプラグインを見つける場所を伝えるには
が必要です。
process
block_plugin_process_plugin()
<code class="language-php">function block_plugin_process_plugin(&$plugin, $info) { // ... (Code to generate admin title, set 'show title', and define view/configure/save callbacks as shown in the original example) ... }</code>
hook_ctools_plugin_directory()
次に、プラグインシステムをDrupalのブロックシステムに接続します。
<code class="language-php">function block_plugin_ctools_plugin_directory($module, $plugin) { if ($module == 'block_plugin' && in_array($plugin, array_keys(block_plugin_ctools_plugin_type()))) { return 'plugins/' . $plugin; } }</code>
ブロックコンテンツをレンダリングします:
hook_block_info()
<code class="language-php">function block_plugin_block_info() { $blocks = array(); $plugins = block_plugin_get_all_plugins(); // Helper function to fetch all plugins foreach ($plugins as $plugin) { $blocks[DELTA_PREFIX . $plugin['name']] = array( 'info' => $plugin['admin title'], ); } return $blocks; } // Helper function to get all plugins function block_plugin_get_all_plugins() { return ctools_get_plugins('block_plugin', 'block'); } define('DELTA_PREFIX', 'block_plugin_');</code>
hook_block_view()
ディレクトリ:
<code class="language-php">function block_plugin_block_view($delta = '') { $plugin = block_plugin_plugin_from_delta($delta); // Helper to get plugin from delta if (!$plugin) { return; } $block = array(); if (isset($plugin['title']) && $plugin['show title'] !== FALSE) { $block['subject'] = $plugin['title']; } $block['content'] = $plugin['view']($delta); return $block; } // Helper function to get plugin from delta function block_plugin_plugin_from_delta($delta) { $prefix_length = strlen(DELTA_PREFIX); $name = substr($delta, $prefix_length); $plugin = block_plugin_get_plugin($name); return $plugin ? $plugin : FALSE; } // Helper function to get a single plugin function block_plugin_get_plugin($name) { return ctools_get_plugins('block_plugin', 'block', $name); }</code>)を作成します
Drupalのキャッシュをクリアした後、カスタムブロックはブロック管理インターフェイスに表示されます。
結論:my_block.inc
この強化された説明は、Drupal 7にカスタムCToolsプラグインの作成をより包括的に理解し、Drupalブロック管理を簡素化する際のアプリケーションを具体的に実証することを提供します。 詳細と高度な機能については、CToolsのドキュメントを参照してください。
以上がDrupal 7のカスタムCToolsプラグインを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。