Bisakah Drupal dikonfigurasi untuk menemukan modul di lokasi lain?

13

Saya meletakkan modul saya di situs / semua / modul. Apakah ada cara untuk mengkonfigurasi Drupal untuk menemukan lebih banyak modul di lokasi lain juga?


Diedit

Saya sering menggunakan Virtual Host tetapi tidak seperti yang Anda gambarkan. Format yang saya kenal terlihat seperti ini, dan itu membantu saya menempatkan seluruh proyek kerja di tempat lain tidak di dalam 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>

Saya pikir apa yang Anda gambarkan adalah sesuatu yang berbeda, bukan? Saya mencoba untuk meninggalkan folder drupal di dalam www seperti biasa, tetapi hanya memindahkan situs / semua / modul ke lokasi lain, tapi saya masih tidak tahu bagaimana entri VHost akan terlihat dalam kasus ini. Katakanlah saya ingin memindahkannya ke C: / proj / testdrupal. Saya harap saya tidak sepenuhnya salah paham tentang Anda.

sebaya
sumber

Jawaban:

14

Sebelum menjawab, ada baiknya memiliki sedikit latar belakang tentang bagaimana Drupal menemukan modul. Drupal menggunakan daftar saran dari root Drupal untuk mencari tahu di mana menemukan modul. Dalam urutan prioritas:

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

Jika Drupal tidak menemukan modul dalam (1) , ia memeriksa (2) . Jika tidak ada di sana, ia memeriksa (3) , dan seterusnya.

Untuk (1) , jika Anda hanya menggunakan instalasi Drupal dasar, satu situs, $SITENAMEadalah default. Jika tidak:

  • Dalam Drupal 6, $SITENAMEadalah nama host situs tersebut. Jika situs Anda berada di example.com, $SITENAMEakan example.com.
  • Dalam Drupal 7, $SITENAMEdidefinisikan dalam sites/sites.php. Jika Anda melihat example.sites.php, Anda dapat melihat cara mendefinisikannya. Penting juga untuk dicatat bahwa modul apa pun yang terdaftar di sana hanya akan dapat digunakan untuk situs tertentu itu, tidak semua situs.

Pada (2) , modul apa pun yang ditemukan akan dapat digunakan di situs mana pun dalam instalasi Drupal. Itu juga akan dibiarkan tak tersentuh ketika Anda meningkatkan instalasi inti. Ini, tentu saja, tempat yang disarankan untuk meletakkan modul dan kemungkinan semua dokumentasi yang Anda baca telah mengatakan kepada Anda untuk meletakkan modul Anda di sini.

(3) digunakan untuk profil instalasi yang memerlukan modul tertentu. Profil instalasi pada dasarnya adalah cara untuk menentukan keadaan awal khusus untuk situs Drupal. Sebagai contoh, Drupal hadir dengan dua profil instalasi bawaan: Standar, yang mencakup fitur-fitur yang paling sering digunakan, dan Minimal, yang hanya mencakup minimum yang diperlukan agar situs Drupal berfungsi.

(4) digunakan oleh inti Drupal. Meskipun Anda secara teknis dapat menambahkan modul di sini dan itu akan tersedia untuk semua situs, Anda tidak harus. Serius. The modulesfolder tersentuh ketika inti Drupal diperbarui, dan akan menyebabkan masalah di telepon jika Anda menempel modul yang Anda butuhkan untuk situs Anda untuk fungsi di sana.


Sekarang karena latar belakangnya tidak memungkinkan, Anda dapat menggunakan trik sistem file untuk menempatkan modul Anda di luar tempat Drupal terlihat.

Misalnya, Anda dapat mengatur tautan simbolis dari sites/all/moduleske direktori lain di luar instalasi Drupal:

  • Dalam sistem berbasis Unix / Linux / BSD: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • Pada Windows Vista / Server 2008/7 dan lebih tinggi: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

Sejauh yang saya ketahui, tidak banyak yang dapat Anda lakukan di Windows versi sebelumnya yang tidak memiliki mklink .


sumber
Terima kasih banyak, ini benar-benar menjelaskannya, tetapi saya masih kesulitan membuatnya bekerja. Dapatkah Anda melihat bagian Edit di posting saya. Ini lebih dari yang bisa muat di sini. Terima kasih.
sama pada
@ sama saya telah memperbaiki dan menjelaskan bagian tentang tautan simbolik. Di Windows, tautan simbolis agak samar, tapi saya yakin perintah yang saya berikan harus bekerja.
3

Di Drupal 7, direktori tempat Drupal mencari modul adalah sebagai berikut:

  • modul
  • profil / $ profil / modul
  • $ config / modules

$ profile adalah nilai yang dikembalikan dari drupal_get_profile () ; $ config adalah nilai yang dikembalikan dari conf_path () .
Fungsi yang mencari file objek sistem (modul, tema, dll) adalah drupal_system_listing () .

Direktori yang sama dicari, dalam Drupal 6. Satu-satunya perbedaan adalah $ profil adalah variabel global; ketika variabel global tidak disetel, fungsi mendapatkan nilai variabel persisten "install_profile", yang memiliki nilai default "default."

kiamlaluno
sumber
2

Anda dapat menempatkannya di situs / semua / modul, maka mereka akan tersedia untuk semua situs (jika Anda memiliki konfigurasi multi-situs), di situs / default / modul untuk situs default atau situs / site.com / modul jika kamu punya itu. Untuk direktori yang terakhir, ini berarti bahwa direktori tersebut hanya akan tersedia untuk situs tertentu.

Selain itu, Anda dapat mengaturnya seperti yang Anda inginkan di bawah folder itu, artinya, Anda dapat membuat sub-folder apa pun di sana. Hal yang biasa dilakukan adalah membuat folder contrib dan kemudian menempatkan modul yang diunduh dari sana sambil menyimpan modul yang ditulis sendiri untuk situs itu dalam folder khusus.

Berdir
sumber
1

Tidak yakin apa yang Anda maksud, tetapi kami menggunakan konvensi yang agak umum memisahkan modul in-house dari modul pihak ke-3.

Modul khusus 'Rumahan' akan ada di:

situs / semua / modul / custom

Modul pihak ke-3 ada di:

situs / semua / modul / vendor

Jika memiliki subdirektori tidak sesuai dengan kebutuhan Anda, saya yakin Anda dapat dengan mudah menghubungkan direktori / obscure / path / ke / modul Anda ke direktori modul drupal Anda.

stefgosselin
sumber