Vor der Beantwortung ist es hilfreich, sich ein wenig darüber zu informieren, wie Drupal Module findet. Drupal verwendet eine Liste von Vorschlägen aus dem Drupal-Stammverzeichnis, um herauszufinden, wo Module zu finden sind. Nach Wichtigkeit geordnet:
sites/$SITENAME/modules
sites/all/modules
profiles/$INSTALLPROFILE/modules
modules
Wenn Drupal in (1) kein Modul findet , prüft es (2) . Wenn es nicht vorhanden ist, prüft es (3) und so weiter.
Für (1) , wenn Sie nur eine einfache Single-Site-Installation von Drupal verwenden, $SITENAME
ist default
. Andernfalls:
- In Drupal 6
$SITENAME
ist der Hostname der Site. Wenn sich Ihre Site auf befindet example.com
, $SITENAME
wäre example.com
.
- In Drupal 7
$SITENAME
ist definiert in sites/sites.php
. Wenn Sie sich das ansehen example.sites.php
, können Sie sehen, wie Sie es definieren. Es ist auch wichtig zu beachten, dass jedes dort aufgeführte Modul nur für diese bestimmten Sites verwendet werden kann, nicht für alle Sites.
In (2) kann jedes dort gefundene Modul auf jeder Site in der Drupal-Installation verwendet werden. Es bleibt auch unberührt, wenn Sie die Kerninstallation aktualisieren. Dies ist natürlich der empfohlene Ort, um Module zu platzieren, und wahrscheinlich haben Sie alle von Ihnen gelesenen Dokumentationen angewiesen, Ihre Module hier abzulegen.
(3) wird für Installationsprofile verwendet , die ein bestimmtes Modul erfordern. Installationsprofile sind im Wesentlichen eine Möglichkeit, einen benutzerdefinierten Anfangszustand für eine Drupal-Site zu definieren. In Drupal sind beispielsweise zwei Installationsprofile integriert: Standard, das die am häufigsten verwendeten Funktionen enthält, und Minimal, das nur das Nötigste enthält, das für die Funktion einer Drupal-Site erforderlich ist.
(4) wird von Drupal Core verwendet. Sie können hier zwar technisch Module hinzufügen, die dann für alle Sites verfügbar sind. Dies sollte jedoch nicht der Fall sein. Ernsthaft. Der modules
Ordner wird berührt, wenn der Drupal-Kern aktualisiert wird. Dies kann später zu Problemen führen, wenn Sie Module installieren, die für die Funktion Ihrer Site erforderlich sind.
Jetzt, da der Hintergrund nicht mehr im Weg ist, können Sie Dateisystem-Tricks anwenden, um Ihre Module außerhalb von Drupal unterzubringen.
Zum Beispiel könnten Sie eine einrichten symbolische Verknüpfung von sites/all/modules
in einem anderen Verzeichnis außerhalb der Drupal - Installation:
- In Unix / Linux / BSD-basierten Systemen:
ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
- Unter Windows Vista / Server 2008/7 und höher:
mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder
Soweit mir bekannt ist, können Sie in früheren Windows-Versionen ohne mklink nicht viel tun .
In Drupal 7 sind die Verzeichnisse, in denen Drupal nach Modulen sucht, folgende:
$ profile ist der von drupal_get_profile () zurückgegebene Wert ; $ config ist der von conf_path () zurückgegebene Wert .
Die Funktion, die nach Systemobjektdateien ( Modulen, Themen usw.) sucht, ist drupal_system_listing () .
In Drupal 6 wird nach denselben Verzeichnissen gesucht. Der einzige Unterschied besteht darin, dass $ profile eine globale Variable ist. Wenn die globale Variable nicht festgelegt ist, ruft die Funktion den Wert der persistenten Variablen "install_profile" ab, die den Standardwert "default" hat.
quelle
Sie können sie entweder in sites / all / modules platzieren. Sie sind dann für alle Sites verfügbar (wenn Sie eine Konfiguration mit mehreren Sites haben), in sites / default / modules für die Standardsite oder sites / site.com / modules, wenn du hast das. Für die letzteren Verzeichnisse bedeutet dies, dass sie nur für diese bestimmte Site verfügbar sind.
Darüber hinaus können Sie sie unter diesen Ordnern beliebig organisieren, dh, Sie können dort alle Unterordner erstellen. In der Regel erstellen Sie einen Contrib-Ordner und platzieren die von do heruntergeladenen Module in einem benutzerdefinierten Ordner.
quelle
Ich bin mir nicht sicher, was ich meine, aber wir verwenden eine übliche Konvention, bei der interne Module von Modulen von Drittanbietern getrennt werden.
"Hausgemachte" benutzerdefinierte Module wären in:
Module von Drittanbietern befinden sich in:
Wenn Unterverzeichnisse nicht Ihren Anforderungen entsprechen, können Sie das Verzeichnis / obscure / path / to / module leicht mit dem Modulverzeichnis Ihres Drupal verknüpfen.
quelle