Kann Drupal so konfiguriert werden, dass Module an anderen Orten gefunden werden?

14

Ich habe meine Module in sites / all / modules abgelegt. Gibt es eine Möglichkeit, Drupal so zu konfigurieren, dass auch an anderen Standorten weitere Module gefunden werden?


Bearbeitet

Ich verwende oft virtuelle Hosts, aber nicht so, wie Sie es beschrieben haben. Das mir vertraute Format sieht so aus und hilft mir, das gesamte Arbeitsprojekt an einen anderen Ort zu bringen, nicht ins 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>

Ich denke, was Sie beschreiben, ist etwas anderes, oder? Ich versuche, den Drupal-Ordner wie gewohnt im WWW zu belassen, verschiebe jedoch nur die Sites / all / modules an einen anderen Speicherort, kann aber immer noch nicht herausfinden, wie der VHost-Eintrag in diesem Fall aussehen wird. Nehmen wir an, ich möchte es nach C: / proj / testdrupal verschieben. Ich hoffe, ich habe dich nicht völlig missverstanden.

gleichalt
quelle

Antworten:

14

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:

  1. sites/$SITENAME/modules
  2. sites/all/modules
  3. profiles/$INSTALLPROFILE/modules
  4. 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, $SITENAMEist default. Andernfalls:

  • In Drupal 6 $SITENAMEist der Hostname der Site. Wenn sich Ihre Site auf befindet example.com, $SITENAMEwäre example.com.
  • In Drupal 7 $SITENAMEist 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 modulesOrdner 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/modulesin 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 .


quelle
Vielen Dank, das erklärt es wirklich, aber ich habe immer noch Probleme, es zum Laufen zu bringen. Kannst du dir den Abschnitt Bearbeiten in meinem Beitrag ansehen? Es ist mehr als hier passen kann. Vielen Dank.
Sameold
@sameold Ich habe den Teil über symbolische Links behoben und klargestellt. Unter Windows sind symbolische Links etwas lückenhaft, aber ich glaube, der von mir bereitgestellte Befehl sollte funktionieren.
3

In Drupal 7 sind die Verzeichnisse, in denen Drupal nach Modulen sucht, folgende:

  • Module
  • profile / $ profile / modules
  • $ config / modules

$ 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.

kiamlaluno
quelle
2

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.

Berdir
quelle
1

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:

sites / all / modules / custom

Module von Drittanbietern befinden sich in:

sites / all / modules / vendor

Wenn Unterverzeichnisse nicht Ihren Anforderungen entsprechen, können Sie das Verzeichnis / obscure / path / to / module leicht mit dem Modulverzeichnis Ihres Drupal verknüpfen.

stefgosselin
quelle