Drupalは、他の場所でモジュールを見つけるように構成できますか?


14

モジュールをsites / all / modulesに配置します。他の場所でより多くのモジュールを見つけるようにDrupalを構成する方法はありますか?


編集済み

私は仮想ホストを頻繁に使用しますが、あなたが説明した方法では使用しません。私がよく知っている形式はこのように見え、作業プロジェクト全体をwww以外の場所に配置するのに役立ちます。

<VirtualHost *:80>
    ServerName testdrupal.com
    DocumentRoot "C:/proj/testdrupal"
    ServerAlias testdrupal.com

   <Directory "C:/proj/testdrupal/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

あなたが説明していることは何か違うと思いますよね?私はいつもどおりwwwの中にdrupalフォルダーを残そうとしていますが、sites / all / modulesだけを別の場所に移動しますが、この場合VHostエントリーがどのように見えるかはまだわかりません。C:/ proj / testdrupalに移動したいとしましょう。私はあなたを完全に誤解していないことを望みます。

回答:


14

答える前に、Drupalがモジュールを見つける方法について少し背景を理解しておくと役立ちます。Drupalは、Drupalルートからの提案のリストを使用して、モジュールの場所を見つけます。優先度順:

  1. sites/$SITENAME/modules
  2. sites/all/modules
  3. profiles/$INSTALLPROFILE/modules
  4. modules

Drupalが(1)でモジュールを見つけられない場合、(2)をチェックします。存在しない場合は、(3)などをチェックします。

(1)について$SITENAMEは、Drupalの基本的な単一サイトインストールのみを使用している場合はですdefault。さもないと:

  • Drupal 6では$SITENAME、サイトのホスト名です。あなたのサイトがにある場合example.com、に$SITENAMEなりますexample.com
  • Drupal 7では、$SITENAMEで定義されていsites/sites.phpます。を見るとexample.sites.php、それを定義する方法がわかります。また、そこにリストされているモジュールはすべてのサイトではなく、その特定のサイトでのみ使用できることに注意することも重要です。

(2) 、任意のモジュールは、Drupalのインストールで任意のサイトで使用できるがありますが見つかりました。また、コアインストールをアップグレードするときにも変更されません。もちろん、これはモジュールを置くための推奨される場所であり、おそらくあなたが読んだすべてのドキュメントがあなたのモジュールをここに置くようにあなたに言ったでしょう。

(3)インストールプロファイルに使用されます、特定のモジュールを必要とする。基本的に、インストールプロファイルは、Drupalサイトのカスタム初期状態を定義する方法です。たとえば、Drupalには2つのインストールプロファイルが組み込まれています。標準には、最も使用される機能が含まれ、最小には、Drupalサイトが機能するために最低限必要なもののみが含まれます。

(4)はDrupalコアによって使用されます。ここにモジュールを技術的に追加することができ、それらはすべてのサイトで利用可能になりますが、そうすべきではありません。真剣に。このmodulesフォルダーは、Drupalコアが更新されたときに変更され、サイトで機能するために必要なモジュールを貼り付けると、問題が発生します。


背景が邪魔にならないので、ファイルシステムのトリックを使用して、Drupalが見える場所の外にモジュールを格納することができます。

たとえば、あなたが設定することができ、シンボリックリンクをからsites/all/modulesDrupalのインストールの別のディレクトリの外に:

  • Unix / Linux / BSDベースのシステムの場合: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • Windows Vista / Server 2008/7以降の場合: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

私が知っている限りでは、mklinkを持たない以前のバージョンのWindowsでできることはあまりありません。


ありがとう 私の投稿の編集セクションをご覧ください。ここに収まる以上のものです。ありがとう。
サメドール

@sameoldシンボリックリンクに関する部分を修正し、明確にしました。Windowsでは、シンボリックリンクはちょっと大ざっぱですが、提供したコマンドは機能するはずです。

3

Drupal 7では、Drupalがモジュールを探すディレクトリは次のとおりです。

  • モジュール
  • profiles / $ profile / modules
  • $ config / modules

$ profileはdrupal_get_profile()から返される値です。$ configはconf_path()から返される値です。
システムオブジェクトファイル(モジュール、テーマなど)を検索する関数はdrupal_system_listing()ですです。

Drupal 6でも同じディレクトリが検索されます。唯一の違いは、$ profileがグローバル変数であることです。グローバル変数が設定されていない場合、関数は「install_profile」永続変数の値を取得します。この変数のデフォルト値は「default」です。


2

これらをsites / all / modulesに配置すると、すべてのサイト(マルチサイト構成の場合)、デフォルトのサイトのsites / default / modules、またはsites / site.com / modulesで使用できるようになります。あなたはそれを持っています。後者のディレクトリの場合、これはその特定のサイトでのみ使用できることを意味します。

さらに、これらのフォルダーの下に必要に応じて整理できます。つまり、そこにサブフォルダーを作成できます。典型的なことは、contribフォルダを作成し、そこからダウンロードされたモジュールを配置し、そのサイトの自己記述モジュールをカスタムフォルダに保持することです。


1

意味はわかりませんが、社内のモジュールをサードパーティのモジュールから分離するという一般的な規則を使用しています。

「自家製」のカスタムモジュールは次の場所にあります。

sites / all / modules / custom

サードパーティのモジュールは次の場所にあります。

sites / all / modules / vendor

サブディレクトリを用意してもニーズに合わない場合は、/ obscure / path / to / moduleディレクトリをdrupalのモジュールディレクトリに簡単にシンボリックリンクできると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.