История создания.
«Делайте сегодня то, о чем другие завтра только подумают…»
Сократ.
В 2005 году работая верстальщиком в одной web студии я впервые столкнулся с понятием CMS, первой же системой с которой я познакомился, была NetCat, а точнее все что от нее осталось после жесткого издевательства и переработок местными программистами.
Меня поразила легкость управления данным продуктом, но были конечно и недостатки от которых бросало в дрожь.
Тогда у меня и возникла идея создания своей собственной системы, с которой я буду дружить.
Перечитав тонны литературы и взяв в багаж немало терпения и килограммы кофе, я приступил к разработкам.
«Первый блин — комом, но добавить икорки и получится даже очень ничего»
Первой моей CMS была система под названием HCMS (кстати, заметил тенденцию — называть свои продукты с префиксом своего ника у большинства разработчиков). На нее ушло порядком 3-х месяцев, но результат меня конечно не устраивал – слишком много бесполезного кода для очень ущербного функционала. И как настоящий «поэт» — я сжег рукопись в надежде на просветление моделей в моей голове.
Приобретая немало опыта с каждой новой версией у меня стало получаться все лучше и лучше. К концу 2007 года получился слегка сыроватый и подгорелый продукт HCMS pro v6. Да! – 5 раз я удалял с винта тонны кода, но через несколько месяцев теста новой системы — мне пришлось удалить ее и в 6-й раз.
«Отчаянье – привилегия слабых духом»
После небольшого перерыва в пол года я опять открыл «блокнот» и изучив несколько популярных CMS — опять взялся за старое.
Подведу черту под лирическим отступлением: не пейте много кофе – он(-о) вас погубит!
Принцип работы
Анализируя структуру web сайтов — систему можно разложить на несколько составляющих:
— Оформление
— Структура
— Контент
Все эти составляющие должны зависеть друг от друга следующим образом:
Система определяет текущий раздел, подключает привязанный шаблон оформления и внедряет там, где нужно контент предназначенный данному разделу.
Все очень просто с первого взгляда, но возникает вопрос — каким образом?
Часть 1. Оформление.
Я не стал прибегать к готовым «темплированным» решениям и сильно заморачиваться в этой области. Поставил задачу: есть сверстанный дизайн и его необходимо натянуть на систему без особых усилий и чтобы на это уходило от пяти до десяти минут.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><?=$this -> _pageINFO["name"] ?></title>
<?=$this->head()?>
</head>
<body>
<?=$this -> adminpanel() ?>
<?=$this -> content() ?>
</body>
</html>
* This source code was highlighted with Source Code Highlighter.
Вот и все, это самый простой пример который я могу привести. А теперь по порядку:
$this->_pageINFO — массив содержащий в себе информацию о текущем разделе
$this->head() – функция подключения всего самого необходимого CSS, JS и.т.д.
$this->adminpanel() – функция вывода админ – панельки
$this ->content() — функция вывода контента
Это самые необходимые внедрения в шаблон, без них, конечно, жить тоже можно, но тогда нет смылся использовать CMS.
К каждому шаблону привязывается CSS и JS файл – так чтобы удобно было)
Часть 2. Структура.
В каждом сайте есть структура. Набор разделов и подразделов мы создаем вручную указывая привязку к оформлению и функционалу.
В основном классе контента данные о текущем разделе храниться в массиве $this->_pageINFO, адрес (url) текущего раздела можно определить через $this->FullUrl(), а url другого раздела можно определить через его id $this->FullUrl(‘id — раздела’).
Часть 3. Контент.
Как вы уже поняли контент, каким бы он не был, вызывается внутри шаблона — оформления через функцию $this->content() и определяется указанным при создании раздела функционалом.
Функционал разделен на две вариации:
— Системный компонент
— Компонент (конфигуратор)
Более подробно о компонентах в следующих сериях…
Внимание! Система проходит beta – тестирование.
Для тех что хочет ее «погонять» вот ссылка.