Drupal può essere configurato per trovare moduli in altre posizioni?


13

Ho inserito i miei moduli in siti / tutti / moduli. C'è un modo per configurare Drupal per trovare altri moduli anche in altre posizioni?


Modificato

Uso gli host virtuali spesso ma non nel modo descritto. Il formato con cui ho familiarità è simile a questo e mi aiuta a mettere l'intero progetto di lavoro da qualche altra parte non all'interno di 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>

Penso che quello che stai descrivendo sia qualcosa di diverso, giusto? Sto cercando di lasciare la cartella drupal in www come al solito, ma spostare solo i siti / tutti / moduli in un'altra posizione, ma non riesco ancora a capire come apparirà la voce VHost in questo caso. Diciamo che voglio spostarlo in C: / proj / testdrupal. Spero di non averti frainteso completamente.

Risposte:


14

Prima di rispondere, è utile avere un po 'di conoscenza di come Drupal trova i moduli. Drupal utilizza un elenco di suggerimenti dalla radice Drupal per capire dove trovare i moduli. In ordine di priorità:

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

Se Drupal non trova un modulo in (1) , controlla (2) . Se non è presente, controlla (3) e così via.

Per (1) , se stai solo usando un'installazione di base di Drupal per un singolo sito, lo $SITENAMEè default. Altrimenti:

  • In Drupal 6, $SITENAMEè il nome host del sito. Se il tuo sito si trova in example.com, $SITENAMEsarebbe example.com.
  • In Drupal 7, $SITENAMEè definito in sites/sites.php. Se guardi example.sites.php, puoi vedere come definirlo. È anche importante notare che qualsiasi modulo elencato lì sarà utilizzabile solo per quei siti specifici, non tutti i siti.

In (2) , qualsiasi modulo trovato lì sarà utilizzabile su qualsiasi sito nell'installazione di Drupal. Rimarrà intatto anche quando si aggiorna l'installazione principale. Questo è, ovviamente, il posto consigliato per mettere i moduli e probabilmente tutta la documentazione che hai letto ti ha detto di mettere i tuoi moduli qui.

(3) viene utilizzato per i profili di installazione che richiedono un modulo specifico. I profili di installazione sono essenzialmente un modo per definire uno stato iniziale personalizzato per un sito Drupal. Ad esempio, Drupal include due profili di installazione integrati: Standard, che include le funzionalità più utilizzate, e Minimal, che include solo il minimo indispensabile per il funzionamento di un sito Drupal.

(4) è utilizzato dal core Drupal. Mentre puoi tecnicamente aggiungere moduli qui e saranno disponibili per tutti i siti, non dovresti. Sul serio. La modulescartella viene toccata quando viene aggiornato Drupal core e causerà problemi in linea se si attaccano i moduli necessari per il funzionamento del sito.


Ora che lo sfondo è fuori mano, puoi usare i trucchi del file system per sistemare i tuoi moduli al di fuori di dove Drupal appare.

Ad esempio, è possibile impostare un collegamento simbolico da sites/all/modulesun'altra directory al di fuori dell'installazione di Drupal:

  • Nei sistemi basati su Unix / Linux / BSD: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • Su Windows Vista / Server 2008/7 e versioni successive: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

Per quanto ne so, non c'è molto che puoi fare nelle versioni precedenti di Windows che non hanno mklink .


Grazie mille, questo lo spiega davvero, ma ho ancora problemi a farlo funzionare. Puoi guardare la sezione Modifica nel mio post. È più di quanto possa adattarsi qui. Grazie.
sameold

@sameold Ho corretto e chiarito la parte sui collegamenti simbolici. Su Windows, i collegamenti simbolici sono in qualche modo imprecisi, ma credo che il comando che ho fornito dovrebbe funzionare.

3

In Drupal 7, le directory in cui Drupal cerca i moduli sono le seguenti:

  • moduli
  • profili / $ profilo / modules
  • $ config / moduli

$ profile è il valore restituito da drupal_get_profile () ; $ config è il valore restituito da conf_path () .
La funzione che cerca i file degli oggetti di sistema (moduli, temi, ecc.) È drupal_system_listing () .

Si cercano le stesse directory, in Drupal 6. L'unica differenza è che $ profile è una variabile globale; quando la variabile globale non è impostata, la funzione ottiene il valore della variabile persistente "install_profile", che ha il valore predefinito di "default".


2

Puoi posizionarli in siti / tutti / moduli, quindi saranno disponibili per tutti i siti (se hai una configurazione multi-sito), in siti / default / moduli per il sito predefinito o siti / sito.com / moduli se ce l'hai. Per le ultime directory, ciò significa che saranno disponibili solo per quel sito specifico.

Inoltre, puoi organizzarli come vuoi sotto quelle cartelle, il che significa che puoi creare qualunque sottocartella lì dentro. Una cosa tipica da fare è creare una cartella contrib e quindi posizionare i moduli scaricati da lì mantenendo i moduli scritti per quel sito in una cartella personalizzata.


1

Non sono sicuro di cosa intendi, ma utilizziamo una convenzione in qualche modo comune per separare i moduli interni dai moduli di terze parti.

I moduli personalizzati "fatti in casa" sarebbero in:

sites / all / modules / custom

I moduli di terze parti sarebbero in:

sites / all / modules / fornitore

Se avere delle sottodirectory non soddisfa le tue esigenze, credo che potresti facilmente collegare simbolicamente la tua directory / obscure / path / a / module nella directory del modulo di drupal.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.