マルチサイトDrupalインストールの管理者として、そのプラットフォーム内のすべてのサイトにモジュールの変更を加えたいと思っています。定期的に、一連のモジュールを無効/有効にして、すべてのサイトにわたる一貫性。
Drush(バージョン4.x、5.x、6.xのいずれでも可)を使用して、各サイトで同じコマンドを繰り返さずにこのタスクを実行するにはどうすればよいですか?
Drushには、@ sites引数を使用して、マルチサイトインストール内の各サイトと対話する機能があります。プラットフォームのディレクトリ構造内にいるときはいつでも、drush @sitesコマンドは単一のサイトではなくすべてのサイトをターゲットにします。このようにして、すべてのサイトでany drushタスクを実行できます。
いくつかの具体的な例:
各サイトでdblog(コアデータベースロギング)と開発モジュールを無効にする
drush @sites dis dblog devel -y
各サイトで高速モジュールを有効にする
drush @sites en speedy -y
すべてのサイトの管理テーマを変更する
drush @sites vset --yes admin_theme "ember"
プラットフォームのサイトでcdnモジュールが有効になっているかどうかを確認します
drush @sites pml --no-core --type=module --status="enabled" -y | grep cdn
これら(およびより多くのコマンド)は、drushのどのバージョンでも機能します> = 4.x
また、上記の回答で追加するため
サイトフォルダの下に3つのサイトがある場合。 sites/all、sites/new、sites/devの3つのサイトすべてに「some_module」がインストールされ、有効になっていると仮定します。
「新規」および「開発」サイトでのみ「some_module」を無効にする場合
ステップ1 : cd DRUPAL_DIR/sites/new
ステップ2 : drush dis some_module
ステップ3:repeat Step 1 and Step 2 for dev sites as well