Avant de répondre, il est utile d'avoir un peu d'histoire sur la façon dont Drupal trouve les modules. Drupal utilise une liste de suggestions de la racine Drupal pour déterminer où trouver les modules. Par ordre de priorité:
sites/$SITENAME/modules
sites/all/modules
profiles/$INSTALLPROFILE/modules
modules
Si Drupal ne trouve pas de module dans (1) , il vérifie (2) . S'il n'est pas là, il vérifie (3) , et ainsi de suite.
Pour (1) , si vous utilisez simplement une installation de base de Drupal sur un seul site, $SITENAME
c'est default
. Autrement:
- Dans Drupal 6,
$SITENAME
est le nom d'hôte du site. Si votre site est situé à example.com
, le $SITENAME
serait example.com
.
- Dans Drupal 7,
$SITENAME
est défini dans sites/sites.php
. Si vous regardez example.sites.php
, vous pouvez voir comment le définir. Il est également important de noter que tout module répertorié ne sera utilisable que pour ces sites spécifiques, pas pour tous les sites.
Dans (2) , tout module qui s'y trouve sera utilisable sur n'importe quel site de l'installation Drupal. Il restera également intact lors de la mise à niveau de l'installation principale. C'est, bien sûr, l'endroit recommandé pour placer les modules et probablement toute la documentation que vous avez lue vous a dit de placer vos modules ici.
(3) est utilisé pour les profils d'installation qui nécessitent un module spécifique. Les profils d'installation sont essentiellement un moyen de définir un état initial personnalisé pour un site Drupal. Par exemple, Drupal est livré avec deux profils d'installation intégrés: Standard, qui inclut les fonctionnalités les plus utilisées, et Minimal, qui ne comprend que le strict minimum nécessaire pour qu'un site Drupal fonctionne.
(4) est utilisé par le noyau Drupal. Bien que vous puissiez techniquement ajouter des modules ici et qu'ils seront disponibles pour tous les sites, vous ne devriez pas. Sérieusement. Le modules
dossier est touché lorsque Drupal core est mis à jour, et posera des problèmes sur toute la ligne si vous collez les modules dont vous avez besoin pour que votre site fonctionne là-bas.
Maintenant que l'arrière-plan est à l'écart, vous pouvez utiliser des astuces de système de fichiers pour que vos modules soient hébergés à l'extérieur de l'endroit où Drupal se trouve.
Par exemple, vous pouvez configurer un lien symbolique de sites/all/modules
vers un autre répertoire en dehors de l'installation Drupal:
- Dans les systèmes basés sur Unix / Linux / BSD:
ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
- Sur Windows Vista / Server 2008/7 et supérieur:
mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder
Pour autant que je sache, vous ne pouvez pas faire grand-chose dans les versions antérieures de Windows qui n'ont pas mklink .
Dans Drupal 7, les répertoires dans lesquels Drupal recherche des modules sont les suivants:
$ profile est la valeur renvoyée par drupal_get_profile () ; $ config est la valeur renvoyée par conf_path () .
La fonction qui recherche les fichiers d'objets système (modules, thèmes, etc.) est drupal_system_listing () .
Les mêmes répertoires sont recherchés, dans Drupal 6. La seule différence est que $ profile est une variable globale; lorsque la variable globale n'est pas définie, la fonction obtient la valeur de la variable persistante "install_profile", qui a la valeur par défaut "default".
la source
Vous pouvez les placer soit dans sites / all / modules, puis ils seront disponibles pour tous les sites (si vous avez une configuration multi-sites), dans sites / default / modules pour le site par défaut ou sites / site.com / modules si Tu as ça. Pour ces derniers répertoires, cela signifie qu'ils ne seront disponibles que pour ce site spécifique.
De plus, vous pouvez les organiser comme vous le souhaitez sous ces dossiers, ce qui signifie que vous pouvez créer les sous-dossiers qui s'y trouvent. Une chose typique à faire est de créer un dossier contrib, puis de placer les modules téléchargés à partir de là tout en conservant les modules auto-écrits pour ce site dans un dossier personnalisé.
la source
Je ne sais pas ce que vous voulez dire, mais nous utilisons une convention quelque peu courante de séparation des modules internes des modules tiers.
Les modules personnalisés «faits maison» seraient:
Les modules tiers seraient dans:
Si avoir des sous-répertoires ne correspond pas à vos besoins, je pense que vous pouvez facilement lier votre répertoire / obscure / path / à / module dans le répertoire de votre module drupal.
la source