Pull to refresh

demiurGo.cms Вступление

Reading time3 min
Views745

История создания.


«Делайте сегодня то, о чем другие завтра только подумают…»
Сократ.


В 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 – тестирование.
Для тех что хочет ее «погонять» вот ссылка.

Tags:
Hubs:
Total votes 15: ↑9 and ↓6+3
Comments72

Articles