Настройка пользовательских модулей


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

Что меня интересует, так это развертывание и архитектура обслуживания кода. Исходя из объектно-ориентированного фона, моей первой реакцией было предложить многоуровневую архитектуру в следующем духе:

------------------------
Client Customization Modules
----^ ^ ^ ^ ^ ^ ^ ^-----
Generic Self-created Modules
----^ ^ ^ ^ ^ ^ ^ ^-----
  Contribution Modules
----^ ^ ^ ^ ^ ^ ^ ^-----
      Drupal Core
------------------------

Это означает, что пользовательские основные модули расширения ("Самостоятельно созданные модули") будут перезаписаны/перегружены везде, где соответствующий клиент требует индивидуальных изменений, используя второй пользовательский уровень "Модулей настройки клиента". С моей точки зрения, это выгодно, поскольку позволяет сохранить общие "Самостоятельно созданные модули" идентичен для всех клиентов, поэтому исправления ошибок можно легко выполнить в одном центральном расположении svn.

Теперь коллега резко выступил против такого подхода, заявив, что наличие 4-го уровня модуля, который в основном перезаписывает крючки 3-го уровня, было бы крайне плохой практикой в разработке Drupal, поскольку это повышает сложность приложения и делает отладку практически невозможной.

Альтернативой было бы создание избыточных копий слоя "Универсальных самостоятельно созданных модулей" для каждого клиент и непосредственно настраивает эти экземпляры. Хотя это, безусловно, возможно, исправление ошибок или изменение общей функциональности тогда было бы невозможно в центральном месте, поэтому этот подход кажется мне довольно грязным.

Действительно ли считается плохой практикой или настоятельно не рекомендуется настраивать собственные пользовательские модули путем "подключения пользовательских крючков" способом, предложенным выше?

 3
7
Author: kiamlaluno, 2011-07-18

2 answers

В Drupal большая часть настройки выполняется не путем переопределения существующего кода, а путем расширения или изменения. Большинство модулей вклада и ядро Drupal предоставляют точки расширения (крючки ) и переменные конфигурации. Ваши пользовательские модули ( созданные самостоятельно и настройка клиента ) должны повторно использовать эти крючки и конфигурации.

Для ваших самостоятельно созданных модулей вы можете использовать модуль Функции для простого экспорта конфигурации в код. Чтобы настроить свои функции на уровне настройки клиента , вы можете выбрать либо использовать крючки изменений, либо переписать часть кода, сгенерированного функциями, чтобы сделать его настраиваемым с помощью конфигурации в БД. Видишь http://developmentseed.org/blog/2009/jul/09/development-staging-production-workflow-problem-drupal{[3] } и http://www.archive.org/details/CodeDrivenDevelopmentUsingFeaturesEffectivelyInDrupal6And7 для получения дополнительной информации о модуль функций. Кроме того, Спецификация комплекта содержит информацию о том, как создавать модули функций многократного использования (с функциями)., см. Также http://funnymonkey.com/building-features-for-install-profiles и http://nodeone.se/blogg/an-alternative-way-of-structuring-features-for-distributions.

 2
Author: Pierre Buyle, 2011-07-19 12:51:37

Все должно быть хорошо, но, конечно, проведите тесты производительности.

Насколько обширны эти настройки? Можете ли вы использовать переменные Drupal или таблицы базы данных для управления своим поведением на уровне 3?

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

 0
Author: Sacha Chua, 2011-07-18 17:54:59