Создание своей CMS — очередной велосипед? Или шаг в карьере?

в 16:22, , рубрики: Программирование, Разработка веб-сайтов

Каждый человек должен построить дом, вырастить сына, посадить дерево. Веб-программист — должен создать свою CMS.

Я не говорю, на чем она будет создаваться (PHP, ASP,...), это не имеет никакого значения.

Я не говорю, стоит ли это делать вообще, ведь многое уже создано ранее да еще и распространяется бесплатно.

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

Поэтому, сразу к сути.

1. Сайт строится на основе некой структуры (ВНЕЗАПНО!), группе страниц, организованных в виде дерева.

Но, общее количество таких страниц не означает, что только они и будут. Структура — только основание.

2. Заметка — мельчайшая частица информации для построения сайта. Лист для дерева :)

Зайдя на сайт без заметок, можно будет перемещаться между страницами (вся навигация строится автоматически на основе структуры, но это НЕ ЕДИНСТВЕННЫЙ способ организации навигации, о чем будет рассказано чуть ниже), и — как бы и всё.

3. ЛЮБАЯ страница строится на основе шаблона.
Шаблон — обычная HTML-страница с размещением в необходимых местах специальных меток (поля редактирования).

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

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

4. ЛЮБАЯ заметка может иметь тег или несколько тегов, которые виртуально «группируют» заметки.

Одна и та же заметка может входить в разные группы, например «Россия» «Новости» «Спорт» «Олимпиада».

Когда, в какой момент времени будет формироваться страница для вывода таких групп? Ведь в структуре этого НЕТ?

ВОТ. И это самое интересное. Опять же, ниже.

Открыв страницу структуры в самом начале редактирования мы видим пустую страницу с возможностью добавления заметки (или группы заметок).

На одной странице может быть несколько полей редактирования — Заголовок, Подвал, Основное поле ввода, Левая часть, Правая часть, ЧТО-ТО ЕЩЕ.

Название страницы в заголовке уже есть, как и адрес страницы — все это задавалось во время создания/изменения структуры.

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

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

Необходимо внести какой-то текст, к примеру «Hello, World!» в основном поле редактирования.

И тут оказывается, что внести просто текст НЕЛЬЗЯ.

Зато можно добавить заметку с любым заголовком (вывод заголовка настраивается — нужно это или нет, датой/временем — аналогично, и прочее) и собственно с текстом «Hello, World!» с нужным форматированием и рисунками к нему.

Сохраняем заметку — и она уже появляется на самой странице.

Почему так сложно? Можно же было все реализовать и без этих заметок?

Такой способ только кажется сложным. А в дальнейшем появляется куча преимуществ:

  • Любую заметку можно использовать многократно. Заметка — часть общего фонда.
  • Заметки можно добавлять на страницу в виде ленты заметок — отобранных по фильтру (по тегу/тегам/сложному правилу и/или по времени).
  • Добавленные заметки/ленты заметок могут выводиться с заданным порядком — новые сверху или наоборот (соответствующая настройка).
  • Если заметок в поле редактирования много — автоматически строится навигация к ТОЙ ЖЕ странице структуры проекта (но с другими параметрами в адресной строке) для отображения следующего списка заметок/группы заметок (настройка по максимальному количеству на странице).
  • Заметка может выводиться полностью или частично (клик по «Далее» приведет к открытию полной версии заметки), причем открытие страницы в новом/том же окне — уже с навигацией по своей группе заметок (например по «Новостям») — опять же с настройкой.
  • Заметка может иметь один/несколько тегов. Их отображение настраивается. Клик по тегу ведет к открытию заметки или всех заметок по выбранному тегу (настраивается тип открытия и максимальное количество на странице) с навигацией.
  • Так как сами теги ТАКЖЕ МОЖНО группировать в виде деревьев — может отображаться одно из деревьев тегов (настраивается). Клик по любой ветке дерева тегов приведет к отбору/отображению (настройка) сразу по группе тегов — опять же со всей сопутствующей навигацией.
  • Заметка, так же как и страница структуры, может иметь свой особый шаблон (настройка).

Минусы:

  • Похожее уже реализовано (причем МНОГОКРАТНО. Забавно, да? Че это они велосипеды создают, а?).
  • Шаблонная система — как-то не профессионально (честно, я видел и такой аргумент).
  • Своя реализация прав по редактированию — и проблемы с администрированием.
  • Автоматическое формирование меню (как бы не очень и проблема, для программиста).

Плюсы:

  • Простота создания шаблонов — на основе предлагаемых в том числе бесплатно или создаваемых лично. Достаточно в нужных местах разместить метки с полями редактирования. Кроме того — это повышает общую безопасность (вероятность взлома меньше, так как в других местах, кроме как в шаблонах, размещение полей редактирования ни к чему не ведет).
  • Своя реализация прав по редактированию.
  • Полный контроль над СВОИМ проектом — я время от времени вижу появление сообщений об очередном взломе/критической ошибке различных CMS. И это при том, что многие проекты распространяются бесплатно и в открытом коде.
  • В любом случае — создание своего — отличная практика.

Чем не курсовая/дипломная работа? Ну или личный Drupal, Joomla! или WordPress.

Автор: незнакомец

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js