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

Я с радостью полагался на WordPress как на основную систему управления контентом (CMS) в течение многих лет, но в последнее время он кажется немного устаревшим и не совсем предназначен для такого многопользовательского проекта, в значительной степени основанного на AV, поэтому я решил поискать хорошие свежие варианты.

Вариант 1. Google Таблицы

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

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

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

Итак, нет Google Таблицам.

Вариант 2. Содержательный

Contentful - это CMS без заголовка, что означает, что она предоставляет инфраструктуру для хранения, редактирования и обслуживания контента без предоставления какого-либо внешнего интерфейса. Традиционный WordPress, напротив, настроен на то, чтобы делать и то, и другое - хранить ваш контент и предлагать весь код, который его извлекает и отображает. Такой большой набор возможностей делает его довольно громоздким, и он все больше не кажется таким маневренным, как должен быть веб-инструмент.

Я был в восторге от Contentful. Это так красиво и красиво! И такой умный - он позволяет напрямую добавлять геотеги к контенту! Аааа. И я мог настроить собственную модель контента, которая точно соответствовала бы проекту, и это было весело! Ура.

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

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

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

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

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

Вариант 3: RESTful WordPress

Пока я пытался заставить Contentful работать, я продолжал переключаться на установку WordPress, чтобы поиграть. Каким бы громоздким ни был старый WP, столкнувшись с однозначным подходом Contentful к взиманию платы за «записи» контента, я начал испытывать сильную ностальгию по простоте и свободе добавления контента в WordPress.

Я подумал - ну, эй, - почему бы не использовать WordPress в качестве автономной CMS с новой функцией REST API? Это позволило бы мне обойтись без основной части обслуживания контента через PHP, но при этом позволить мне использовать WordPress в качестве CMS - интерфейса, который мои ученики хорошо знают.

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

Я отказался от всего этого, прежде чем даже попытался выяснить, как я буду использовать REST API в своем проекте. Однако я все еще в восторге от этого. Вероятно, это отличный вариант для обслуживания контента с крупных сайтов с использованием JS-фреймворков.

Вариант 4: WordPress + Forms = CMS Sugar

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

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

Я экспортировал записи в виде электронной таблицы со ссылками на загруженный контент, хранящийся на сайте WordPress, и превратил этот файл в JSON, чтобы использовать его так же, как Google Sheet.

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

Да да! Почему это решение не было более очевидным, когда я начинал?

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