Друпалургия

JSONAPI - забудьте всё, чему вас учили в Drupal-школе!

Drupal в рунете - сб, 26/08/2017 - 16:23


В продолжение темы о headless-Drupal хочу рассказать о замечательнейшем модуле JSONAPI. Согласно официальному описанию, модуль является имплементацией спецификации JSON API для Drupal.. Что же представляет из себя эта спецификация? Во-первых, сам формат данных (структура полей). Во-вторых, формат запроса данных - фильтрация, необходимые поля, сортировки и т.д. Лично я считаю этот модуль крайне необходимым для построения headless-систем, ведь JSONAPI не только делает данные более удобными для разбора на фронтенде, но и существенно сокращает этап разработки бэкенда и экономит не только ваше время, но и ресурсы сервера. И вот почему:

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

Итак, перейдём к перечислению возможностей и преимуществ модуля.

Формат данных.

Известно, что в восьмёрке в ядре есть модуль REST, который позволяет получать в json любые материалы, но есть одно "но" - структура данных там будет приблизительно такая:

{
  title: [
    value: 'My node'
  ]
}

С виду, ничего страшного, но в таком случае к значению поля обратиться можно будет только через "titlte[0].value". Конечно, всем, кто знаком с друпалом, знакома и эта запись, но по факту такие данные крайне неудобно разбирать в Javascript и тем более неудобно их формировать. JSONAPI делает эту структуру куда более понятной:

{
  "data": {
    "type": "node--my-bundle",
    "id": "2ee9f0ef-1b25-4bbe-a00f-8649c68b1f7e",
    "attributes": {
      "title": "An Example"
    },
    "relationships": {
      "uid": {
        "data": {
          "type": "user--user",
          "id": "53bb14cc-544a-4cf2-88e8-e9cdd0b6948f"
        }
      }
    }
  }
}

Как видно, данные разделены на две секции - attributes и relationships, в первой отображаются поля самой запрошенной сущности, а во второй - поля-референсы - ссылка на автора, таксономия и т.д.

Запрос нескольких сущностей

Чтобы запросить одну сущность, необходимо сделать GET-запрос на адрес вида /jsonapi/{entity_type}/{bundle}/{uuid}, например:

/jsonapi/node/article/53bb14cc-544a-4cf2-88e8-e9cdd0b6948f

Как видно, здесь необходимо оперировать uuid, то же самое касается и PATCH- и DELETE-запросов.

Однако, если мы запросим адрес /jsonapi/node/article, то получим список всех статей. Вернее не всех, а только 50 штук, т.к. в модуле JSONAPI стоит ограничение выводить не более 50 сущностей. Но этот число можно уменьшить, просто указав в запросе параметр количества сущностей на страницу:

http://example.com/jsonapi/node/article?page[limit]=10

Чтобы получить ещё десяток статей, укажем параметр offset:

http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10

Сортировка выборки

Полученную выборку можно отсортировать по любым критериям. Тут стоит отметить, что многие параметры в JSONAPI имеют две формы записи - полную и сокращённую. Например, отсортировать статьи по дате создания можно так:

SHORT
sort=created

NORMAL
sort[sort-created][path]=created

Отсортировать по имени автора в обратном порядке:

SHORT
sort=-uid.name

NORMAL
sort[sort-author][path]=uid.name
sort[sort-author][direction]=DESC

Отсортировать одновременно по нескольким критериям:

SHORT
sort=-created,uid.name

NORMAL
sort[sort-created][path]=created
sort[sort-created][direction]=DESC
sort[sort-author][path]=uid.name Фильтрация выборки

Параметры фильтров по своей структуре аналогичны параметрам сортировки. Вот пример для получения только опубликованных материалов:

SHORT
filter[status][value]=1

NORMAL
filter[status-filter][condition][path]=status
filter[status-filter][condition][value]=1

Хочу заметить, что в данном случае в краткой форме status - это системное название поля, а в полной форме status-filter - это произвольное название фильтра.

Как вы уже догадались, с помощью фильтров можно запрашивать ноды по nid, а не по uuid.

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

SHORT
filter[uid.name][value]=admin

NORMAL
filter[name-filter][condition][path]=uid.name
filter[name-filter][condition][value]=admin

Также есть возможность фильтровать не только по критерию равенства, доступны операторы "IN", "NOT IN", ">", "<", "<>", "BETWEEN" и "CONTAINS". Вот пример для фильтра по нескольким именам авторов:

NORMAL
filter[name-filter][condition][path]=uid.name
filter[name-filter][condition][operator]=IN
filter[name-filter][condition][value][]=admin
filter[name-filter][condition][value][]=john

Больше примеров вы найдёте здесь

Запрос связанных сущностей

По умолчанию связанные сущности не возвращаются сервером, отдаётся лишь информация о типе сущностей и их uuid в секции relationships. Однако мы можем запросить и их, просто указав параметр include в нашем запросе, например include=uid добавит в ответ сервера все поля авторов. Вернее сказать не поля, а сущности, просто они будут не в секции data, а в секции included.

Указание нужных полей

Часто нам не нужны все поля сущности. Для этого есть параметр fields. Например:

http://example.com/jsonapi/node/article/{{article_uuid}}?include=uid&fields[node--article]=title,body&fields[uid]=name

Этот запрос выдаст нам заголовок статьи, её текст и имя автора.

Итого

Как видно, Views нам действительно теперь не нужен. В принципе, теперь для сборки бэкенда на Drupal достаточно создать все нужные сущности и их поля и установить модуль jsonapi. И всё.

Что у модуля под капотом?

Говорят, что при некоторых запросах JSONAPI даже не делает полный бутстрап друпала, но я не проверял это. Как бы то ни было, по быстродействию даже на глаз видно, что модуль работает быстрее, чем views. А логирование SQL-запросов показало, что сперва делается один запрос, возвращающий айдишники сущностей, а сами сущности берутся из таблицы cache_entity. В отличие от того же views - не нужно тратить ресурсы на построение объекта самого представления.

Недостатки

- не поддерживаются обратные референсы (например, в выборке по пользователям не получится собрать их материалы)
- не поддерживается агрегация
- нельзя получить за один запрос более 50 сущностей (но существуют обходные пути - параллельные запросы либо модуль Subrequests)

Первые два недостатка порой весьма критичны, причём их никогда не пофиксят, ибо это подразумевается в самом стандарте спецификации JSONAPI. Тем не менее, с такими запросами легко справляется Views, именно поэтому я и писал, что он почти не нужен.

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

Страница модуля: https://www.drupal.org/project/jsonapi

Официальная документация: https://www.drupal.org/docs/8/modules/json-api

Видеоуроки на YouTube: https://www.youtube.com/playlist?list=PLZOQ_ZMpYrZsyO-3IstImK1okrpfAjuMZ - это реально круто!

Спецификация стандарта: http://jsonapi.org/

Ссылка на оригинал статьи в моём блоге: http://wellsolutions.by/article/jsonapi-zabudte-vsyo-chemu-vas-uchili-v-drupal-shkole

Тип материала: Предлагаю решениеВерсия Drupal: Drupal 8.*Ключевые слова: HeadlessМодули и темы: jsonapi Форумы: Установка и настройка2 Спасибо
Категории: Друпалургия

Semantic Web и schema.org для интернет-магазинов (Сергей Синица) [DrupalCamp Краснодар 2016]

Drupal в рунете - пт, 25/08/2017 - 11:25

Легкий поиск, красивые сниппеты, машинное распознавание контента и другие возможности семантической разметки в докладе Сергея Синицы.
Презентация находится здесь -> https://www.slideshare.net/secret/5eSh9UjcbYYOWD
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Делимся этой записью с друзьями и коллегами, а с нами делимся лайками!

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Ключевые слова: DrupalCamp DrupalYug Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Drupal Юг 0 Thanks
Категории: Друпалургия

Semantic Web и schema.org для интернет-магазинов (Сергей Синица) [DrupalCamp Краснодар 2016]

Drupal в рунете - пт, 25/08/2017 - 11:25

Легкий поиск, красивые сниппеты, машинное распознавание контента и другие возможности семантической разметки в докладе Сергея Синицы.
Презентация находится здесь -> https://www.slideshare.net/secret/5eSh9UjcbYYOWD
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Делимся этой записью с друзьями и коллегами, а с нами делимся лайками!

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYugФорумы: Drupal Юг0 Спасибо
Категории: Друпалургия

Semantic Web и schema.org для интернет-магазинов (Сергей Синица) [DrupalCamp Краснодар 2016]

Drupal в рунете - пт, 25/08/2017 - 11:25

Легкий поиск, красивые сниппеты, машинное распознавание контента и другие возможности семантической разметки в докладе Сергея Синицы.
Презентация находится здесь -> https://www.slideshare.net/secret/5eSh9UjcbYYOWD
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Делимся этой записью с друзьями и коллегами, а с нами делимся лайками!

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYug Форумы: Drupal Юг0 Спасибо
Категории: Друпалургия

Установка Drush на сервер для всех пользователей Debian 7+, (Ubuntu)

Drupal в рунете - чт, 24/08/2017 - 02:52

Drush это инструмент командной строки для создания, поддержания и изменения веб-сайтов Drupal.
Перед установкой:
Убедитесь, что ваш сервер находится в актуальном состоянии
Выполните команду:
sudo apt-get update && sudo apt-get upgrade
Установка Git и Composer:

Установка Git:
sudo apt-get install git
Установка Composer:
curl -sS https://getcomposer.org/installer | php
Перемещаем файл composer.phar в /usr/local/bin/ , так что б он был доступен из любого каталога:
sudo mv composer.phar /usr/local/bin/composer

Устанавливаем Drush для всех пользователей на сервере:
Создаем символическую ссылку между локальной директорией bin композера, /usr/local/bin/composer и каталогом bin системы, в /usr/bin/:
sudo ln -s /usr/local/bin/composer /usr/bin/composer

Используем Git для клонирования GitHub Drush в новый каталог:
sudo git clone https://github.com/drush-ops/drush.git /usr/local/src/drush

Переходим в каталог Drush:
cd /usr/local/src/drush

Смотрим, какую версию Drush вы хотите использовать https://github.com/drush-ops/drush/releases

Что бы изменить версию, замените ее номер командой:
sudo git checkout 8.1.13

Создаем ссылку между каталогом Drush в /usr/local/src и /usr/bin, так что бы Drush можно было вызвать из любого каталога:
sudo ln -s /usr/local/src/drush/drush /usr/bin/drush

Теперь выполните команду установки:
sudo composer install

Drush был установлен для всех пользователей на сервере.
Теперь проверьте, что вы натворили:
drush --version или drush status
Должно быть что-то вроде такого

Тип материала: Предлагаю решениеКлючевые слова: drushdrush installФорумы: Установка и настройка3 Спасибо
Категории: Друпалургия

Установка Drush на сервер для всех пользователей Debian 7+, (Ubuntu)

Drupal в рунете - чт, 24/08/2017 - 02:52

Drush это инструмент командной строки для создания, поддержания и изменения веб-сайтов Drupal.
Перед установкой:
Убедитесь, что ваш сервер находится в актуальном состоянии
Выполните команду:
sudo apt-get update && sudo apt-get upgrade
Установка Git и Composer:

Установка Git:
sudo apt-get install git
Установка Composer:
curl -sS https://getcomposer.org/installer | php
Перемещаем файл composer.phar в /usr/local/bin/ , так что б он был доступен из любого каталога:
sudo mv composer.phar /usr/local/bin/composer

Устанавливаем Drush для всех пользователей на сервере:
Создаем символическую ссылку между локальной директорией bin композера, /usr/local/bin/composer и каталогом bin системы, в /usr/bin/:
sudo ln -s /usr/local/bin/composer /usr/bin/composer

Используем Git для клонирования GitHub Drush в новый каталог:
sudo git clone https://github.com/drush-ops/drush.git /usr/local/src/drush

Переходим в каталог Drush:
cd /usr/local/src/drush

Смотрим, какую версию Drush вы хотите использовать https://github.com/drush-ops/drush/releases

Что бы изменить версию, замените ее номер командой:
sudo git checkout 8.1.13

Создаем ссылку между каталогом Drush в /usr/local/src и /usr/bin, так что бы Drush можно было вызвать из любого каталога:
sudo ln -s /usr/local/src/drush/drush /usr/bin/drush

Теперь выполните команду установки:
sudo composer install

Drush был установлен для всех пользователей на сервере.
Теперь проверьте, что вы натворили:
drush --version или drush status
Должно быть что-то вроде такого

Тип материала: Предлагаю решениеКлючевые слова: drushdrush install Форумы: Установка и настройка3 Спасибо
Категории: Друпалургия

Тестирование производительности – модуль Performance Monitor (Агабеков Роман) [DrupalCamp Краснодар 2016]

Drupal в рунете - ср, 23/08/2017 - 11:28

Администрируете Drupal?
В докладе Роман Агабеков рассказал как проще и лучше сделать это с помощью модуля Perfomance Monitor.
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/performance-monitor-76091640
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Делимся этой записью с друзьями и коллегами, а с нами делимся лайками!

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYugФорумы: Drupal Юг0 Спасибо
Категории: Друпалургия

Тестирование производительности – модуль Performance Monitor (Агабеков Роман) [DrupalCamp Краснодар 2016]

Drupal в рунете - ср, 23/08/2017 - 11:28

Администрируете Drupal?
В докладе Роман Агабеков рассказал как проще и лучше сделать это с помощью модуля Perfomance Monitor.
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/performance-monitor-76091640
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Делимся этой записью с друзьями и коллегами, а с нами делимся лайками!

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYug Форумы: Drupal Юг0 Спасибо
Категории: Друпалургия

Модули доставки и оплаты для интернет магазинов на Drupal (Андрей Тымчук) [DrupalCamp Краснодар 2016]

Drupal в рунете - вт, 22/08/2017 - 11:17

Реализовать доставку в Commerce и Ubercart для Drupal 7?
Что в Drupal использовать для интеграции с сервисами доставки и оплаты?
На Drupal Camp Краснодар 2016 ответы на эти вопросы в своём докладе дал Андрей Тымчук.
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/drupal-76090661
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Как обычно ждём лайки и репосты

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYugФорумы: Drupal Юг0 Спасибо
Категории: Друпалургия

Модули доставки и оплаты для интернет магазинов на Drupal (Андрей Тымчук) [DrupalCamp Краснодар 2016]

Drupal в рунете - вт, 22/08/2017 - 11:17

Реализовать доставку в Commerce и Ubercart для Drupal 7?
Что в Drupal использовать для интеграции с сервисами доставки и оплаты?
На Drupal Camp Краснодар 2016 ответы на эти вопросы в своём докладе дал Андрей Тымчук.
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/drupal-76090661
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Как обычно ждём лайки и репосты

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Версия Drupal: Drupal 8.*Drupal 7.*Ключевые слова: DrupalCampDrupalYug Форумы: Drupal Юг0 Спасибо
Категории: Друпалургия

План развития drupal.ru

Drupal в рунете - пн, 21/08/2017 - 00:28
*/

Всем привет!

Многие уже знакомы с постом, ознаменовавшим перемены на drupal.ru и уход Егора (@gor) со всех позиций связанных с drupal.ru. Вместе с этим, сменился и координатор сайта сообщества, им стал Максим Баев. Со временем стало понятно, что одному человеку сложно направлять такое большое сообщество. Появилась необходимость разбить процесс развития сообщества на направления и найти желающих заниматься каждым из них, но об этом позже.

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

Но прежде...

Кто такой Максим Баев (mbaev)

Привет, это я!
Раз уж я являюсь куратором проекта на текущий момент, то будет справедливо немного рассказать о себе.
Познакомился с Друпалом примерно в 2009 году, начал зарабатывать на нём примерно в 2011, а с 2012 года занимаюсь уже профессиональной разработкой, глубоким кодингом и организацией архитектуры приложений. В своём арсенале на drupal.org имею информационную помощь сообществу, правки документаций и багрепорты, в том числе о несекьюрных дырах в популярных модулях. Также веду блог с заметками о Друпале и других околопрограмистских темах. Владею опытом координатора и идейного лидера игрового сообщества (~700 человек с постоянным онлайном минимум 50 человек).
Не участвовал в конфликтах на drupal.ru.

За исключением случая с Виктором Степаньковым (RxB), когда я отказался удалять его материалы.
Всё ещё надеюсь мы найдём общий язык и начнём наше взаимоотношение заново.

Терпелив.
Ровно год назад получил апрув на полное визуальное изменение и начал переработку текущей версии drupal.ru. В феврале этого года уже пошёл фидбэк, по которому прототип шлифовался, и через месяц он был опубликован на сайте http://drupal.mbaev.com.
Активный участник не в конфликтах, но в жизни сайта. Дальнейшее развитие вижу только в одном ключе: установка фикс-поинта в текущем времени, после которого будут забыты конфликты прошлых лет. Дальше мы вместе, с удвоенной силой, будем тянуть лямку развития русскоязычного сообщества. Таким образом, мы добьёмся репутации мощного сообщества в Друпал-мире и предложим провести DrupalCon 2019 в России!

Текущее состояние дел

На очередном обсуждении состояния drupal.ru, меня выдвинули в качестве координатора, выразив таким образом своё доверие, за что всем большое спасибо! От меня было предложение найти человека со свободным временем, инициативой и желанием, но в текущей, сумбурной ситуации такого не нашлось и я беру на себя роль временного координатора drupal.ru в течении следующих 3-х месяцев.

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

Зачем нужны тимлиды

Появлению этого состава послужило много причин:

  • Если координатор проекта внезапно пропадёт, то эти ребята гарантируют, что работа не остановится. Т.е. это некая гарантийная подушка между куратором и инициативной группой
  • Это один из способов снять вопрос, который иногда звучал "один человек всё решает". Но это не отменят главный механизм разработки с помощью инициатив и открытого голосования
  • Каждое из направлений - это большой кусок, которые нельзя укусить одновременно
  • Это один из пунктов тимбилдинга. Гораздо интересней делать дело с командой
  • Они будут принимать решения гораздо быстрей, чем это будет делать один человек

Также, если Вы можете предложить своё участие в каком-либо направлении, то тимлиды помогут начать. Они берут на себя ответственность за развитие деятельности, решения в спорных ситуациях и организационных вопросах. А главное, они смогут более качественно проследить за открытостью всех процессов от выдвижения идеи до её внедрения.

Это та новая структура, которая позволит нам, путём перевыборов каждые пол года:
во-первых, продлевать творческую работу для тех кто заслужил доверие;
во-вторых, закончить работать тем, кто по каким-либо причинам не может или не хочет продолжать.
Детали условий в Уставе.

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

Модераторский отдел Тахтабаев Ильдар (Tahtabaev) Связь с общественностьюДенис Маслов (radionete) Технический отделМаксим Баев (mbaev) Продвижение (SEO)Денис Маслов (radionete) Редакторский отделДенис Маслов (radionete) Графическое оформлениеАлександр Матросов (multpix) ФинансыМаксим Баев (mbaev) План на ближайшее будущее Всё, что я напишу далее можно считать только моим мнением и видением развития сообщества. Оно не было обговорено или согласовано с кем-либо. Это видение будет обсуждаться и моё дальнейшее участие будет напрямую зависеть от того, насколько оно совпадает с мнением сообщества. Социальный

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

Стратегический

Как бы это ни было горько, но за 10 лет текущий формат изжил себя. Сейчас drupal.ru уже больше чем просто форум! Это большая община: профессиональные разработчики, ученики, студенты, студии, работодатели, организаторы кэмпов и пора уже дать то, чего всем так сильно не хватает! Заказчикам - иметь возможность не быть униженными, ученикам - найти ответы на вопросы, организаторам кэмпов - возможность быстро доставлять информацию до максимального количества потенциальных участников и возможность планировать мероприятия, а база в 70 000 пользователей только и ждёт этого. Уверен, что в ваших головах полно других идей.

Общение Приходи ради программы, оставайся ради сообщества!

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

Технический

Ответственность за техническую часть также лежит на мне. Всё, что касается деплоя, процесса разворачивания локального окружения, репозиторий на GitHub и поддержка хостинга и т.д. Помогать в настройке всего этого будет крутой спец, который имеет безграничный лимит моего доверия и для многих не нуждается в представлении - Даниэль Ишмаев (@dan).
В целом, этот раздел требует особого внимания и более подробного разъяснения. Он заслуживает отдельного поста или видео-чата. Пока же, мы ограничимся основными идеями.

Критические задачи

Это те задачи, которые нужно сделать как можно быстрее и желательно ещё вчера.

  • Окружения. На данный момент есть только продакшн окружение и даже почту мы восстанавливали тестируя здесь. Это первая и критическая задача, работу над которой мы начнём в ближайшие дни.
  • Деплой. В данный момент, работа парализована отсутствием деплоя т.к. он не был восстановлен в том виде, в котором был, до переезда. Причина, которая блокирует выполнение этого задания - отсутствие окружений.
  • Перенос новой версии. Этой процедурой мы протестируем деплой и доставку кода, через все окружения, до прода.
Глобальные задачи
  • Процесс развёртывания проекта локально. Будем делать его максимально простым.
  • Донат. Теперь drupal.ru находится на собственном обеспечении. Поэтому мы создали страничку, где каждый может пожертвовать любую сумму на поддержку стабильной работы форума и развитие сообщества в целом.
  • Модерирование. Текущий формат модерирования имеет право на жизнь в местах, с постоянным доходом, где можно нанять взвод модераторов, а при необходимости заменить. Модерация - это неприятное и неблагодарное занятие, которое убивает любую другую инициативу.
    Но ведь у нас достаточно умных людей, которые способны вместе выдумать и реализовать систему саморегулирования, которые уже реализовали все крупные IT-площадки. Самоуправление позволяет им спокойно расти, ведь чем больше пользователей на сайте, тем точнее работает эта система.
Функциональные задачи За прошедший год было достаточно времени для проведения глубокого исследование проекта и могу ответственно заявить: у нас полно работы, ребята! Нам понадобится мощный шлифовальный аппарат для этого бриллиантового булыжника!

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

  • Разделение типов материалов. На данный момент сайт имеет только один тип материала - "Запись в блог", с помощью которой создаётся все: вопросы, решения, запросы от работодателей, поиск работы, системные страницы, правила и другое. Этот подход необходимо пересмотреть в корне, что может повлечь за собой значительные изменения на сайте.
  • Мероприятия или события. Нужно добавить больше функционала: рассылки о событиях, регистрация на них.
  • Рассылки. Один из простых инструментов доставки информации до пользователей - рассылка. Её обязательно нужно использовать.
  • Регистрация. Трекер. Форматы ввода. Входа в систему. Раздел "Форум" (кто-нибудь им пользуется вообще?) и другие рядовые задачи тоже надо переосмыслить.
Минимум задач, которые стоят передо мной

Так как на данный момент я всего лишь временный куратор и скорее "переходное звено", чем "главный руководитель", то для меня стоит минимум две обязательные задачи:

  1. Внедрение новой версии сайта drupal.ru

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

  2. Провести выборы нового куратора согласно новому уставу

    Здесь подразумевается контроль достоверности выбора следующего координатора, путём голосования.

О том, что сделано за последние недели

Три недели назад наш координатор Егор начал передачу всего, чем владел. Были выдвинуты пожелания разработать условия, при которых активные члены сообщества смогут занять место координатора или куратора определённого направления. Как результат работы, было сделано следующее:

  • Коллективно был написан Устав и Дополнение к Уставу
  • Разработана процедура выбора ответственных за направления
  • С помощью голосования, выбраны тимлиды
  • Проведено несколько митингов
  • Обговорено множество организационных моментов

после чего:

  • Организован хостинг, арендованный на пожертвования активных членов сообщества
  • Настроено окружение, способное принять поток пользователей
  • Нам был передан репозиторий вместе со скриптами для QA и деплоя
  • Начата процедура перенятия под своё управление аккаунтов и групп в соц. сетях, связанных с drupal.ru
Итог

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

Ключевые слова: drupal.ruФорумы: Сайт и проект Drupal.ru6 Спасибо
Категории: Друпалургия

План развития drupal.ru

Drupal в рунете - пн, 21/08/2017 - 00:28
*/

Всем привет!

Многие уже знакомы с постом, ознаменовавшим перемены на drupal.ru и уход Егора (@gor) со всех позиций связанных с drupal.ru. Вместе с этим, сменился и координатор сайта сообщества, им стал Максим Баев. Со временем стало понятно, что одному человеку сложно направлять такое большое сообщество. Появилась необходимость разбить процесс развития сообщества на направления и найти желающих заниматься каждым из них, но об этом позже.

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

Но прежде...

Кто такой Максим Баев (mbaev)

Привет, это я!
Раз уж я являюсь куратором проекта на текущий момент, то будет справедливо немного рассказать о себе.
Познакомился с Друпалом примерно в 2009 году, начал зарабатывать на нём примерно в 2011, а с 2012 года занимаюсь уже профессиональной разработкой, глубоким кодингом и организацией архитектуры приложений. В своём арсенале на drupal.org имею информационную помощь сообществу, правки документаций и багрепорты, в том числе о несекьюрных дырах в популярных модулях. Также веду блог с заметками о Друпале и других околопрограмистских темах. Владею опытом координатора и идейного лидера игрового сообщества (~700 человек с постоянным онлайном минимум 50 человек).
Не участвовал в конфликтах на drupal.ru.

За исключением случая с Виктором Степаньковым (RxB), когда я отказался удалять его материалы.
Всё ещё надеюсь мы найдём общий язык и начнём наше взаимоотношение заново.

Терпелив.
Ровно год назад получил апрув на полное визуальное изменение и начал переработку текущей версии drupal.ru. В феврале этого года уже пошёл фидбэк, по которому прототип шлифовался, и через месяц он был опубликован на сайте http://drupal.mbaev.com.
Активный участник не в конфликтах, но в жизни сайта. Дальнейшее развитие вижу только в одном ключе: установка фикс-поинта в текущем времени, после которого будут забыты конфликты прошлых лет. Дальше мы вместе, с удвоенной силой, будем тянуть лямку развития русскоязычного сообщества. Таким образом, мы добьёмся репутации мощного сообщества в Друпал-мире и предложим провести DrupalCon 2019 в России!

Текущее состояние дел

На очередном обсуждении состояния drupal.ru, меня выдвинули в качестве координатора, выразив таким образом своё доверие, за что всем большое спасибо! От меня было предложение найти человека со свободным временем, инициативой и желанием, но в текущей, сумбурной ситуации такого не нашлось и я беру на себя роль временного координатора drupal.ru в течении следующих 3-х месяцев.

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

Зачем нужны тимлиды

Появлению этого состава послужило много причин:

  • Если координатор проекта внезапно пропадёт, то эти ребята гарантируют, что работа не остановится. Т.е. это некая гарантийная подушка между куратором и инициативной группой
  • Это один из способов снять вопрос, который иногда звучал "один человек всё решает". Но это не отменят главный механизм разработки с помощью инициатив и открытого голосования
  • Каждое из направлений - это большой кусок, которые нельзя укусить одновременно
  • Это один из пунктов тимбилдинга. Гораздо интересней делать дело с командой
  • Они будут принимать решения гораздо быстрей, чем это будет делать один человек

Также, если Вы можете предложить своё участие в каком-либо направлении, то тимлиды помогут начать. Они берут на себя ответственность за развитие деятельности, решения в спорных ситуациях и организационных вопросах. А главное, они смогут более качественно проследить за открытостью всех процессов от выдвижения идеи до её внедрения.

Это та новая структура, которая позволит нам, путём перевыборов каждые пол года:
во-первых, продлевать творческую работу для тех кто заслужил доверие;
во-вторых, закончить работать тем, кто по каким-либо причинам не может или не хочет продолжать.
Детали условий в Уставе.

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

Модераторский отдел Тахтабаев Ильдар (Tahtabaev) Связь с общественностью Денис Маслов (radionete) Технический отдел Максим Баев (mbaev) Продвижение (SEO) Денис Маслов (radionete) Редакторский отдел Денис Маслов (radionete) Графическое оформление Александр Матросов (multpix) Финансы Максим Баев (mbaev) План на ближайшее будущее Всё, что я напишу далее можно считать только моим мнением и видением развития сообщества. Оно не было обговорено или согласовано с кем-либо. Это видение будет обсуждаться и моё дальнейшее участие будет напрямую зависеть от того, насколько оно совпадает с мнением сообщества. Социальный

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

Стратегический

Как бы это ни было горько, но за 10 лет текущий формат изжил себя. Сейчас drupal.ru уже больше чем просто форум! Это большая община: профессиональные разработчики, ученики, студенты, студии, работодатели, организаторы кэмпов и пора уже дать то, чего всем так сильно не хватает! Заказчикам - иметь возможность не быть униженными, ученикам - найти ответы на вопросы, организаторам кэмпов - возможность быстро доставлять информацию до максимального количества потенциальных участников и возможность планировать мероприятия, а база в 70 000 пользователей только и ждёт этого. Уверен, что в ваших головах полно других идей.

Общение Приходи ради программы, оставайся ради сообщества!

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

Технический

Ответственность за техническую часть также лежит на мне. Всё, что касается деплоя, процесса разворачивания локального окружения, репозиторий на GitHub и поддержка хостинга и т.д. Помогать в настройке всего этого будет крутой спец, который имеет безграничный лимит моего доверия и для многих не нуждается в представлении - Даниэль Ишмаев (@dan).
В целом, этот раздел требует особого внимания и более подробного разъяснения. Он заслуживает отдельного поста или видео-чата. Пока же, мы ограничимся основными идеями.

Критические задачи

Это те задачи, которые нужно сделать как можно быстрее и желательно ещё вчера.

  • Окружения. На данный момент есть только продакшн окружение и даже почту мы восстанавливали тестируя здесь. Это первая и критическая задача, работу над которой мы начнём в ближайшие дни.
  • Деплой. В данный момент, работа парализована отсутствием деплоя т.к. он не был восстановлен в том виде, в котором был, до переезда. Причина, которая блокирует выполнение этого задания - отсутствие окружений.
  • Перенос новой версии. Этой процедурой мы протестируем деплой и доставку кода, через все окружения, до прода.
Глобальные задачи
  • Процесс развёртывания проекта локально. Будем делать его максимально простым.
  • Донат. Теперь drupal.ru находится на собственном обеспечении. Поэтому мы создали страничку, где каждый может пожертвовать любую сумму на поддержку стабильной работы форума и развитие сообщества в целом.
  • Модерирование. Текущий формат модерирования имеет право на жизнь в местах, с постоянным доходом, где можно нанять взвод модераторов, а при необходимости заменить. Модерация - это неприятное и неблагодарное занятие, которое убивает любую другую инициативу.
    Но ведь у нас достаточно умных людей, которые способны вместе выдумать и реализовать систему саморегулирования, которые уже реализовали все крупные IT-площадки. Самоуправление позволяет им спокойно расти, ведь чем больше пользователей на сайте, тем точнее работает эта система.
Функциональные задачи За прошедший год было достаточно времени для проведения глубокого исследование проекта и могу ответственно заявить: у нас полно работы, ребята! Нам понадобится мощный шлифовальный аппарат для этого бриллиантового булыжника!

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

  • Разделение типов материалов. На данный момент сайт имеет только один тип материала - "Запись в блог", с помощью которой создаётся все: вопросы, решения, запросы от работодателей, поиск работы, системные страницы, правила и другое. Этот подход необходимо пересмотреть в корне, что может повлечь за собой значительные изменения на сайте.
  • Мероприятия или события. Нужно добавить больше функционала: рассылки о событиях, регистрация на них.
  • Рассылки. Один из простых инструментов доставки информации до пользователей - рассылка. Её обязательно нужно использовать.
  • Регистрация. Трекер. Форматы ввода. Входа в систему. Раздел "Форум" (кто-нибудь им пользуется вообще?) и другие рядовые задачи тоже надо переосмыслить.
Минимум задач, которые стоят передо мной

Так как на данный момент я всего лишь временный куратор и скорее "переходное звено", чем "главный руководитель", то для меня стоит минимум две обязательные задачи:

  1. Внедрение новой версии сайта drupal.ru

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

  2. Провести выборы нового куратора согласно новому уставу

    Здесь подразумевается контроль достоверности выбора следующего координатора, путём голосования.

О том, что сделано за последние недели

Три недели назад наш координатор Егор начал передачу всего, чем владел. Были выдвинуты пожелания разработать условия, при которой активные члены сообщества смогут занять место координатора или куратора определённого направления. Как результат работы было сделано следующее:

  • Коллективно был написан Устав и Дополнение к Уставу
  • Разработана процедура выбора ответственных за направления
  • С помощью голосования, выбраны тимлиды
  • Проведено несколько митингов
  • Обговорено множество организационных моментов

после чего:

  • Организован хостинг, арендованный на пожертвования активных членов сообщества
  • Настроено окружение, способное принять поток пользователей
  • Нам был передан репозиторий вместе со скриптами для QA и деплоя
  • Начата процедура перенятия под своё управление аккаунтов и групп в соц. сетях, связанных с drupal.ru
Итог

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

Ключевые слова: drupal.ru Форумы: Сайт и проект Drupal.ru2 Спасибо
Категории: Друпалургия

Drupal-школа - восьмое занятие: блок представления и управление видимостью блоков на Drupal 8

Drupal в рунете - вс, 20/08/2017 - 21:02

Практическое занятие про работу с блоками на drupal 8. Делаем отдельный блок для пользовательского фильтра представления (раскрытая форма). Настраиваем видимость блоков - в каком разделе блок будет виден, а в каком - нет.

--
Drupal-школа - проект посвященный обучению школьников (13 гимназия, г. Новосибирск) веб-разработке на основе CMS Drupal 8. Поддерживается администрацией школы, сибирским сообществом друпаллеров DrupalSib и группой компаний i20.

Версия Drupal: Drupal 8.*Ключевые слова: друпалшколаФорумы: DrupalSib0 Спасибо
Категории: Друпалургия

Drupal-школа - восьмое занятие: блок представления и управление видимостью блоков на Drupal 8

Drupal в рунете - вс, 20/08/2017 - 21:02

Практическое занятие про работу с блоками на drupal 8. Делаем отдельный блок для пользовательского фильтра представления (раскрытая форма). Настраиваем видимость блоков - в каком разделе блок будет виден, а в каком - нет.

--
Drupal-школа - проект посвященный обучению школьников (13 гимназия, г. Новосибирск) веб-разработке на основе CMS Drupal 8. Поддерживается администрацией школы, сибирским сообществом друпаллеров DrupalSib и группой компаний i20.

Версия Drupal: Drupal 8.*Ключевые слова: друпалшкола Форумы: DrupalSib0 Спасибо
Категории: Друпалургия

Модуль Deploy - Стейджинг материалов

Drupal в рунете - вс, 20/08/2017 - 15:14

Модуль  deploy предназначен для упрощения подготовки и пред-просмотра контента Drupal сайта.

Deploy автоматически обслуживает зависимости между объектами (например взаимосвязанные сущности). Он содержит богатый API

Deploy был повторно переписан для Drupal 8 и основывается на  Multiversion и  replication модулях.
Он обеспечивает очень гибкую и эффективную платформу для создания контента в Drupal8.

Для установки достаточно просто получить код модуля в соответствующую директорию (например modules/contrib)
и активировать (например с помощью UI или drush).

Модуль зависим от  Workspace.

У модуля  Deploy нет страницы настройки конфигурации, что бы он работал, пользователь должен убедиться, что целевые рабочие области и/или внешний доступ настроены корректно (страницы настройки рабочих областей предоставляются модулем  workspace).

В качестве пользовательского интерфейса (UI), Deploy предоставляет только ссылки для запуска развертывания текущей активной рабочей области и ее целей:

Если для текущей активной рабочей области не настроено целевое рабочее пространство, то по нажатии ссылки "Развернуть", пользователь получает сообщение об ошибке:

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

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


По мотивам https://www.drupal.org/docs/8/modules/deploy/drupal-to-drupal-deployment-between-two-or-more-sites следует продолжение этой статьи,
в комментариях - прошу ваши вопросы и пожелания.

Тип материала: Предлагаю решениеВерсия Drupal: Drupal 8.*Ключевые слова: deployФорумы: Установка и настройка6 Спасибо
Категории: Друпалургия

Deploy - Стейджинг материалов

Drupal в рунете - вс, 20/08/2017 - 15:14

Модуль  deploy предназначен для упрощения подготовки и пред-просмотра контента Drupal сайта.

Deploy автоматически обслуживает зависимости между объектами (например взаимосвязанные сущности). Он содержит богатый API

Deploy был повторно переписан для Drupal 8 и основывается на  Multiversion и  replication модулях.
Он обеспечивает очень гибкую и эффективную платформу для создания контента в Drupal8.

Для установки достаточно просто получить код модуля в соответствующую директорию (например modules/contrib)
и активировать (например с помощью UI или drush).

Модуль зависим от  Workspace.

У модуля  Deploy нет страницы настройки конфигурации, что бы он работал, пользователь должен убедиться, что целевые рабочие области и/или внешний доступ настроены корректно (страницы настройки рабочих областей предоставляются модулем  workspace).

В качестве пользовательского интерфейса (UI), Deploy предоставляет только ссылки для запуска развертывания текущей активной рабочей области и ее целей:

Если для текущей активной рабочей области не настроено целевое рабочее пространство, то по нажатии ссылки "Развернуть", пользователь получает сообщение об ошибке:

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

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


По мотивам https://www.drupal.org/docs/8/modules/deploy/drupal-to-drupal-deployment-between-two-or-more-sites следует продолжение этой статьи,
в комментариях - прошу ваши вопросы и пожелания.

Тип материала: Предлагаю решениеВерсия Drupal: Drupal 8.*Ключевые слова: deploy Форумы: Установка и настройка4 Спасибо
Категории: Друпалургия

Contenta CMS - Модный Друпал

Drupal в рунете - пт, 18/08/2017 - 02:49

Drupal это отличная система управления контентом, когда дело касается моделирования данных,
редакторской работы.

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

На сегодняшний день существует масса фреймворков для реализации реактивных клиентских приложений.

Для организации хранения данных таких приложений может послужить Drupal.
В новой версии есть все необходимые инструменты, однако существует более продвинутое решение.
Contenta CMS это Drupal дистрибутив, из коробки предоставляющий современный API.
В нем собран весь необходимый список контриб модулей, необходимых для организации API.
Предоставлены примеры для различных js фреймворков, и пример приложения drupal.

Официальный ресурс проекта http://www.contentacms.org
содержит исчерпывающую информацию по установке и использованию.

Проект упакован в удобный шаблон и содержит установочный профиль.
Подробнее про drupal project тут: Прощай Drush Make, Привет Composer
Сборка и установка включая демо данные - дело 2х-3х минут.

composer create-project contentacms/contenta-jsonapi-project api --stability dev --no-interaction
cd api/web
drush si contenta_jsonapi --db-url=sqlite://sites/default/files/.ht.sqlite

Для запуска встроенного веб сервера

drush rs

По адресу 0.0.0.0:8888 у нас работающее приложение.

В примере содержатся упорядоченные ссылки на документацию, в частности на плейлисты доков по использованию  jsonapi и  simple_oauth .

Для API Существует отличная документация

А в целом - это привычный Drupal со всем своими UI, и улучшенной темой для администрирования.

Однако теперь он отвечает на запросы клиентских приложений, и отдает данные в JsonAPI формате.

Для работы с API незаменимый инструмент это Postman

Существует несколько примеров реализации клиентского приложения.

В этой статье рассматривается минималистичный фреймворк Nuxt.js для создания веб приложений на Vue.js.

Что такое Nuxt.js?

Nuxt.js — это фреймворк для универсальных приложений на Vue.js.

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

Наша цель — создать фреймворк настолько гибкий, чтобы его можно было использовать и как основу, и как дополнение к уже существующим проектам на Node.js.

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

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

Как фреймворк, Nuxt.js привносит множество возможностей, помогающих разработке, таких как: асинхронные данные, middleware, шаблоны и др.

Пример клиентского приложения достаточно просто получить и использовать.
https://github.com/contentacms/contenta_vue_nuxt

git clone https://github.com/contentacms/contenta_vue_nuxt.git
cd contenta_vue_nuxt

# установка зависимостией
npm install

# запуск сервера для localhost:3000
npm run dev

# продакшн сборка и запуск сервера
npm run build
npm run start

# генерация статического проекта
npm run generate

# запуск тестов из test/unit каталога
npm test

# для выгрузки на github страницу :
# НЕОБХОДИМО работать с репозоторием  "youname.github.io"
npm run deploy

Далее необходимо указать свой сервер с данными для этого приложения

Бонусом: эти два приложения удобно запускать одновременно, например с foreman примерно так:

# Procfile.dev
vue_js: npm --prefix=$(pwd)/web run dev
drupal: drush --root=$(pwd)/api/web rs

foreman start -f Procfile.dev

В итоге мы получаем простой и симпатичный каталог кулинарных рецептов, для стилизации используется bluma css

На фронтенд работает реактивный Vue с серверным рендером от Nuxt, на бекенд Drupal 8 с JSON API и Simple Oauth.
Это отличный пример Drupal Headless

Тип материала: Предлагаю решениеВерсия Drupal: Drupal 8.*Ключевые слова: HeadlessМодули и темы: jsonapisimple_oauthФорумы: Программирование4 Спасибо
Категории: Друпалургия

Contenta CMS - Модный Друпал

Drupal в рунете - пт, 18/08/2017 - 02:49

Drupal это отличная система управления контентом, когда дело касается моделирования данных,
редакторской работы.

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

На сегодняшний день существует масса фреймворков для реализации реактивных клиентских приложений.

Для организации хранения данных таких приложений может послужить Drupal.
В новой версии есть все необходимые инструменты, однако существует более продвинутое решение.
Contenta CMS это Drupal дистрибутив, из коробки предоставляющий современный API.
В нем собран весь необходимый список контриб модулей, необходимых для организации API.
Предоставлены примеры для различных js фреймворков, и пример приложения drupal.

Официальный ресурс проекта http://www.contentacms.org
содержит исчерпывающую информацию по установке и использованию.

Проект упакован в удобный шаблон и содержит установочный профиль.
Подробнее про drupal project тут: Прощай Drush Make, Привет Composer
Сборка и установка включая демо данные - дело 2х-3х минут.

composer create-project contentacms/contenta-jsonapi-project api --stability dev --no-interaction
cd api/web
drush si contenta_jsonapi --db-url=sqlite://sites/default/files/.ht.sqlite

Для запуска встроенного веб сервера

drush rs

По адресу 0.0.0.0:8888 у нас работающее приложение.

В примере содержатся упорядоченные ссылки на документацию, в частности на плейлисты доков по использованию  jsonapi и  simple_oauth .

Для API Существует отличная документация

А в целом - это привычный Drupal со всем своими UI, и улучшенной темой для администрирования.

Однако теперь он отвечает на запросы клиентских приложений, и отдает данные в JsonAPI формате.

Для работы с API незаменимый инструмент это Postman

Существует несколько примеров реализации клиентского приложения.

В этой статье рассматривается минималистичный фреймворк Nuxt.js для создания веб приложений на Vue.js.

Что такое Nuxt.js?

Nuxt.js — это фреймворк для универсальных приложений на Vue.js.

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

Наша цель — создать фреймворк настолько гибкий, чтобы его можно было использовать и как основу, и как дополнение к уже существующим проектам на Node.js.

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

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

Как фреймворк, Nuxt.js привносит множество возможностей, помогающих разработке, таких как: асинхронные данные, middleware, шаблоны и др.

Пример клиентского приложения достаточно просто получить и использовать.
https://github.com/contentacms/contenta_vue_nuxt

git clone https://github.com/contentacms/contenta_vue_nuxt.git
cd contenta_vue_nuxt

# установка зависимостией
npm install

# запуск сервера для localhost:3000
npm run dev

# продакшн сборка и запуск сервера
npm run build
npm run start

# генерация статического проекта
npm run generate

# запуск тестов из test/unit каталога
npm test

# для выгрузки на github страницу :
# НЕОБХОДИМО работать с репозоторием  "youname.github.io"
npm run deploy

Далее необходимо указать свой сервер с данными для этого приложения

Бонусом: эти два приложения удобно запускать одновременно, например с foreman примерно так:

# Procfile.dev
vue_js: npm --prefix=$(pwd)/web run dev
drupal: drush --root=$(pwd)/api/web rs

foreman start -f Procfile.dev

В итоге мы получаем простой и симпатичный каталог кулинарных рецептов, для стилизации используется bluma css

На фронтенд работает реактивный Vue с серверным рендером от Nuxt, на бекенд Drupal 8 с JSON API и Simple Oauth.
Это отличный пример Drupal Headless

Тип материала: Предлагаю решениеВерсия Drupal: Drupal 8.*Ключевые слова: HeadlessМодули и темы: jsonapisimple_oauth Форумы: Программирование3 Спасибо
Категории: Друпалургия

Глобальные изменения в работе drupal.ru (aka ответ на претензии Дубовского)

Drupal в рунете - чт, 17/08/2017 - 23:30

1 .Почему был снят с публикации в разделе бизнеса РаДон

По морально-этическим причинам. Детали:

После уведомления, что мною будут приняты ответные меры, я получил прямую угрозу приблизительно следующего содержания: “напишу в роскомнадзор жалобу на каждого клиента патруля”. К сожалению, своевременного скриншота не сделал, но его явно успели прочитать другие:

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

Как вы будете строить отношения с этим человеком дальше - дело сообщества. Я с ним дел иметь не намерен. Далее причин с ним общаться у меня более не будет.

2. Как так оказалось, что Константин рулит твиттером?

По датам точно не помню, но в момент изменений drupal.ru он пришел и сказал: “вот твиттер акк, я его раскручивал как мог. Держи пароли, забирай” (вольный пересказ, цитату долго искать).
Мой ответ был прост (вольный пересказ):
- наведи порядок, рекомендую убрать все, что не связано с друпалом, я прикручу сейчас кросспостинг с главной. Рули дальше. Инициатива наказуема исполнением.

3. Почему я игнорирую В. Степанькова

Без комментариев.

4. Что дальше?

Некоторое время назад я понял, что дальше тянуть эту лямку не могу. Попытался настроить мосты с Воиновым. Потом появилась информация из пункта 1. Я пошел на встречу, замял конфликт и готов был идти на диалог. Мои требования при передаче домена:

С тех пор прошло 2 месяца. Дубовской создал очередную волну “все плохо”, “царь все сам решает” и “давит конкурентов”, что привело к этому посту.

В итоге в сложившейся ситуации, я собрал тех, кто за последние 2 года проявлял инициативу и поставил перед фактом. Я самоустраняюсь (условия) - создавайте основу для устава (смотрим тут) и принимайте на себя как финансовое обеспечение (был оформлен VPS и перенос на него всех ресурсов, за личные деньги участников), так и управление сообществом. К слову, я был рад видеть отсутствие желания быть у руля.
По сути для людей это ярмо, которое они сами на себя возложили временно (как в свое время сделал я).

Временным исполняющим обязанности куратора стал @mbaev. И банально по причине, что “больше не кому”.

Тут много написано, большие скриншоты. Мое уважение тем, кто дочитал до конца. Значит вам не безразлична судьба ВАШЕГО сообщества.

Как последний совет, даже напутствие - если у вас возникло желание помочь ресурсу, не дать ему быть захваченным людьми, для которых Drupal = Деньги === Бизнес, чтобы ресурс был не просто справочником, но площадкой с возможностью ОТКРЫТОГО обмена мнением (пусть и с ТМ или другим механизмом) - проявляйте активность. Решите для самих себя - чем именно вы готовы помочь и сделайте это. Пусть это будет даже разовая помощь на форуме, пример культурного ответа новичку или банальный твит на интересный топик. Все это важно! Главное от души и от сердца.

А я что мог, то сделал. Мое время помогать сообществу прошло.
Удачи вам!

PS: На текущий момент у меня нет никаких прав на сайте drupal.ru (обычный пользователь), сайт размещен не на моих серверах. Мною не будет проводится никакой деятельности для сообщества и для сайта как такового. Я убрал свой бизнес из раздела “бизнес”. Свернул финансирование Друпал и буду заниматься совсем другими делами.

Форумы: Модераторский22 Спасибо
Категории: Друпалургия

Глобальные изменения в работе drupal.ru (aka ответ на претензии Дубовского)

Drupal в рунете - чт, 17/08/2017 - 23:30

1 .Почему был снят с публикации в разделе бизнеса РаДон

По морально-этическим причинам. Детали:

После уведомления, что мною будут приняты ответные меры, я получил прямую угрозу приблизительно следующего содержания: “напишу в роскомнадзор жалобу на каждого клиента патруля”. К сожалению, своевременного скриншота не сделал, но его явно успели прочитать другие:

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

Как вы будете строить отношения с этим человеком дальше - дело сообщества. Я с ним дел иметь не намерен. Далее причин с ним общаться у меня более не будет.

2. Как так оказалось, что Константин рулит твиттером?

По датам точно не помню, но в момент изменений drupal.ru он пришел и сказал: “вот твиттер акк, я его раскручивал как мог. Держи пароли, забирай” (вольный пересказ, цитату долго искать).
Мой ответ был прост (вольный пересказ):
- наведи порядок, рекомендую убрать все, что не связано с друпалом, я прикручу сейчас кросспостинг с главной. Рули дальше. Инициатива наказуема исполнением.

3. Почему я игнорирую В. Степанькова

Без комментариев.

4. Что дальше?

Некоторое время назад я понял, что дальше тянуть эту лямку не могу. Попытался настроить мосты с Воиновым. Потом появилась информация из пункта 1. Я пошел на встречу, замял конфликт и готов был идти на диалог. Мои требования при передаче домена:

С тех пор прошло 2 месяца. Дубовской создал очередную волну “все плохо”, “царь все сам решает” и “давит конкурентов”, что привело к этому посту.

В итоге в сложившейся ситуации, я собрал тех, кто за последние 2 года проявлял инициативу и поставил перед фактом. Я самоустраняюсь (условия) - создавайте основу для устава (смотрим тут) и принимайте на себя как финансовое обеспечение (был оформлен VPS и перенос на него всех ресурсов, за личные деньги участников), так и управление сообществом. К слову, я был рад видеть отсутствие желания быть у руля.
По сути для людей это ярмо, которое они сами на себя возложили временно (как в свое время сделал я).

Временным исполняющим обязанности куратора стал @mbaev. И банально по причине, что “больше не кому”.

Тут много написано, большие скриншоты. Мое уважение тем, кто дочитал до конца. Значит вам не безразлична судьба ВАШЕГО сообщества.

Как последний совет, даже напутствие - если у вас возникло желание помочь ресурсу, не дать ему быть захваченным людьми, для которых Drupal = Деньги === Бизнес, чтобы ресурс был не просто справочником, но площадкой с возможностью ОТКРЫТОГО обмена мнением (пусть и с ТМ или другим механизмом) - проявляйте активность. Решите для самих себя - чем именно вы готовы помочь и сделайте это. Пусть это будет даже разовая помощь на форуме, пример культурного ответа новичку или банальный твит на интересный топик. Все это важно! Главное от души и от сердца.

А я что мог, то сделал. Мое время помогать сообществу прошло.
Удачи вам!

PS: На текущий момент у меня нет никаких прав на сайте drupal.ru (обычный пользователь), сайт размещен не на моих серверах. Мною не будет проводится никакой деятельности для сообщества и для сайта как такового. Я убрал свой бизнес из раздела “бизнес”. Свернул финансирование Друпал и буду заниматься совсем другими делами.

Форумы: Модераторский20 Спасибо
Категории: Друпалургия

Страницы

Подписка на Друпалургия сбор новостей - Друпалургия