Почему я создал свою CMS

Я всегда был против создания собственной системы управления контентом (CMS). Когда кто-то попросил меня создать что-то подобное, я просто выбрал готовые решения, такие как WordPress. Мне этого всегда было достаточно, потому что я не создавал сайты для себя. Я всегда был убежден, что мне будет проще создавать свой контент, просто создавая HTML-файлы и используя их в качестве контента. Настройка CMS стоила мне только времени и усилий, чтобы настроить ее, подключить к базе данных и регулярно обновлять. Так почему же я все-таки решил создать свою собственную CMS? Этому есть две причины:

  • Если мне что-то нужно, я могу это построить.
  • Если мне это не нравится, я могу изменить это.

Но вы можете сделать это с любой другой CMS. Да, ты прав. Мне нечего возразить против этого, потому что вы абсолютно правы, говоря это. Однако для меня причины создания собственной CMS были несколько глубже, чем «я могу сделать это лучше». Я хотел научиться решать проблемы при создании приложения в ограниченной среде.

Как все началось

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

Причина, по которой я перешел на файловую систему

Это работало очень хорошо… пока я не удалил свой веб-сайт с GitHub, чтобы внести некоторые коррективы. Теперь у меня не было постов в блогах, элементов портфолио или любого другого контента. Весь этот контент был сохранен в удаленной базе данных, защищенной брандмауэром. Это означало, что мне пришлось загрузить две разные базы данных и заставить их работать на моей локальной машине. Я не стал бы этим заниматься, потому что зачем мне прикладывать все усилия только для моего сайта-портфолио? Вместо этого я скопировал весь свой контент в файлы HTML и обслуживал их из файловой системы. Это сработало хорошо и быстро. Весь контент был доступен через контроль версий, и не имело значения, в какой системе я работал над своим сайтом, контент всегда был прямо там.

Как это превратилось в CMS

Так почему же я выделил это в отдельный модуль CMS? Что ж, тут история становится интересной. В это время я завел второй блог Уход за растениями для начинающих. Я был убежден, что могу использовать файлы HTML и Markdown для обслуживания статического контента и просто редактировать содержимое своих сообщений с помощью редактора кода. Это помогло мне решить, что я хочу скопировать и вставить свой веб-сайт портфолио, включая раздел блогов для этого нового веб-сайта. И это буквально то, что я сделал, вы все еще можете найти ссылки в этом новом блоге на мой старый сайт. Я скопировал/вставил свое портфолио, удалил все ненужное и начал писать контент для сайта завода. Но… я нашел ошибку. Когда исправил, подумал: Ну теперь надо исправлять этот баг в 2-х местах, это раздражает. Это привело меня к извлечению CMS в пакет Composer. Этот процесс был завершен за несколько дней медленной миграции частей веб-сайтов в пакет. В итоге у меня была полностью безголовая CMS, которая управляла всем контентом обоих сайтов: моего личного блога и блога растений.

Когда мне стало лень писать посты на ноутбуке

В этот момент я подумал: «Знаете что, я хочу иметь возможность редактировать свой контент и на своем телефоне!». На тот момент единственным способом редактирования контента было изменение файлов HTML и Markdown на моем ноутбуке с помощью редакторов кода. Это работало хорошо, но что, если бы у меня было вдохновение писать, но я не был близок к компьютеру? Я мог бы отредактировать сообщение на GitHub в их файловом редакторе, но каждое изменение требовало фиксации, а я писал только несколько предложений за раз. Это привело бы к большому количеству коммитов для одного поста, что не идеально. Изначально я начал писать свои посты на Google Диске. Это работало очень хорошо в течение длительного времени. Причина, по которой я устал от этого, заключалась в том, что после завершения сообщения в блоге мне пришлось копировать / вставлять его в файлы Markdown, конвертировать содержимое WYSIWYG (что вы видите, то и получаете) в Markdown, а затем зафиксировать и отправить изменения. . Я мог писать контент на свой телефон, но не мог публиковать его с телефона.

Я хотел писать и публиковать из любого места

Что мне было нужно, так это возможность редактировать свой контент прямо в браузере, а затем публиковать его в мире с моего телефона, поэтому я приступил к работе. Я создал новый пакет под названием roelofjan-elsinga/flat-file-cms-gui. Это будет просто графический пользовательский интерфейс (GUI), который использует мою безголовую CMS, чтобы позволить мне редактировать весь мой контент в браузере. Я продолжал добавлять функции, такие как возможность выбирать из редактора HTML или Markdown. Это помогло мне поддержать некоторые из моих предыдущих сообщений, которые все были написаны в файлах HTML. Поскольку все мои новые посты написаны в Markdown, я добавил редактор уценки в графический интерфейс, что позволило мне создавать и редактировать посты из любого места. Безголовая CMS может анализировать файлы и возвращать содержимое в виде HTML, чтобы мой блог мог отображать их для читателей, но она также может просто возвращать необработанные данные, поэтому я могу редактировать содержимое в редакторе HTML или Markdown.

Больше автоматизации, чтобы помочь мне сосредоточиться на письме

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

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

Содействие

Если вы хотите внести свой вклад в CMS, не стесняйтесь делать это. Вы можете найти компоненты на Github:

Я ищу вклад в области:

  • Безопасность
  • Написать документацию
  • Пишите тесты
  • Общие исправления ошибок
  • Более простой способ добавления дополнительных модулей

Если у вас есть другие отзывы или вы хотите связаться со мной, вы можете связаться со мной в Twitter.

Первоначально опубликовано на roelofjanelsinga.com 18 сентября 2019 г.