Чи можна налаштувати Drupal на пошук модулів в інших місцях?


13

Я розміщую свої модулі на сайтах / all / module. Чи є спосіб налаштувати Drupal, щоб знайти більше модулів і в інших місцях?


Відредаговано

Я використовую віртуальні хости часто, але не так, як ви описали. Формат, з яким я знайомий, виглядає приблизно так, і це допомагає мені поставити весь робочий проект кудись інше, а не в 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>

Я думаю, що ти описуєш щось інше, правда? Я намагаюся залишити папку drupal всередині www як завжди, але переміщую лише сайти / всі / модулі в інше місце, але я все ще не можу зрозуміти, як буде виглядати запис VHost у цьому випадку. Скажімо, я хочу перенести його на C: / proj / testdrupal. Я сподіваюся, що я вас цілком не зрозумів.

Відповіді:


14

Перш ніж відповісти, корисно ознайомитись з тим, як Drupal знаходить модулі. Drupal використовує список пропозицій з кореня Drupal, щоб визначити, де знайти модулі. У порядку пріоритетності:

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

Якщо Drupal не знайде модуля в (1) , він перевіряє (2) . Якщо його там немає, він перевіряє (3) тощо.

Для (1) , якщо ви просто використовуєте основну, односайтову установку Drupal, $SITENAMEє default. Інакше:

  • В Drupal 6 $SITENAME- ім'я хоста сайту. Якщо ваш сайт знаходиться за адресою example.com, $SITENAMEбуде example.com.
  • У Drupal 7, $SITENAMEвизначений в sites/sites.php. Якщо ви подивитесь example.sites.php, ви можете побачити, як це визначити. Важливо також зазначити, що будь-який перелічений там модуль може бути корисним лише для конкретних сайтів, а не для всіх сайтів.

У (2) будь-який знайдений там модуль буде корисним на будь-якому сайті інсталяції Drupal. Він також залишиться недоторканим під час оновлення основної установки. Це, звичайно, рекомендоване місце для розміщення модулів і, ймовірно, вся документація, яку ви прочитали, сказала вам, щоб ви розміщували тут свої модулі.

(3) використовується для встановлення профілів, які потребують конкретного модуля. Профілі встановлення по суті є способом визначення користувальницького початкового стану для сайту Drupal. Наприклад, Drupal поставляється з двома вбудованими профілями інсталяції: Стандартний, який включає найбільш часто використовувані функції, і Мінімальний, який включає лише мінімальний мінімум, необхідний для роботи сайту Drupal.

(4) використовується ядром Drupal. Хоча ви можете технічно додавати сюди модулі, і вони будуть доступні для всіх сайтів, ви не повинні. Серйозно. Під modulesчас оновлення ядра Drupal ця папка зачіпається, і це спричинить проблеми, якщо ви наклеюєте модулі, щоб ваш сайт працював там.


Тепер, коли фон не в змозі, ви можете використовувати хитрості файлової системи, щоб розмістити свої модулі поза тим, де виглядає Drupal.

Наприклад, ви можете встановити символічне посилання з sites/all/modulesіншого каталогу поза установкою Drupal:

  • У системах на базі Unix / Linux / BSD: ln -s /path/to/modules/folder /path/to/drupal/sites/all/modules
  • У Windows Vista / Server 2008/7 та новіших версій: mklink C:\path\to\drupal\sites\all\modules C:\path\to\custom\modules\folder

Наскільки мені відомо, у більш ранніх версіях Windows, що не мають mklink, ви не можете багато чого зробити .


Велике спасибі, це справді пояснює це, але у мене все ще виникають труднощі з налагодженням його роботи. Чи можете ви подивитись у розділі "Редагувати" у моєму дописі. Тут більше, ніж може вміститися. Спасибі.
theoldold

@sameold Я виправив і уточнив частину символічних посилань. У Windows символічні посилання начебто схематичні, але я вважаю, що команда, яку я надав, повинна працювати.

3

У Drupal 7 каталоги, в яких Drupal шукає модулі, є такими:

  • модулі
  • профілі / $ профіль / модулі
  • $ config / модулі

$ profile - це значення, повернене з drupal_get_profile () ; $ config - це значення, повернене з conf_path () .
Функція, яка здійснює пошук системних файлів об'єктів (модулів, тем тощо), - drupal_system_listing () .

Такі самі каталоги шукаються і в Drupal 6. Різниця полягає лише в тому, що $ profile є глобальною змінною; коли глобальна змінна не встановлена, функція отримує значення стійкої змінної "install_profile", яка має значення за замовчуванням "за замовчуванням".


2

Ви можете розмістити їх або на сайтах / all / module, тоді вони будуть доступні для всіх сайтів (якщо у вас конфігурація на декількох сайтах), у сайтах / default / модулях для сайту за замовчуванням або сайтів / site.com / module, якщо у вас це є. Для останніх каталогів це означає, що вони будуть доступні лише для певного веб-сайту.

Крім того, ви можете організувати їх так, як вам потрібно, нижче цих папок, тобто ви можете створити там будь-які підпапки. Типова річ - це створити папку contrib, а потім розмістити завантажені з неї модулі, зберігаючи самостійно написані модулі для цього сайту у спеціальній папці.


1

Не впевнений, що ви маєте на увазі, але ми використовуємо дещо поширену умову відокремлення внутрішніх модулів від сторонніх модулів.

Спеціальні модулі "домашнього виготовлення" будуть такими:

сайти / всі / модулі / нестандартні

Модулі сторонніх розробників будуть:

сайти / всі / модулі / постачальник

Якщо наявність підкаталогів не відповідає вашим потребам, я вважаю, що ви могли легко позначити каталог / затемнення / шлях / до / модуля в каталог модулів вашого drupal.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.