Применение системы контроля версий к проектам на Drupal

Drupal очень многое позволяет делать из админки. Создание типов публикаций, представлений, настройка модулей и многое другое. Это сильная сторона и одновременно проклятие проектов на Drupal.

Многие разработчики, особенно когда речь идет о работе над проектом в команде, используют системы контроля версий. Для меня это, к примеру, GIT.

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

Синхронизация мета-данных

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

Потому применим подход, когда до очередного коммита создаётся сравнительный скрипт изменений структуры и данных в таблицах, отвечающих за структуру сайта. А при деплое изменений — этот скрипт выполняется (например, как часть какого то модуля MyModule.install).

Этот подход вполне успешен и применяется. Какие ещё есть варианты?

Использование одной базы

Иногда используют для dev и production версии сайта одну и ту же базу данных.

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

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

Модуль Features

И ещё несколько десятков модулей, которые поддерживают концепцию features :)

Идея заключается в том, чтобы генерировать PHP код структурных изменений в виде отдельных модулей. Формируется код не на SQL, а на PHP с использованием разных Drupal-core и contributed APIs.

Как оказывается, многие модули поддерживают Features намеренно или «случайно», работая с базовыми Drupal API. Вы также можете написать свои «мосты» для Features, если разрабатываете что то совсем кастомное и не укладывающееся в типичные структуры данных CMS.

Для чего можно использовать подход, реализуемый модулем Features:

  • Конструктор публикаций, типы публикаций, поля;
  • Коллекции полей;
  • Представления (модуль views);
  • Словари (таксономия);
  • Переменные (выборочные данные таблицы variable);
  • Меню, пункты меню;
  • Настройки модуля context;
  • Настройки модуля node_queue;
  • Права и роли пользователей;
  • Стили изображений;
  • Контент (избранные публикации вместе со всеми данными — картинками, текстами и т.д.)
  • и многое другое.

Вот пример набора доступных компонентов в одном из проектов для создания модуля через feature:

Какие то связи features распознаёт сам. К примеру, достаточно указать тип публикации — и в создаваемый модуль будет добавлены описания полей. Если какие то описания полей уже объявлены в другой «фиче», то создаваемый модуль получит от него зависимость. Другие же связи можно добавлять вручную, выбирая их из списка.

Мало букафф? Читайте есчо !

Добавляем параметр к картинкам в Drupal, для преодоления кеширования со стороны браузера

Январь 4, 2018 г.

У картинок, к которым применены стили, уже есть один параметр - это itok. Он появился в 7ке для уменьшения возможностей проведения DDoS атак на ваш Drupal сайт. СЕО-шникам он не нравится, и иногда они просят его отключить. Как отключить ITOK читайте ...

Читать

Подключение CAPTCHA к пользовательской форме в drupal

Февраль 19, 2012 г.

У вас есть запрограммированная форма в друпал, и вы хотите добавить в неё антиспам поле из модуля CAPTCHA. Смотрим как это сделать. Для начала модуль СAPTCHA надо скачать и установить (активировать на странице доступных модулей сайта - /admin/build/modules). ...

Читать

Кастомные настройки сайта в Drupal

Март 9, 2025 г.

На сайте всегда (или почти всегда) возникает задача управления настройками вроде телефон, email, какие то текстовые элементы, вроде копирайта, адрес организации и т.п. С точки зрения данных - требуется объект в терминах шаблонов проектирования - синглтон. ...

Читать

Корзина не пуста - изменим стиль пункта меню

Август 2, 2023 г.

Использую Drupal Commerce, и в меню у меня есть пункт "Корзина", со ссылкой на корзину пользователя. Хочется, чтобы стиль пункта меню менялся, если корзина не пуста. Я буду использовать hook_preprocess_menu темы, чтобы изменить нужный пункт меню ...

Читать
 

Комментарии к «Применение системы контроля версий к проектам на Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: