Как работает 5CMS
5CMS обеспечивает легкий вход для программиста.
Итак, например, пользователь в браузере загружает страницу:
demo.5cms.ru/products/htc-sensation
В .htaccess разбирается URL и происходит редирект на соответствующий контролер:
RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA]
* в дальнейшем (чтобы быстро определить какой контроллер используется) - просто открываете исходный код страницы и видите:
<body class="productview">
Как видите контроллер в данном случае:
ProductView.php
и в контроллер передается URL товара - product_url:
htc-sensation
- Все контроллеры находятся в папке /view/
- Кроме того, название контроллера можно получить прямо из шаблона дизайна, переменной {$module}
Прим.: также обращение к контроллеру может осуществляться через post запросы
Затем контроллер:
а) Обращается к нужным классам API.
Например:
$product = $this->products->get_product((string)$product_url);
В этом примере идет обращение из контроллера к функции get_product класса Products (лежит в /api/Products.php) с целью получить данные о товаре с конкретным URL.
Как видите, даже по названию функции понятно о чем идет речь.
б) Обрабатывает полученные из API данные
в) Передает значения переменных и выводит результат в шаблон дизайна.
Например:
$this->design->assign('product', $product);
Здесь массив информации о товаре из пункта а) $product присваивается одноименной переменной, которая станет доступна в шаблоне.
return $this->design->fetch('product.tpl');
Здесь определяется шаблон дизайна для вывода: product.tpl (см. структура шаблонов)
Классы API:
В папке /api/ содержатся все основные классы 5CMS. Данные классы предназначены для работы с базой данных.
Как правило в этих классах используюся функции для выборки сущностей, добавления, удаления и обновления.
Админка:
Все аналогично.
Только контроллеры находятся в папке /fivecms/, а шаблоны дизайна - в /fivecms/design/html/
Определить какой используется контроллер на той или иной странице админки легко, достаточно посмотреть в адресную строку, напр.:
https://site.ru/fivecms/index.php?module=ArticleAdmin
значит ищем файл:
ArticleAdmin.php
а используемый шаблон дизайна в этом файле:
return $this->design->fetch('article.tpl');
Резюме:
а) Итак, как вы уже поняли, все работы по внесению изменений в код начинаются с соответствующего контроллера.
б) Однако, многие вещи можно реализовать прямо в шаблоне:
- например благодаря плагину api можно вызвать любую функцию API сразу из шаблона
Другая информация:
- Полезные встроенные функции и плагины (JS и Smarty)
- Еще больше информации для веб-разработчиков
- Техническая документация по CMS
UPD: обновлено 09.05.2023
Еще нет своего сайта? Запустите интернет-магазин на платформе 5CMS - Все для продаж уже внутри!
-
Инструкция по использованию Smarty. Полезные модификаторы Smarty, примеры работы с массивами и циклами подсказки и пр.