Antes de responder, es útil tener un poco de información sobre cómo Drupal encuentra módulos. Drupal utiliza una lista de sugerencias de la raíz de Drupal para descubrir dónde encontrar módulos. En orden de prioridad:
sites/$SITENAME/modules
sites/all/modules
profiles/$INSTALLPROFILE/modules
modules
Si Drupal no encuentra un módulo en (1) , verifica (2) . Si no está allí, marca (3) , y así sucesivamente.
Para (1) , si solo está utilizando una instalación básica de Drupal en un solo sitio, $SITENAME
es default
. De otra manera:
- En Drupal 6,
$SITENAME
es el nombre de host del sitio. Si su sitio se encuentra en example.com
, $SITENAME
sería example.com
.
- En Drupal 7,
$SITENAME
se define en sites/sites.php
. Si nos fijamos example.sites.php
, puede ver cómo definirlo. También es importante tener en cuenta que cualquier módulo enumerado allí solo será utilizable para esos sitios específicos, no para todos los sitios.
En (2) , cualquier módulo que se encuentre allí podrá utilizarse en cualquier sitio de la instalación de Drupal. También se dejará intacto cuando actualice la instalación principal. Este es, por supuesto, el lugar recomendado para colocar módulos y probablemente toda la documentación que haya leído le haya dicho que coloque sus módulos aquí.
(3) se utiliza para perfiles de instalación que requieren un módulo específico. Los perfiles de instalación son esencialmente una forma de definir un estado inicial personalizado para un sitio de Drupal. Por ejemplo, Drupal viene con dos perfiles de instalación integrados: Estándar, que incluye las funciones más utilizadas, y Mínimo, que solo incluye el mínimo necesario para que funcione un sitio de Drupal.
(4) es utilizado por el núcleo de Drupal. Si bien técnicamente puede agregar módulos aquí y estarán disponibles para todos los sitios, no debería hacerlo. Seriamente. La modules
carpeta se toca cuando se actualiza Drupal core, y causará problemas en el futuro si está pegando los módulos que necesita para que su sitio funcione allí.
Ahora que el fondo está fuera del camino, puede usar trucos del sistema de archivos para tener sus módulos alojados fuera de donde se ve Drupal.
Por ejemplo, puede configurar un enlace simbólico desde sites/all/modules
otro directorio fuera de la instalación de Drupal:
- En sistemas basados en Unix / Linux / BSD:
ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
- En Windows Vista / Server 2008/7 y superior:
mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder
Que yo sepa, no hay mucho que puedas hacer en versiones anteriores de Windows que no tengan mklink .
En Drupal 7, los directorios donde Drupal busca módulos son los siguientes:
$ profile es el valor devuelto por drupal_get_profile () ; $ config es el valor devuelto por conf_path () .
La función que busca archivos de objetos del sistema (módulos, temas, etc.) es drupal_system_listing () .
Se buscan los mismos directorios, en Drupal 6. La única diferencia es que $ profile es una variable global; cuando no se establece la variable global, la función obtiene el valor de la variable persistente "install_profile", que tiene el valor predeterminado de "default".
fuente
Puede colocarlos en sitios / todos / módulos, luego estarán disponibles para todos los sitios (si tiene una configuración multisitio), en sitios / default / modules para el sitio predeterminado o sites / site.com / modules si tú tienes eso. Para los últimos directorios, esto significa que solo estarán disponibles para ese sitio específico.
Además, puede organizarlos como desee debajo de esas carpetas, lo que significa que puede crear cualquier subcarpeta allí. Una cosa típica que debe hacer es crear una carpeta contrib y luego colocar los módulos descargados desde allí mientras mantiene los módulos escritos para ese sitio en una carpeta personalizada.
fuente
No estoy seguro de lo que quiere decir, pero usamos una convención algo común para separar los módulos internos de los módulos de terceros.
Los módulos personalizados 'hechos en casa' estarían en:
Los módulos de terceros estarían en:
Si tener subdirectorios no satisface sus necesidades, creo que podría fácilmente vincular su directorio / obscure / path / to / module al directorio de módulos de su drupal.
fuente