web-dev-qa-db-ja.com

プログラムでコンテキストを作成するにはどうすればよいですか?

Drupalサイトにコンテンツを移動するために移行モジュールを使用しています。このコンテンツの一部をブロックとして作成し、コンテキストを使用して領域に追加する必要があります。ブロックを作成しています(実際には、ボックス)専用モジュールを使用して作業していますが、コンテキスト側からどこから始めればよいかわかりません-add_block_to_context()のようなものを探していますが、何も見つかりません。

5
Bobby Jack

コンテキストテスト ユニットで使用されているコードを確認した後Drupal 6の場合:

ctools_include('export');
$context = ctools_export_new_object('context');
$context->name = 'testcontext';
$context->conditions = array('path' => array('values' => array('admin')));
$context->reactions = array('debug' => array('debug' => TRUE));
$saved = context_save($context);

反応や条件を簡単にコーディングして、コンテキストを保存できます。

ところで、使用できるすべてのコンテキストを取得するには context_context_list() を使用します。

6
emaV

これを行う最も簡単な方法は、組み込みのエクスポートオプションまたは機能を使用して、最初にすべてのブロックで完全なコンテキストを実際に作成してからエクスポートすることです。

3
googletorp

以下のコードを使用してこの問題を修正しました。

その前に、コンテキストを使用してすべての値をエクスポートし、ブロックの配列形式または何らかの構造をチェックします。

$context = new stdClass();
$context->disabled = FALSE;
$context->api_version = 3;
$context->name = 'name-of-context';
$context->description = 'Description';
$context->tag = '';
$context->conditions = array(
'path' => array(
  'values' => array(
    'node/120' => 'node/120',
  ),
),
);
$context->reactions = array(
'block' => array(
  'blocks' => call_function_to_generate_block_array(),
),
'theme_html' => array(
  'class' => 'myclass',
),
);
$context->condition_mode = 0;
context_save($context);

注:これらすべての値を1つのスクリプトファイルに保存して、使用することができますdrush scr script.phpコマンドを実行します。

0
kalidasan