Skip to content

MonoBrainCell/cms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

💾🤖💾Система управления контентом сайта или просто CMS

Что использовано в CMS?

  1. PHP>=7.0
  2. javascript(jQuery>=3.0)

Пара слов о CMS от её разработчика (т.е. от меня)

  1. Я разрабатывал данную CMS, около 7-8 лет назад
  2. Я хотел создать систему управления контентом не связанную с БД
  3. Что следует из п.2 - все данные CMS хранятся в отдельных файлах
  4. На данный момент я не занимаюсь улучшением этой CMS
  5. С позиции моих текущих опыта и знаний: улучшение этой CMS в рамках той идеи, которая указана в п.2, до оптимального состояния привела бы к изменению порядка 90% всего исходного кода
  6. Зачем же я её выложил? Ответ прост: чтобы подтвердить тот факт, что я разработал свою собственную CMS с нуля

Структура CMS (см. директорию src)

  • .htaccess - настройка сервера для текущего сайта
  • ajaxRqst.php - php-файл, работающий как обработчик всех ajax-запросов внутри сайта
  • download.php - php-файл, отвечающий за реализацию функционала выгрузки файлов для посетителей страницы
  • guestbook.php - php-файл, отвечающий за реализацию функционала страницы отзывов
  • index.php - php-файл, отвечающий за генерацию основных страниц сайта
  • navigation.fbd.xml - файл, содержащий информацию о всех существующих страницах сайта
  • news.php - php-файл, отвечающий за реализацию функционала новостных страниц
  • settings.fbd.php - php-файл, хранящий информацию основную информацию, используемую в процессе генерирования страниц сайта
  • sitemap.xml - карта сайта
  • content/ - папка, в которой находятся файлы, содержащие контент отдельных страниц сайта
  • design/ - папка, в которой находятся файлы тем оформления сайта
    • имя_темы/ - папки в которых хранятся файлы, используемые для оформления страниц, в рамках целевой темы
      • dummy.fbd.html - файл с разметкой, используемой при отображении контента страницы в рамках целевой темы
    • ...
  • files/ - папка для файлов, используемых в контенте сайта
    • media/ - папка для файлов изображений и анимации
      • images/ - папка для отдельных изображений
      • images_gallery/ - папка для изображений, используемых в галерее
        • original/ - папка для изображений оригинального размера
        • preview/ - папка для изображений уменьшенного размера (preview-изображения)
    • share/ - папка для файлов, которые можно предоставлять для выгрузки посетителям сайта
  • functional/ - папка, в которой находятся исполняемые файлы отдельных частей функционала CMS
    • имя_функционала/ - папки в которых хранятся файлы, относящиеся к отдельному фунционалу CMS
      • funcEngine.php - основной файл, к которому обращается CMS, в момент использования данного функционала
    • ...
  • jq_libs/ - папка, в которой находятся js-файлы, используемые в лицевой части(frontend) сайта
    • collectFormElems.func.js - js-файл, содержащий функции, используемые для работы с полями формы
    • sendAjaxRqst.func.js - js-файл, содержащий функции, используемые для реализации ajax-запросов
    • textFieldsManager.plugin.js - js-плагин, используемый для полноценной проверки текстовых полей формы
  • workspace/ - папка, содержащая ядро движка CMS
    • baseTagGen.php - генератор тега <base>
    • siteEngine.php - движок
    • unescaped_file.php - файл, содержащий некоторые доп. элементы функционала, используемые движком(например, реализация автоподгрузки классов, обработчик ошибок, получение данных из GET)
  • office/ - папка, с админ. частью CMS
    • enter.php - php-файл, отвечающий за функционал авторизации в админ.части(страница+обработка данных)
    • execAjaxRqst.php - php-файл, работающий как обработчик всех ajax-запросов, выполненных в рамках админ. части CMS
    • index.php - основной генератор страниц всех разделов админ. части CMS
    • index.php - основной генератор страниц всех разделов админ. части CMS
    • adminTemplate/ - папка с темой для отображения страниц админ. части
      • main_dummy.html - файл с базовой разметкой страниц админ. части
      • htmlDummyes/ - папка с частями разметки страниц админ. части
        • admin_navigation.fbd.tpl - файл с навигацией по админ. части, отображающаяся на всех страницах кроме стартовой
      • style/ - папка с настройками оформления админ. части
    • functional_departments/ - папка содержащая редакторы для отдельных элементов функционала CMS(управление контентом страниц, реклама, новости и т.п.)
      • имя_папки - папка, содержащая элементы управления определённым функционалом CMS
        • имя.php - файл отвечающий за отображаение страниц, предоствляющих возможность управления отдельными элементами функционала
        • augmentation/ - папка, содержащая php-файлы, используемые при формировании страниц отдельных "ветвей" управления отдельным функционалом, а также при обработке отдельных ajax-запросов по сохранению внесённых изменений
        • design/ - папка, содержащая настройки отображения страниц отдельных "ветвей" управления отдельным функционалом
        • dummyes/ - папка, содержащая фрагменты разметки, используемые для отображения управляющих элементов на отдельных страницах "ветвей" управления функционалом
        • executors/ - папка, содержащая файлы, исполняемые в результате ajax-запросов, при сохранении измений связанных с отдельным функционалом CMS
        • ramification/ - папка, содержащая файлы, исполняемые при формировании страниц отдельных "ветвей" управления отдельным функционалом
        • settings/ - папка, содержащая файлы, хранящие информацию о том, как должна быть сформирована страница отдельной "ветви" управления отдельным функционалом
      • ...
    • gatekeeper/ - папка содержащая файлы, используемые в процессе проверки доступа пользователей админ. части CMS
      • abcqwerty.fbd.dat - файл, содержащий ключ шифрования для проверки данных передаваемых при помощи сессии
      • genNewKey.php - файл, генерирующий случайный пароль
      • users.fbd.xml - файл, хранящий информацию о зарегистрированных пользователях админ. части CMS, уровне их доступа и ограничениях, соответствующих различным уровням доступа
    • information_base/ - папка содержащая файлы с различной доп. информацией для админ. части CMS
      • domain.txt - файл, хранящий текущее доменное имя сайта (в случае его смены произойдёт автоматическое исправление содержания карты сайта и самого этого файла, с учётом нового домена)
    • jq_libs/ - папка содержащая, используемую в админ. части библиотеку jQuery
    • specials/ - папка, содержащая ядро админ. части CMS
      • form_to_enter.php - файл, участвующий в формировании формы входа в админ. часть CMS
      • pageOutput.php - файл, используемый для подготовки и вывода всех страниц управления функционалом в админ. части
      • unescaped_file.php - файл, содержащий некоторые доп. элементы, используемые в админ. части CMS(например, реализация автоподгрузки классов, обработчик ошибок, получение данных из GET)
      • jss/ - папка, содержащая js-файлы, используемые на любой странице админ. части CMS
        • attachElemToWindow.plugin.js - js, управляющий прикреплением элементов разметки в момент прокрутки страницы
        • fields_manager.js - js, управляющий проверкой полей формы авторизации в админ.части
        • navigation_manager.js - js, управляющий поведением навигации
    • subsidiary/ - папка, содержащая файлы, используемые в качестве поддержки процесса управления функционалом в админ. части CMS
      • js/ - папка, содержащая js-файлы
        • attachEventsToBoxOfFiles.func.js - js, содержащий функции, используемые для добавления и отслеживания событий к модальному окну выбора файлов
        • collectFormElems.func.js - js, содержащий функции, используемые для работы с элементами формы
        • fullControlElements.func.js - js, содержащий функции, используемые для реализации функционала отдельных панелей управления на страницах админ. части (например, панель позволяющая управлять элементом навигации(изменять положение относительно других, назначать род. элемент и т.д.))
        • galleryControl.func.js - js, содержащий функции, используемые для управления редактором галерей изображений
        • sendAjaxRqst.func.js - js, содержащий функции, используемые для осуществления ajax-запросов в рамках админ. части CMS
        • sendAjaxRqst.func.js - js, для полной проверки полей формы страниц админ. части
        • tiny_mce/ - папка с реализацией WYSIWYG-редактора TinyMCE
      • php/ - папка, содержащая php-файлы
        • baseTagGen.php - генератор тега <base> для админ. части
        • listOfFiles.php - файл, используемые для формирования списка файлов для модальных окон выбора файлов, при редактировании в админ. части
        • listOfPages.php - файл, используемые для формирования списка страниц для модальных окон выбора страниц сайта, при редактировании в админ. части
        • tinymceImagesList.php - файл, используемые для формирования списка изображений, используемых для добавления в контент страниц (для редактора TinyMCE)
    • workspace/ - папка, содержащая файлы, используемые при работе во время авторизации в админ. части пользователей, а также при проверке действий уже авторизовавшихся пользователей
      • Gatekeeper.php - файл, используемый, в качестве распорядителя в процессе мониторинга пользователей и авторизации (проверка уровня доступа, проверка метки авторизации, переадресация на страницу входа в адми. и т.п.)
      • MasterEncryption.php - файл, используемый, в качестве управляющего процесса шифрования/дешифрования авторизационных данных
      • SafeguardMaster.php - файл, используемый для непосредственной проверки данных

Принципы работы CMS

"Лицевая" часть CMS (генерирование страниц)

  • Контент и оформление генерируемых страниц хранятся раздельно (контент: папка content, оформление: папка design)
  • В процессе генерирования страницы происходит слияние разметки, соответствующей активной теме, с контентом запрашиваемой страницы
  • Слияние происходит на основе использования функциональных меток, указанных в разметке темы (например, {_TITLE_} будет заменена на имя страницы; {_HEADER_1_} будет заменена на основной заголовок страницы и т.п.)
  • Формирование финальных частей контента, которые будут заменять функциональные метки происходит при помощи отдельных функциональных элементов CMS (папка functional)
  • Каждый функциональный элемент CMS представлен в виде отдельного класса, содержащего определённые методы, которые и вызываются генератором страниц для формирования полноценного контента
  • При генерировании контента, CMS определяет набор используемых функциональных элементов и их методов, исходя из их полного списка, хранящегося в файле настроек CMS(settings.fbd.php); также в этом списке хранится информация о том является ли тот или иной метод функционала активным, т.е. будет ли он вызываться в процессе генерирования контента
  • В рамках CMS существует 2 типа страниц:
    1. обычные страницы - генерирование которых происходит стандартными средствами CMS (файл index.php)
    2. страницы "анклавы" - генерирование таких страниц осуществляется отдельными файлами, но в рамках функционала и настроек самой CMS

Административная часть CMS (управление контентом)

  • Доступ к административной части
    • Осуществляется через указание логина и пароля пользователя и проверки их на соответствие существующей информации (логины и пароли хранятся в office/gatekeeper/users.fbd.xml)
    • Реализация страницы входа и проверки данных осуществляется при помощи файла office/enter.php
    • За осуществление полноценной проверки и подтверждения авторизации отвечают классы, файлы которых хранятся в office/workspace/
  • Управление контентом
    • Управление отдельными частями контента CMS осуществляется отдельными фунциональными группами (см. папки внутри office/functional_departments/)
    • Внутри каждой функциональной группы имеется "корневой" php-файл, который отвечает за формирование страницы с полным списком доступных действий для редактирования контента
    • Файлы, формирующие страницы с редакторами различных элементов целевой части контента располагаются в папке ramification/
    • Каждый из вышеперечисленных файлов действует следующим образом: внутри него подключается файл с настройками, определяющими как необходимо сформировать страницу, в т.ч. и какие классы использовать для формирования редакционной части (данные классы расположены в отдельных файлах в папке augmentation), данные настройки передаются объекту класса отвечающего за формирование разметки всех страниц админ. части (Spl__pageOutput)
    • Сохранение внесённых изменений осуществляется при помощи ajax-запросов, отправляемых в единый php-обработчик ajax-запросов для админ. части(office/execAjaxRqst.php), который в свою очередь подключит для обработки запроса целевой исполнительный файл, соответствующий части контента и действию над ним (см. папку executors, внутри папок функциональных групп)
    • В отдельных случаях редактирования конетнта требуются дополнительные данные или манипуляции, такие элементы подключаются из папки office/subsidiary

Функционал CMS

  • Управление страницами
    • Добавление
    • Изменение
    • Удаление
  • Управление навигационными элементами (2 навигации: основная и дополнительная)
    • Изменение порядка следования пунктов навигации
    • Назначение родительского пункта/Извлечение из родительского пункта навигации
    • Изменение названия страницы в навигации
    • Изменение alias'а страницы в навигации
    • Перемещение пунктов навигации между блоками (основным и дополнительным)
  • Управление оформлением
    • Выбор активной темы
    • Правка разметки активной темы
  • Управление рекламным контентом
    • Добавление баннеров
    • Изменение баннеров
    • Изменение списка страниц на которых демонстрируются отдельные баннеры
    • Удаление баннеров
  • Управление новостным контентом
    • Добавление
    • Изменение
    • Удаление
  • Предоставление страницы отзывов
  • Управление галереями изображений
    • Добавление
    • Изменение
    • Удаление
  • Управление видео контентом
    • Добавление
    • Изменение источника видео
    • Удаление
  • Управление виджетами
    • Добавление
    • Изменение кода вставки виджета
    • Удаление
  • Предоставление функционала обратной связи
  • Управление выгрузкой файлов
    • Добавление списков файлов доступных для выгрузки
    • Изменение списков файлов доступных для выгрузки
    • Удаление списков файлов доступных для выгрузки
  • Загрузка файлов для различных функциональных частей CMS через админ. часть
  • Управление файлами отдельных функц. частей через админ. часть
    • Изменение имен файлов
    • Копирование файлов
    • Перемещение файлов
    • Удаление файлов
  • Управление учетными записями админ. части CMS
    • Добавление учетных записей
    • Изменение логина учетной записи
    • Изменение пароля учетной записи
    • Изменение типа доступа для учетной записи
    • Удаление учетных записей
  • Управление функциональными элементами CMS
    • Выключение функц. элементов из формирование страниц сайта
    • Включение функц. элементов в формирование страниц сайта
  • Управление работой движка CMS (Вкл/Выкл)

Установка CMS и доступ в админ. часть

  • Установка:
    Просто выложить все файлы cms в корневую папку сайта на сервере
  • Путь к админ. части:
    доменное-имя/office
  • Логин: trustee
    Пароль: permit

Демонстрация работы CMS

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

Демонстрация изменения темы

Демонстрация добавления страницы

Демонстрация управления элементами навигации

Демонстрация управления рекламными материалами

Демонстрация добавления виджетов

Демонстрация использования формы обратной связи

Демонстрация работы новостного блока

About

Система управления контетом сайта

Topics

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors