Czy Drupal może być skonfigurowany do wyszukiwania modułów w innych lokalizacjach?

13

Umieszczam moje moduły w witrynach / wszystkich / modułach. Czy istnieje sposób na skonfigurowanie Drupala w celu znalezienia większej liczby modułów również w innych lokalizacjach?


Edytowane

Korzystam z wirtualnych hostów często, ale nie w sposób opisany przez Ciebie. Format, który znam, wygląda tak i pomaga mi umieścić cały projekt w innym miejscu niż 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>

Myślę, że to, co opisujesz, jest czymś innym, prawda? Próbuję jak zwykle zostawić folder drupal wewnątrz www, ale przenieś tylko strony / wszystkie / moduły do ​​innej lokalizacji, ale nadal nie mogę zrozumieć, jak w tym przypadku będzie wyglądał wpis VHost. Powiedzmy, że chcę przenieść go do C: / proj / testdrupal. Mam nadzieję, że całkowicie cię nie zrozumiałem.

w tym samym wieku
źródło

Odpowiedzi:

14

Przed odpowiedzią warto zapoznać się z tym, jak Drupal znajduje moduły. Drupal korzysta z listy sugestii z katalogu głównego Drupal, aby dowiedzieć się, gdzie znaleźć moduły. W kolejności pierwszeństwa:

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

Jeśli Drupal nie znajdzie modułu w (1) , sprawdza (2) . Jeśli go nie ma, sprawdza (3) i tak dalej.

Dla (1) , jeśli używasz tylko podstawowej instalacji Drupal w jednym miejscu, $SITENAMEjest default. Inaczej:

  • W Drupal 6 $SITENAMEto nazwa hosta witryny. Jeśli Twoja witryna znajduje się w example.com, $SITENAMEbędzie example.com.
  • W Drupal 7 $SITENAMEzdefiniowano w sites/sites.php. Jeśli spojrzysz na to example.sites.php, możesz zobaczyć, jak to zdefiniować. Ważne jest również, aby pamiętać, że każdy wymieniony tam moduł będzie użyteczny tylko dla określonych stron, a nie dla wszystkich stron.

W (2) każdy znaleziony moduł będzie użyteczny w dowolnym miejscu instalacji Drupal. Pozostanie to również nietknięte podczas aktualizacji podstawowej instalacji. Jest to oczywiście zalecane miejsce do umieszczenia modułów i prawdopodobnie cała dokumentacja, którą przeczytałeś, kazała Ci umieścić tutaj swoje moduły.

(3) jest używany do profili instalacyjnych, które wymagają określonego modułu. Profile instalacyjne są zasadniczo sposobem na zdefiniowanie niestandardowego stanu początkowego dla witryny Drupal. Na przykład, Drupal ma wbudowane dwa profile instalacyjne: Standard, który zawiera najczęściej używane funkcje, i Minimalny, który zawiera tylko absolutne minimum potrzebne do funkcjonowania witryny Drupal.

(4) jest używany przez rdzeń Drupala. Chociaż możesz tutaj technicznie dodać moduły i będą one dostępne dla wszystkich witryn, nie powinieneś. Poważnie. modulesFolder jest wzruszony, gdy Drupal rdzeń jest aktualizowana i będzie powodować problemy wzdłuż linii jeśli trzymać moduły potrzebne do witryny do funkcji tam.


Teraz, gdy tło jest już na uboczu, możesz użyć sztuczek systemu plików, aby umieścić moduły poza miejscem, w którym wygląda Drupal.

Na przykład możesz skonfigurować dowiązanie symboliczne z sites/all/modulesinnego katalogu poza instalacją Drupal:

  • W systemach opartych na Unix / Linux / BSD: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • W systemie Windows Vista / Server 2008/7 i nowszym: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

O ile mi wiadomo, nie ma wiele można zrobić w starszych wersjach systemu Windows, które nie mają mklink .


źródło
Wielkie dzięki, to naprawdę wyjaśnia, ale wciąż mam problemy z uruchomieniem go. Czy możesz spojrzeć na sekcję Edytuj w moim poście. To więcej, niż może zmieścić się tutaj. Dzięki.
sameold
@sameold Naprawiłem i wyjaśniłem część dotyczącą linków symbolicznych. W systemie Windows dowiązania symboliczne są dość szkicowe, ale uważam, że podane polecenie powinno działać.
3

W Drupal 7 katalogi, w których Drupal szuka modułów, są następujące:

  • moduły
  • profile / $ profil / moduły
  • $ config / modules

$ profil to wartość zwracana przez drupal_get_profile () ; $ config to wartość zwracana z conf_path () .
Funkcja wyszukująca pliki obiektów systemowych (moduły, kompozycje itp.) To drupal_system_listing () .

Te same katalogi są wyszukiwane w Drupal 6. Jedyna różnica polega na tym, że $ profil jest zmienną globalną; gdy zmienna globalna nie jest ustawiona, funkcja otrzymuje wartość trwałej zmiennej „install_profile”, która ma domyślną wartość „default”.

kiamlaluno
źródło
2

Możesz umieścić je w witrynach / wszystkich / modułach, wówczas będą one dostępne dla wszystkich witryn (jeśli masz konfigurację obejmującą wiele witryn), w witrynach / domyślnych / modułach dla domyślnej witryny lub witryn / witryny.com / modułów, jeśli masz to. W przypadku tych ostatnich katalogów oznacza to, że będą one dostępne tylko dla tej konkretnej witryny.

Dodatkowo możesz je porządkować pod tymi folderami, co oznacza, że ​​możesz tworzyć tam wszystkie podfoldery. Typową rzeczą do zrobienia jest utworzenie folderu contrib, a następnie umieszczenie pobranych z niego modułów przy jednoczesnym zachowaniu samodzielnie napisanych modułów dla tej witryny w folderze niestandardowym.

Berdir
źródło
1

Nie jestem pewien, co masz na myśli, ale używamy dość powszechnej konwencji oddzielania modułów wewnętrznych od modułów innych firm.

Moduły niestandardowe „domowej roboty” byłyby w:

witryny / wszystkie / moduły / niestandardowe

Zewnętrzne moduły będą w:

witryny / wszystkie / moduły / sprzedawca

Jeśli posiadanie podkatalogów nie odpowiada twoim potrzebom, uważam, że możesz łatwo dowiązać swój katalog / obscure / path / to / module do katalogu modułów twojego drupala.

stefgosselin
źródło