2009-12-08 3 views
3

Когда я создаю новый сайт Drupal, я обычно заканчиваю как минимум одним настраиваемым модулем и несколькими модулями, предоставленными сообществом. Чтобы сайт работал должным образом, необходимо установить множество параметров конфигурации для различных модулей. Это делает развертывание на новом примере Drupal кропотливым и подверженным ошибкам.Конфигурирование модулей Drupal из другого модуля

Я хотел бы дать моему настраиваемому модулю возможность конфигурировать все остальные модули. Либо при установке, либо при нажатии кнопки на странице администрирования моего модуля все необходимые значения конфигурации для других модулей будут программно установлены.

Как мне лучше всего это сделать?

ответ

5

AFAIK, нет никакого способа, чтобы добиться того, что вы имеете в виду легко. Я стараюсь использовать как можно больше в реализациях hook_update_N() и часто выполнять синхронизацию БД, как описано в моем ответе на this question. Однако это не сработает, если у вас уже есть живой сервер, с которым вам придется объединять данные.

Для этого я использую различные инструменты в соответствии с потребностями. Никто не совершенен, но здесь, однако небольшая коллекция из моих любимых:

  • Features. Это новая концепция и новый модуль. Идея довольно удивительная: она позволяет вам определить набор настроек/модулей/настроек и экспортировать их как функцию . Затем эта функция будет установлена, как если бы это был модуль на целевом сайте. Этот модуль не экспортирует все возможные настройки, но, тем не менее, он отлично работает с модулями, которые нуждаются в самой сложной конфигурации, такие как CCK, Views, ImageCache и другие ... Вы можете увидеть демонстрационную демонстрацию (~ 10 минут) here.

  • Backup and migrate. Это более радикальный подход: он просто сбрасывает и восстанавливает всю базу данных в целевой системе. Это хорошо, только если вам необходимо полностью переписать целевую систему.

  • Node export. Это позволяет экспортировать (и импортировать) узлы с установки drupal на другую. Он поддерживает массовые операции, но, к несчастью, не поддерживает перенос прикрепленных файлов и изображений.

  • Deploy. Из-за ограничений Узел экспорта Я когда-то изучал использование этого модуля (еще в разработке). Я, наконец, этого не сделал, и предпочел сделать слияние баз данных производства и промежуточной базы, но концепция кажется очень действительной, поскольку она позволяет импортировать/экспортировать сложный тип данных через SOAP.

  • Taxonomy import/export. Полагаю, это имя само собой разумеется. Он использует файлы для выполнения задач (XML или CSV).

  • Installation profiles (предлагается ctford) полезны при настройке новых сайтов. Они позволяют вам указывать модули для включения, темы по умолчанию и т. Д. При установке. Они могут быть весьма удобными, потому что есть инструмент командной строки, называемый Drush, который автоматизирует создание профилей установки. Недостатком является то, что профили предназначены для использования при установке, а не для развертывания отдельного модуля. Однако, возможно, можно взять код конфигурации, созданный Drush, и вызвать его, когда ваш модуль включен.

Наконец, вы можете найти набор инструментов для импорта/экспорта данных here.

HTH!

2

Я знаю, что вы имеете в виду, это боль, чтобы установить все модули вверх.

Я уверен, что вы можете исследовать все 3-й модули сторонних чтобы увидеть, как конфигурация имеет место и имитировать, что в пользовательском модуле, но я бы посоветовал вам против этого ...

Проблема заключается в том, что модули могут измените способ хранения своих настроек с одной версии на другую, поэтому всякий раз, когда вы обновляете новую версию любого модуля, вы должны сделать некоторую обратную разработку, чтобы убедиться, что ваш модуль конфигурации «один-на-один-клик» все еще работает нормально, , если вы спросите меня, это еще более болезненно, чем ручная настройка всех модулей для каждого проекта.

Просто расслабьтесь, успокойтесь и наслаждайтесь Drupal :)

3

вы смотрели на модуль «особенности»? это новая парадигма, представленная как часть открытого атриума, но также доступная как автономный модуль. из их описания:

«Модуль функции обеспечивает захват и управление функциями в Drupal Функция представляет собой набор Drupal сущностей, которые вместе взятые удовлетворяют некоторому потребительной случай

Особенности предоставляет пользовательский интерфейс и API.. для того, чтобы использовать различные компоненты для построения сайтов из модулей с помощью экспортируемых продуктов и объединять их вместе в одном функциональном модуле. Функциональный модуль подобен любому другому модулю Drupal, за исключением того, что он объявляет свои компоненты (например, представления, контексты, поля CCK и т. д.) в своем. info, чтобы он мог быть проверен, обновлен или возвращен программно ».

http://drupal.org/project/features

3

Installation profiles полезны при настройке новых сайтов. Они позволяют вам указывать модули для включения, темы по умолчанию и т. Д. При установке. Они могут быть весьма удобными, потому что есть инструмент командной строки, называемый Drush, который автоматизирует создание профилей установки.

Недостатком является то, что профили предназначены для использования при установке, а не для развертывания отдельного модуля. Однако, возможно, можно взять код конфигурации, созданный Drush, и вызвать его, когда ваш модуль включен.

+0

Если вы взглянете на первую ссылку в своем ответе (функции), вы увидите, что модуль соединяет очень много того, чего вы хотите достичь. Особенности также имеют встроенную интеграцию, BTW. Скринкаст подходит к делу и тоже полезен. :) – mac

+0

Да, я думаю, вы правы, что функции больше подходят для моих потребностей, чем профили установки. Я оставлю свой ответ на всякий случай, если он будет соответствовать чужим потребностям (если вы не считаете, что инсталляционные профили подходят для вашего ответа?). Благодарю. – ctford

+0

@ctford - Не нужно удалять сообщение, я думаю ... однако я приложил ваше предложение и добавил «Профили установки» в исходный список. – mac

0

Поскольку инициализация требуется только тогда, когда установлен Drupal, я бы подумал, что профиль установки является лучшим решением; чтобы сохранить модуль, который больше не используется, когда настройка настроена, кажется немного чрезмерной, ИМО.

Смежные вопросы