Прежде чем ответить, полезно немного рассказать о том, как Drupal находит модули. Drupal использует список предложений от корня Drupal, чтобы выяснить, где найти модули. В порядке приоритета:
sites/$SITENAME/modules
sites/all/modules
profiles/$INSTALLPROFILE/modules
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 .
В Drupal 7 каталоги, где Drupal ищет модули, следующие:
$ profile - это значение, возвращаемое из drupal_get_profile () ; $ config - это значение, возвращаемое из conf_path () .
Функция, которая ищет системные объектные файлы (модули, темы и т. Д.) - это drupal_system_listing () .
Те же каталоги ищутся в Drupal 6. Единственное отличие состоит в том, что $ profile является глобальной переменной; когда глобальная переменная не установлена, функция получает значение постоянной переменной "install_profile", значение по умолчанию которой равно "default".
источник
Вы можете поместить их либо в сайты / все / модули, тогда они будут доступны для всех сайтов (если у вас есть конфигурация с несколькими сайтами), в сайтах / по умолчанию / модули для сайта по умолчанию или сайтов / сайт.com / modules, если у вас есть это. Для последних каталогов это означает, что они будут доступны только для этого конкретного сайта.
Кроме того, вы можете расположить их как угодно под этими папками, то есть вы можете создавать там любые подпапки. Типичная вещь, которую нужно сделать, - это создать папку contrib, а затем поместить туда загруженные модули, оставив при этом самописные модули для этого сайта, в пользовательскую папку.
источник
Не уверен, что вы имеете в виду, но мы используем несколько распространенное соглашение об отделении внутренних модулей от сторонних модулей.
«Самодельные» пользовательские модули будут находиться в:
Сторонние модули будут в:
Если наличие подкаталогов не соответствует вашим потребностям, я полагаю, вы можете легко создать символическую ссылку на каталог / obscure / path / to / module в каталог модулей вашего drupal.
источник