ホームページ > バックエンド開発 > PHPチュートリアル > Drupal 7のカスタムCToolsプラグインを構築します

Drupal 7のカスタムCToolsプラグインを構築します

William Shakespeare
リリース: 2025-02-16 10:07:08
オリジナル
878 人が閲覧しました

ctools:drupal 7

でカスタムプラグインの作成に深く潜ります

Ctoolsは不可欠なDrupal 7モジュールであり、ビューやパネルなどの他の多くのモジュールの基礎を形成しています。 その広範なAPIと関数は、オブジェクトキャッシュ、構成エクスポート、フォームウィザード、ダイアログ、堅牢なプラグインシステムなどの機能を提供することにより、モジュールの開発を合理化します。 この記事では、カスタムプラグインの作成に焦点を当てたCtoolsプラグインを調べます。 Drupal 7ブロックの定義を簡素化し、Drupal 8のより合理化されたアプローチをミラーリングするモジュールを構築します。

Building Custom cTools Plugins in Drupal 7

重要な概念:

  • ctoolsの役割:ctoolsは、再利用可能な機能のフレームワークを提供し、開発者が孤立したプラグイン内のビジネスロジックをカプセル化できるようにします。
  • プラグインの定義:
  • カスタムプラグインを作成するには、を使用してプラグインタイプを定義し、でプラグインディレクトリを指定し、個々のプラグインファイルを作成します。 hook_ctools_plugin_type()hook_ctools_plugin_directory()ブロックシステムの変換:
  • このチュートリアルは、ctoolsプラグインを活用してDrupal 7ブロック用のプラグインベースのシステムを作成し、従来のフックベースのアプローチを置き換える方法を示しています。
  • 合理化されたブロック定義:カスタムプラグインシステムは、繰り返しの
  • および
  • の実装の必要性を排除することにより、ブロックの作成を簡素化します。 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()は、プラグインデータを準備します:

function block_plugin_ctools_plugin_type() {
  return array(
    'block' => array(
      'label' => 'Block',
      'use hooks' => FALSE,
      'process' => 'block_plugin_process_plugin'
    )
  );
}
ログイン後にコピー
また、ctoolsにプラグインを見つける場所を伝えるには

が必要です。 process block_plugin_process_plugin()

drupalブロックシステムとの統合:
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) ...
}
ログイン後にコピー

hook_ctools_plugin_directory()次に、プラグインシステムをDrupalのブロックシステムに接続します。

は、プラグインをブロックとして登録します:
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;
  }
}
ログイン後にコピー

ブロックコンテンツをレンダリングします:

hook_block_info()

ブロックプラグインの作成:
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_');
ログイン後にコピー

hook_block_view()ディレクトリ:

にファイル(例えば、
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);
}
ログイン後にコピー
)を作成します

Drupalのキャッシュをクリアした後、カスタムブロックはブロック管理インターフェイスに表示されます。

結論:

my_block.inc

この強化された説明は、Drupal 7にカスタムCToolsプラグインの作成をより包括的に理解し、Drupalブロック管理を簡素化する際のアプリケーションを具体的に実証することを提供します。 詳細と高度な機能については、CToolsのドキュメントを参照してください。

以上がDrupal 7のカスタムCToolsプラグインを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート