web-dev-qa-db-ja.com

サイトから設定変数をエクスポートして、インストールプロファイルに含めます。

現在設定されている変数(drush vgetを実行しているかどうかを確認できるように)をエクスポートできるモジュールが Features とは別にあります-正しい形式でインストールプロファイルにコピーして貼り付けることができます。 -例variable_set('admin_theme', 'minimal');など。

5
Andrew Welch

これは2つの関数です。定義されたすべての変数をクエリしてエクスポートする簡単な関数を持つメニューコールバックです。

必要なモジュールの依存関係はなく、Drupalコアのみです。

/**
 * Implements hook_menu
 */
function MODULE_menu() {
  $items['export/variables'] = array(
    'title' => 'Export variables',
    'page callback' => 'MODULE_export_variables',
    'access arguments' => array('administer site configuration'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

/**
 * Menu callback to export variables
 */
function MODULE_export_variables(){

  // Fetch and export variables from the database.
  $query = db_select('variable');
  $query->fields('variable');
  $query->orderBy('name');
  $result = $query->execute();

  $output = array();
  $output[] = '<pre>';
  foreach($result as $row){
    $output[] = 'variable_set("'.$row->name.'", '.var_export(unserialize($row->value), 1).');';
  }
  $output[] = '</pre>';

  print implode(PHP_EOL, $output);

  drupal_exit();

}

http://yoursite.com/export/variablesにアクセスして、インストールプロファイルにコピー/貼り付けするための生の出力を取得します。

5
David Thomas

1年ほど前、私は 作業サイトをインストールプロファイルとしてエクスポートする のDrushコマンドに取り組んでいました。しばらく作業していませんが、構成管理モジュールのようなものを使用したり、インストールプロファイルにサイト構成情報を含めるために Drush CTools Export Bonus を使用したりすることが私の意図でした。

インストールプロファイルを手動で生成する場合は、通常、variable_setコマンドを記述して、インストールプロファイルに直接配置します。ただし、構成情報を生成するときは、通常、構成情報が他のモジュールにバンドルされていると思います。

最初の質問に答える

慣例により、変数テーブルの変数は、それらを定義したモジュールにちなんで名前が付けられているため、全員が協力していれば、変数の出所がわかります。 Drupalの新しいコピーをインストールし、Drupalが定義する変数とそのデフォルト値を書き留めます。これらをサイトの値と比較して、変更した値を見つけます。 contribモジュールについても同じことを行い、各モジュールをスクラッチサイトにインストールして、デフォルト値を確認します。もう1つのオプションは、Strongarmを使用することです。これにより、他の機能モジュールと同じように、(変更されたときに)変更された変数が表示されます。

ただし、ここでの問題は、すべての構成が変数テーブルに格納されるわけではないことです。一部のモジュールは独自のテーブルを定義します。構成を手動でコーディングする場合は、使用する各モジュールのAPIを順番に調べ、プログラムで設定を行う方法を理解する必要があります。これは難しいことです。そのため、ほとんどの人が機能、構成管理モジュール、またはCtoolsエクスポートボーナスを使用しています。すべてがエクスポート可能ファイルをサポートしているわけではないため、これらのモジュールでさえ必ずしも十分ではありません。 D8のCMイニシアチブがこの問題に取り組んでいるのは良いことです。

7
greg_1_anderson

構成管理 モジュールが必要なようです:

構成管理モジュールは、Drupalサイト上の特定の構成を追跡し、これらの構成を異なる環境(ローカル、開発、qa、製品)間で移動する機能を提供し、さらにすべての構成がサイトによって所有されているモジュールを使用せずに、完全に異なるサイト間の構成(移行構成)。

ほとんどの場合、このモジュールはfeaturesモジュールのサブセットと同じ機能を提供します。

したがって、何らかの理由で機能が適切でない場合は、これが良い代替品になる可能性があります。

1
Mołot