O Drupal pode ser configurado para encontrar módulos em outros locais?

13

Coloquei meus módulos em sites / all / modules. Existe uma maneira de configurar o Drupal para encontrar mais módulos em outros locais também?


Editado

Uso hosts virtuais com frequência, mas não da maneira que você descreveu. O formato que eu estou familiarizado se parece com isso, e isso me ajuda a colocar todo o projeto de trabalho em outro lugar que não esteja dentro de 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>

Eu acho que o que você está descrevendo é algo diferente, certo? Estou tentando deixar a pasta drupal dentro de www como de costume, mas mova apenas os sites / all / modules para outro local, mas ainda não consigo descobrir como será a entrada do VHost nesse caso. Digamos que eu queira movê-lo para C: / proj / testdrupal. Espero não ter entendido completamente você.

o mesmo de sempre
fonte

Respostas:

14

Antes de responder, é útil ter um pouco de conhecimento sobre como o Drupal encontra os módulos. O Drupal usa uma lista de sugestões da raiz do Drupal para descobrir onde encontrar os módulos. Em ordem de prioridade:

  1. sites/$SITENAME/modules
  2. sites/all/modules
  3. profiles/$INSTALLPROFILE/modules
  4. modules

Se o Drupal não encontrar um módulo em (1) , ele verifica (2) . Se não estiver lá, verifica (3) e assim por diante.

Para (1) , se você está apenas usando uma instalação básica de site único do Drupal, $SITENAMEé default. De outra forma:

  • No Drupal 6, $SITENAMEé o nome do host do site. Se o seu site estiver localizado em example.com, $SITENAMEseria example.com.
  • No Drupal 7, $SITENAMEé definido em sites/sites.php. Se você olhar example.sites.php, poderá ver como defini-lo. Também é importante observar que qualquer módulo listado lá será utilizável apenas para sites específicos, nem todos os sites.

Em (2) , qualquer módulo encontrado lá será utilizável em qualquer site na instalação do Drupal. Também ficará intocado quando você atualizar a instalação principal. Este é, obviamente, o local recomendado para colocar módulos e provavelmente toda a documentação que você leu disse para você colocar seus módulos aqui.

(3) é usado para perfis de instalação que requerem um módulo específico. Os perfis de instalação são essencialmente uma maneira de definir um estado inicial personalizado para um site Drupal. Por exemplo, o Drupal vem com dois perfis de instalação embutidos: Padrão, que inclui os recursos mais usados, e Mínimo, que inclui apenas o mínimo necessário para o funcionamento de um site Drupal.

(4) é usado pelo núcleo Drupal. Embora você possa tecnicamente adicionar módulos aqui e eles estarão disponíveis para todos os sites, você não deveria. Seriamente. A modulespasta é tocada quando o núcleo do Drupal é atualizado e causará problemas na linha se você estiver instalando os módulos necessários para que o site funcione lá.


Agora que o plano de fundo está fora do caminho, você pode usar truques do sistema de arquivos para abrigar seus módulos fora do local onde o Drupal está.

Por exemplo, você pode configurar um link simbólico de sites/all/modulespara outro diretório fora da instalação do Drupal:

  • Em sistemas baseados em Unix / Linux / BSD: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • No Windows Vista / Server 2008/7 e superior: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

Tanto quanto sei, não há muito que você possa fazer nas versões anteriores do Windows que não tenham o mklink .


fonte
Muito obrigado, isso realmente explica, mas ainda estou tendo problemas para fazê-lo funcionar. Você pode olhar para a seção Editar no meu post. É mais do que pode caber aqui. Obrigado.
precisa
@sameold Corrigi e esclareci a parte sobre links simbólicos. No Windows, os links simbólicos são meio incompletos, mas acredito que o comando que forneça deve funcionar.
3

No Drupal 7, os diretórios em que o Drupal procura por módulos são os seguintes:

  • módulos
  • profiles / $ profile / modules
  • $ config / modules

$ profile é o valor retornado de drupal_get_profile () ; $ config é o valor retornado de conf_path () .
A função que procura por arquivos de objetos do sistema (módulos, temas etc.) é drupal_system_listing () .

Os mesmos diretórios são procurados no Drupal 6. A única diferença é que $ profile é uma variável global; quando a variável global não está definida, a função obtém o valor da variável persistente "install_profile", que possui o valor padrão de "padrão".

kiamlaluno
fonte
2

Você pode colocá-los em sites / all / modules, e eles estarão disponíveis para todos os sites (se você tiver uma configuração de vários sites), em sites / default / modules para o site padrão ou sites / site.com / modules se Você tem isso. Para os últimos diretórios, isso significa que eles estarão disponíveis apenas para esse site específico.

Além disso, você pode organizá-los como quiser abaixo dessas pastas, ou seja, pode criar quaisquer subpastas lá. Uma coisa típica a se fazer é criar uma pasta contrib e, em seguida, colocar os módulos baixados de lá, mantendo os módulos escritos automaticamente para esse site em uma pasta personalizada.

Berdir
fonte
1

Não sabemos o que você quer dizer, mas usamos uma convenção bastante comum de separar módulos internos de módulos de terceiros.

Os módulos personalizados 'caseiros' estariam em:

sites / todos / módulos / personalizados

Os módulos de terceiros estariam em:

sites / todos / módulos / fornecedor

Se ter subdiretórios não corresponder às suas necessidades, acredito que você poderia facilmente vincular seu diretório / obscure / path / to / module ao diretório de módulos do drupal.

stefgosselin
fonte