¿Se puede configurar Drupal para buscar módulos en otras ubicaciones?

13

Puse mis módulos en sitios / todos / módulos. ¿Hay alguna forma de configurar Drupal para encontrar más módulos en otras ubicaciones también?


Editado

Utilizo hosts virtuales a menudo, pero no de la manera que describiste. El formato con el que estoy familiarizado se ve así, y me ayuda a poner todo el proyecto de trabajo en otro lugar que no sea 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>

Creo que lo que estás describiendo es algo diferente, ¿verdad? Estoy tratando de dejar la carpeta drupal dentro de www como de costumbre, pero muevo solo los sitios / todos / módulos a otra ubicación, pero aún no puedo entender cómo se verá la entrada VHost en este caso. Digamos que quiero moverlo a C: / proj / testdrupal. Espero no haberte entendido mal por completo.

mismo viejo
fuente

Respuestas:

14

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:

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

  • En Drupal 6, $SITENAMEes el nombre de host del sitio. Si su sitio se encuentra en example.com, $SITENAMEsería example.com.
  • En Drupal 7, $SITENAMEse 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 modulescarpeta 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/modulesotro 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 .


fuente
Muchas gracias, esto realmente lo explica, pero todavía tengo problemas para que funcione. ¿Puedes mirar la sección Editar en mi publicación? Es más de lo que cabe aquí. Gracias.
sameold
@sameold He arreglado y aclarado la parte sobre enlaces simbólicos. En Windows, los enlaces simbólicos son un poco incompletos, pero creo que el comando que proporcioné debería funcionar.
3

En Drupal 7, los directorios donde Drupal busca módulos son los siguientes:

  • módulos
  • perfiles / $ perfil / módulos
  • $ config / modules

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

kiamlaluno
fuente
2

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.

Berdir
fuente
1

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:

sitios / todos / módulos / personalizados

Los módulos de terceros estarían en:

sitios / todos / módulos / proveedor

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.

Stefgosselin
fuente