Как работает 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 сразу из шаблона

Другая информация:

UPD: обновлено 09.05.2023

Еще нет своего сайта? Запустите интернет-магазин на платформе 5CMS - Все для продаж уже внутри!

Рекомендуем прочитать