- Что использовано в CMS?
- Пара слов о CMS от её разработчика
- Структура CMS
- Принципы работы CMS
- Функционал CMS
- Установка CMS и доступ в админ. часть
- Демонстрация работы CMS
- Демонстрация изменения темы
- Демонстрация добавления страницы
- Демонстрация управления элементами навигации
- Демонстрация управления рекламными материалами
- Демонстрация добавления виджетов
- Демонстрация создания галереи изображений
- Демонстрация использования формы обратной связи
- Демонстрация работы новостного блока
- PHP>=7.0
- javascript(jQuery>=3.0)
- Я разрабатывал данную CMS, около 7-8 лет назад
- Я хотел создать систему управления контентом не связанную с БД
- Что следует из п.2 - все данные CMS хранятся в отдельных файлах
- На данный момент я не занимаюсь улучшением этой CMS
- С позиции моих текущих опыта и знаний: улучшение этой CMS в рамках той идеи, которая указана в п.2, до оптимального состояния привела бы к изменению порядка 90% всего исходного кода
- Зачем же я её выложил? Ответ прост: чтобы подтвердить тот факт, что я разработал свою собственную 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/ - папка для изображений, используемых в галерее
- share/ - папка для файлов, которые можно предоставлять для выгрузки посетителям сайта
- media/ - папка для файлов изображений и анимации
- functional/ - папка, в которой находятся исполняемые файлы отдельных частей функционала CMS
- имя_функционала/ - папки в которых хранятся файлы, относящиеся к отдельному фунционалу CMS
- funcEngine.php - основной файл, к которому обращается CMS, в момент использования данного функционала
- ...
- имя_функционала/ - папки в которых хранятся файлы, относящиеся к отдельному фунционалу 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/ - папка, содержащая файлы, хранящие информацию о том, как должна быть сформирована страница отдельной "ветви" управления отдельным функционалом
- ...
- имя_папки - папка, содержащая элементы управления определённым функционалом CMS
- 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)
- js/ - папка, содержащая js-файлы
- workspace/ - папка, содержащая файлы, используемые при работе во время авторизации в админ. части пользователей, а также при проверке действий уже авторизовавшихся пользователей
- Gatekeeper.php - файл, используемый, в качестве распорядителя в процессе мониторинга пользователей и авторизации (проверка уровня доступа, проверка метки авторизации, переадресация на страницу входа в адми. и т.п.)
- MasterEncryption.php - файл, используемый, в качестве управляющего процесса шифрования/дешифрования авторизационных данных
- SafeguardMaster.php - файл, используемый для непосредственной проверки данных
- Контент и оформление генерируемых страниц хранятся раздельно (контент: папка content, оформление: папка design)
- В процессе генерирования страницы происходит слияние разметки, соответствующей активной теме, с контентом запрашиваемой страницы
- Слияние происходит на основе использования функциональных меток, указанных в разметке темы (например, {_TITLE_} будет заменена на имя страницы; {_HEADER_1_} будет заменена на основной заголовок страницы и т.п.)
- Формирование финальных частей контента, которые будут заменять функциональные метки происходит при помощи отдельных функциональных элементов CMS (папка functional)
- Каждый функциональный элемент CMS представлен в виде отдельного класса, содержащего определённые методы, которые и вызываются генератором страниц для формирования полноценного контента
- При генерировании контента, CMS определяет набор используемых функциональных элементов и их методов, исходя из их полного списка, хранящегося в файле настроек CMS(settings.fbd.php); также в этом списке хранится информация о том является ли тот или иной метод функционала активным, т.е. будет ли он вызываться в процессе генерирования контента
- В рамках CMS существует 2 типа страниц:
- обычные страницы - генерирование которых происходит стандартными средствами CMS (файл index.php)
- страницы "анклавы" - генерирование таких страниц осуществляется отдельными файлами, но в рамках функционала и настроек самой CMS
- news.php - новостной блок CMS
- guestbook.php - страница отзывов
- Доступ к административной части
- Осуществляется через указание логина и пароля пользователя и проверки их на соответствие существующей информации (логины и пароли хранятся в 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
- Управление страницами
- Добавление
- Изменение
- Удаление
- Управление навигационными элементами (2 навигации: основная и дополнительная)
- Изменение порядка следования пунктов навигации
- Назначение родительского пункта/Извлечение из родительского пункта навигации
- Изменение названия страницы в навигации
- Изменение alias'а страницы в навигации
- Перемещение пунктов навигации между блоками (основным и дополнительным)
- Управление оформлением
- Выбор активной темы
- Правка разметки активной темы
- Управление рекламным контентом
- Добавление баннеров
- Изменение баннеров
- Изменение списка страниц на которых демонстрируются отдельные баннеры
- Удаление баннеров
- Управление новостным контентом
- Добавление
- Изменение
- Удаление
- Предоставление страницы отзывов
- Управление галереями изображений
- Добавление
- Изменение
- Удаление
- Управление видео контентом
- Добавление
- Изменение источника видео
- Удаление
- Управление виджетами
- Добавление
- Изменение кода вставки виджета
- Удаление
- Предоставление функционала обратной связи
- Управление выгрузкой файлов
- Добавление списков файлов доступных для выгрузки
- Изменение списков файлов доступных для выгрузки
- Удаление списков файлов доступных для выгрузки
- Загрузка файлов для различных функциональных частей CMS через админ. часть
- Управление файлами отдельных функц. частей через админ. часть
- Изменение имен файлов
- Копирование файлов
- Перемещение файлов
- Удаление файлов
- Управление учетными записями админ. части CMS
- Добавление учетных записей
- Изменение логина учетной записи
- Изменение пароля учетной записи
- Изменение типа доступа для учетной записи
- Удаление учетных записей
- Управление функциональными элементами CMS
- Выключение функц. элементов из формирование страниц сайта
- Включение функц. элементов в формирование страниц сайта
- Управление работой движка CMS (Вкл/Выкл)
- Установка:
Просто выложить все файлы cms в корневую папку сайта на сервере - Путь к админ. части:
доменное-имя/office - Логин: trustee
Пароль: permit
Обращаю Ваше внимание, на тот факт, что продолжительность отдельных демонстраций достигает 2-3 минут.