Apps - это модуль, который можно позиционировать как следующий шаг в развитии фич. Для нас, в частности, он представляется более удобным и понятным именно как инструментарий для добавления на сайт новых возможностей, и с его помощью эти добавления можно выполнять без какого-либо вреда для юзабилити. Но, что особенно важно, в качестве инструмента для работы модуль Apps будет понятен не только искушённому друпалеру, но и обычному пользователю. Отныне - при помощи данного модуля - добавлять новый функционал ваши клиенты смогут просто с помощью одного клика (Install app).
Обычному пользователю apps скорее всего напомнит chrome web store, где каждый выбирает себе то “приложение” к базовой версии CommerceBox, которое необходимо. Apps, заметим, состоит из двух частей - серверной и клиентской. Клиентская часть модуля выводит список всех доступных к установке приложений, а также, сообщает пользователю о вышедших обновлениях. Серверную часть обеспечивает модуль appServer. Он занимается тем, что возвращает json обьект с данными по каждому app-у (c названиями, рейтингами, версиями и т.д.) клиентской части. Давайте рассмотрим всё это в деталях.
Настройка серверной части
Как описано выше, за серверную часть отвечает модуль appServer, с помощью которого можно через UI настроить apps-ы. Он создает словарь таксономии Server Type, а также два типа контента - App Release и App. Ниже мы раскажем для чего они предназначены.
После того как установлен сервер в словаре таксономии Server Type можно создать термин, который и будет неким сервером, который мы будем указывать на клиентской стороне.
Сам же app формируется с помощью ноды типа App Release, его настройка состоит из заполнения полей Name (required), Changelog, Logo, Screenshot, Manifest, Server type. Если с полями Name (required), Changelog, Logo, Screenshot все понятно и они говорят сами за себя, то в Manifest-е происходят самые важные действия. Чтобы его составить рекомендуем ознакомится с OAS (Open App Standards).
Для начала следует вникнуть в систему создания apps-ов: нам нужно указать не только модули, которые стоит скачать и установить (в манифесте это будет Dependencies), но также указать и кастомный модуль (в манифейсте он будет описыватся как downloadable и machine_name), который в своем .info файле будет содержать список dependencies[] всех Dependencies указанных в манифесте. На самом деле, этот модуль - единственный, который включится при инсталляции app-а на клиентском сайте, но так как в нём содержатся зависимости других модулей, то автоматически включатся и эти другие модули.