##  [Простая разработка сложных решений на вашем сайте: open source no-code инструменты на Drupal](/blog/prostaya-razrabotka-slozhnykh-resheniy-na-vashem-sayte-open-source-no-code-instrumenty-na) 

/sites/default/files/2023-04/edit_1280x450.jpg

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

Мы в [Initlab](https://www.initlab.ru/) активно осваиваем фишки no-code, внедряем их на свои проекты и на проекты наших клиентов.

В этой статье мы расскажем о no-code инструментах   
Drupal, их преимуществах и недостатках. Она будет полезна владельцам сайтов, разработчикам, и тем, кто хочет запустить масштабный проект со сложным функционалом, но пока не нашёл подходящей CMS.

## Немного про no-code

Отметим важное: всё описанное будет полезно для масштабных проектов со сложным функционалом и перспективой развития. Большие интернет-магазины, новостные порталы, сайты с множеством личных кабинетов и т.д. Стандартные небольшие сайты могут попросту не нуждаться в том, что предлагает Drupal.

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

И речь идёт не о готовых блоках для сайта, как в популярных конструкторах. No-code на Drupal — это отклик профессионального сообщества на потребность именно в сложном функционале.

Как любое универсальное решение, no-code хорош для быстрого и недорогого результата. Он может медленно работать на проектах с большой нагрузкой или большим объёмом данных. Для подобного, как прежде, хорош опытный программист, который напишет индивидуальное, оптимизированное под конкретный проект, решение.  
Но всё же, для большинства задач, no-code Drupal — отличная подмога.

Хотя у нас хватает грамотных специалистов, которые могут собрать кодом что угодно, мы всё же стараемся чаще пользоваться инструментами Drupal. Не мы одни идём этим путём — всё IT-сообщество так развивается, стараясь переиспользовать код и не изобретать велосипед. Готовые модули не нужно кодить и поддерживать, они ускоряют разработку и, самое главное, благодаря open source, весь труд, основанный на готовом коде, никуда не денется.

No-code, как правило — это арендуемые инструменты, работа с которыми проходит в облаке и в готовом виде передаётся со стороннего сервера к нам на сайт. Если завтра разработчик софта поднимет цены или решит уйти из России, деваться будет некуда — придётся доплачивать или прощаться. А фишка инструментов на open source в том, что вы полностью владеете результатами работы.

В недавней [статье Дриса Байтаерта](https://opensource.com/article/23/4/preserving-open-web-drupal) — создателя Drupal — звучит эта же мысль: пользователи и бизнесы должны иметь возможность владеть своими данными и кодом своих сайтов. Open source позволяет собирать решения из кирпичиков, которые у тебя никто не отнимет.

## No-code инструменты Drupal и принцип их работы

## ECA (Event — Condition — Action)

**Для чего нужен:** создавать и редактировать бизнес-процессы на сайте: отправку писем, систему прав управления контентом и т.д.

**ECA** — движок правил для Drupal 9+. Если вы работали с конструкторами чат-ботов или настраивали события в CRM вроде Битрикс24, скорее всего, вам знаком принцип работы [ECA](https://www.drupal.org/project/eca).

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

![drupal](/sites/default/files/inline-images/%D1%87%D0%B0%D1%82-%D0%B1%D0%BE%D1%82.png)*Пример конструктора чат-бота*ECA довольно новый инструмент. Мы распробовали его при создании собственного хелпдеска и остались настолько довольны, что начали понемногу внедрять на проекты наших клиентов.

![eca drupal](/sites/default/files/inline-images/eca%20admin.png)*ECA — панель управления*У ECA три профита:

- делать ECA-правила проще, чем кодить — достаточно знать алгоритмы, а не программирование;
- готовые алгоритмы надёжнее, потому что ты не работаешь с самописным кодом, где из-за одной ошибки всё может развалиться вплоть до падения сайта — как максимум написанное не сработает и нужно будет искать, как его запустить;
- заказчик самостоятельно может конструировать акции, управлять доступами к материалам, настраивать рассылки и многое другое.

![eca no code drupal](/sites/default/files/inline-images/2_4.png)![eca drupal no code](/sites/default/files/inline-images/2-1.png) *Операция в виде кода VS та же операция в ECA*На скриншотах операция из нашего хелпдеска: при сохранении времени, затраченного на задачу, мы собираем список получателей уведомления — владелец заявки, админ проекта, координатор разработчика, клиент проекта. Если в списке есть два одинаковых получателя, например, владелец заявки и координатор — это один пользователь, то дубликат удаляется. Для этой операции можно написать простыню кода, а можно настроить 5 окошек с условиями.

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

![drupal eca no code](/sites/default/files/inline-images/3_3.png)![drupal eca no code](/sites/default/files/inline-images/3-1.png)*Чтобы схема слева не превратилась в схему справа :)*Итог. Самый очевидный плюс — лёгкость в управлении даже при помощи специалиста невысокого уровня. А это экономия и простота проверки гипотез. У инструмента есть [сайт](https://ecaguide.org/), который поможет обучиться премудростям работы с ним.

## Views 

**Для чего нужен:** сконструировать запрос в базу данных, настроить фильтры по запросам, сортировать данные, конструировать отчёты.

**Views** — это конструктор запросов в базу данных. База данных (БД) — это место, где в таблицах хранятся (вот сюрприз) данные: статьи, товары в каталоге, отзывы, записи форума — то, чего могут быть тысячи экземпляров.

У каждой записи в таблице есть свои характеристики: у товара — артикул, цена, раздел каталога, у статьи — заголовок, дата публикации, автор. Всё это — ячейки в БД.

И вот я, как владелец сайта, формирую запрос: покажи мне товары из этого раздела каталога по вот этой цене. Views формирует запрос и отправляет мне нужные данные.

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

С помощью Views можно **настроить динамический каталог**, когда отображаются товары из раздела, в котором сейчас находится пользователь. И уже их можно фильтровать по нужным характеристикам. Это касается любых данных, которые есть в Drupal: статьи, новости, сообщения — что угодно.

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

Во Views есть удобный **инструмент массовых операций с сущностями**. Когда нам нужно снять условную сотню публикаций с сайта или перенести тысячу товаров с одного склада на другой, можно отфильтровать сущности по нужным нам свойствам, выделить их в выдаче и сделать что нужно — удалить/переместить/скрыть и т.д.

Например, у нашего клиента 50 типов товаров, у каждого из которых 10 характеристик. Если сразу сделать для менеджера страницу для управления с готовыми фильтрами, на странице их будет 500 штук, чего не потянет ни один браузер.

Если сейчас нам нужно отобрать товары по производителю и по цвету, как сделать так, чтобы на странице были только они? Как построить такой интерфейс? Можно просто **обучить менеджера пользоваться Views**.

Мы записали видео с инструкцией, куда нажимать, как добавлять фильтры и пользоваться. Для этого мы создаём базовую страницу, выбираем нужные фильтры, добавляем их, сохраняем и переходим на страницу с массовыми операциями. Там нас уже ждут наши условные «Цвет» и «Производитель» — можно делать с товарами то, что нужно. Views — инструмент большой, но менеджеру хватит и малой части функционала.

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

Помимо работы с фильтрами и каталогами, с помощью Views очень удобно **формировать отчёты любых конфигураций** — хоть узнать среднюю стоимость всех заказов за февраль, хоть количество красных зонтиков, проданных за год.

![drupal views no code](/sites/default/files/inline-images/1_4.png)![drupal views no code](/sites/default/files/inline-images/1-1.png)*Пример из нашего хелпдеска*Мы можем запросить задачи по статусу, типу услуги, исполнителю-пользователю, за любую дату или определённой длительности.

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

Или главред хочет выдать премии за самые лучшие статьи. Он сортирует их по количеству просмотров и награждает самые читаемые.

Сбор каталогов или новостных колонок с помощью Views далеко не новинка — мы пользуемся этим ещё с Drupal 6.

![views drupal no code](/sites/default/files/inline-images/views.png)**Итог.** Программировать подобное — сотни часов: интерфейс взаимодействия пользователя с каталогом, отображение отчётности и т.д. Ведь настраивать нужно не просто «выведи товары», а выведи картинку, заголовок, цену, кнопку «в корзину», расположи их в сеточку/табличку/списком. Благодаря Views это делается мышкой.

## ECK (Entity Construction Kit)

**Для чего нужен:** создавать типы сущностей с пользовательскими свойствами и управлять ими.

Звучит сложно, давайте разбираться.

Любые данные, которые в большом количестве «плодятся» в Drupal — страницы, товары, комментарии, пользователи — это сущности. А есть типы сущностей — то, как система Drupal «понимает», что за вид данных перед ней.

Условно говоря, описание товара, новость или статья — это всё текст с картинкой. Но поля и отображение в них совершенно разные. Именно для того, чтобы система их отличала друг от друга и нужна заморочка с типами сущностей.

В базовой комплектации Drupal и его модули **поставляют типы сущности:** «страница», «пользователь», «комментарий».  
При создании интернет-магазина, мы ставим модуль Commerce, и у нас появляются два новых типа сущностей: «продукт» и «вариация продукта». Инструмент [ECK](https://www.drupal.org/project/eck) нужен, чтобы **дополнять этот список.**

С помощью **ECK (Entity Construction Kit)**, конструктора сущностей, мы можем **создать новый тип сущности, наделить его свойствами и дальше с этими сущностями взаимодействовать.**

У типов сущностей есть набор характеристик и, как правило, страница, при посещении которой ты видишь сущность. То есть конкретный url, введя который в браузер ты попадаешь, допустим, на статью с типом сущности «статья». У неё есть поля «заголовок», «содержимое», «автор». Бывает так, что нам сущность нужна, а страница от неё — нет.

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

Что происходит благодаря этому:

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

То есть нам не нужна страница с описанием ткани, куда можно зайти и почитать, что «испокон веку вещи из хлопка символ мудрости и изящества» — ткань интересна нам только как набор свойств.

Ещё один пример. На сайте есть пользователи, в анкете которых есть поля: «город», «страна», «номер телефона», «опыт работы» и т.д. Каждое поле может содержать одно значение. И вот у нас задача — добавить поле «мессенджер», с двумя полями — тип мессенджера и логин, или вообще тремя — «должность», например. И мы создаём такую сущность через ECK, которая выглядит уже вот так:

![drupal eck no code](/sites/default/files/inline-images/messenger-1.png)И таких в мессенджере может быть сколько угодно, каждая из них — ECK сущность.

Расширяем пример. Каждый пользователь на сайте — это профиль компании, допустим, туристической. Здесь у нас гиды, переводчики, транспортные компании, отели, магазины и т.д. И мы добавляем в профиле пользователя оказываемые услуги:

![drupal eck no code](/sites/default/files/inline-images/messenger-2.png)Жмём кнопку «Добавить» и заполняем доступные поля. Можно внести сколько угодно любой из сущностей, в каждой из которых будет свой набор полей.

- Модуль ECK в Drupal автоматически создаёт в базе данных таблицы, нужные для хранения сущности и её полей, позволяет создавать, редактировать, отображать и удалять экземпляры сущности без написания кода программистом.
- Сущности поддерживают мультиязычность и версионность.
- Drupal позволяет гибко настраивать права доступа пользователей различных ролей к сущностям.
- Все сущности Drupal легко доступны через веб-сервис, например, если вам понадобится интегрировать сайт с внешней системой для импорта данных, отдавать данные в мобильное приложение и т.д.
- Модуль Views позволяет строить отчеты по любым сущностям и их полям.

И все это без написания кода!

**Итог.** Разумеется, кодить сущности и типы сущностей дольше, чем накидать мышкой в готовом инструменте. Благодаря ECK можно ускорить и упростить работу с сайтом.

## Layout Builder

**Для чего нужен:** построить сетку/разметку любой страницы.

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

**Layout Builder** помогает **сделать грамотную вёрстку** из 2-3-4-х колонок, внутри которых мы расположим нужные элементы. При этом Layout Builder уже позаботился об адаптивности — страница будет хорошо смотреться и с компьютера, и с телефона.

Этот инструмент доступен начиная с Drupal 8. Там есть шаблоны на уже упомянутые 2-3-4 колонки, соотношение которых прописано в процентах. Если по какой-то причине вас не устраивает распределение ширины-высоты, его можно перенастроить. Но большинству подходят готовые варианты.

Layout Builder может выводить любые блоки Drupal, в том числе динамически формируемые, из базы данных с помощью Views, а также блоки сущностей ECK.

![layout builder drupal no code](/sites/default/files/inline-images/4_2.png)![drupal layout builder no code](/sites/default/files/inline-images/4-1.png)*Ещё один пример из нашего хелпдеска: страница проекта*Вот так легко можно собрать её внешний вид при помощи Layout Builder.

**Итог.** Строить такую разметку вручную по HTML непросто: нужно следить, чтобы она не разъезжалась при масштабировании окна. Здесь всё посчитано, адаптивно и работает стабильно.

## Кто может с этим работать?

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

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

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

## Преимущества no-code инструментов

Многие плюсы уже звучали в статье, но давайте соберём их в одном месте.

**Проще.** Сложный функционал, который раньше требовал десятки тысяч часов на разработку, отладку и тестирование, теперь доступен по нескольким кликам.

**Безопаснее.** Инструмент, в который упакован опыт Drupal-разработчиков со всего мира, более надёжен и менее уязвим, чем самописный код.

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

## Недостатки

**Код проще отладить.** На текущий момент, есть куда больше инструментов для контроля качества кода и его исправления. Когда что-то идёт не так в no-code, порой непонятно, где искать проблему. Но мы не унываем: за каждым описанным инструментом стоит по команде, которая работает над развитием, ведёт поддержку своих детищ и помогает разобраться всем, кто столкнулся со сложностями. Постепенно весь новый опыт перекочует в инструкции и функционал самих инструментов.

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

**Не всесильно.** Всегда можно выдумать что-нибудь эдакое, чего эти инструменты не могут и нужен будет старый-добрый код. Комбинаций человеческих хотелок — великое множество, а здесь всё-таки речь об универсальности и удобстве, которых, в большинстве случаев, достаточно.

## Заключение

No-code — закономерная ветвь эволюции системы управления контентом (CMF). В Drupal есть уникальные инструменты с открытым кодом, аналогов которых пока не наблюдается на других платформах.

Если вы планируете громадный проект со сложной архитектурой и вам требуется высокая скорость прототипирования, добавления нового функционала для быстрой проверки гипотез — от души рекомендуем вам Drupal. И совсем не потому, что команда Initlab может в нём что угодно, а с новыми фишками — ещё быстрее, чем раньше.



[Drupal](/blog/drupal)

[Drupal 8](/blog/drupal-8)

[Сборка на Drupal](/blog/sborka-na-drupal)

 

Ещё по теме

[Вышел Drupal 10: что нового и почему лучше начать миграцию на новую версию уже сейчас](/blog/vyshel-drupal-10-chto-novogo-i-pochemu-luchshe-nachat-migraciyu-na-novuyu-versiyu-uzhe-seychas)

[Простая интеграция Drupal с Telegram](/blog/prostaya-integraciya-drupal-s-telegram)

[Гибкое управление правами пользователей в Drupal без написания кода](/blog/gibkoe-upravlenie-pravami-polzovateley-v-drupal-bez-napisaniya-koda)

 

 

   

 [](https://drupal-coder.ru/rss.xml)