Как работает 5CMS

5CMS обеспечивает легкий вход для программиста.

Итак, например, пользователь в браузере загружает страницу:

demo.5cms.ru/products/htc-sensation

В .htaccess разбирается URL и происходит редирект на соответствующий контролер:

RewriteRule ^products/([^/]+)/?$ index.php?module=ProductView&product_url=$1 [L,QSA]

Как видите контроллер в данном случае ProductView (лежит в /view/ProductView.php)

И в контроллер передается URL товара - product_url

Все контроллеры находятся в папке /view/

Прим.: также обращение к контроллеру может осуществляться через через post запросы

Контроллер:

1) Обращается к нужным классам API.

Например:

$product = $this->products->get_product((string)$product_url);

Идет обращение к функции get_product класса Products (лежит в /api/Products.php) с целью получить данные о товаре с конкретным URL.

Как видите, даже по названию функции понятно о чем идет речь.

2) Обрабатывает полученные из API данные

3) Передает значения переменных и выводит результат в шаблон дизайна.

Например:

$this->design->assign('product', $product);

Здесь массив информации о товаре из п.1 $product присваивается одноименной переменной, которая станет доступна в шаблоне. 

return $this->design->fetch('product.tpl');

Тут все однозначно - определяется шаблон дизайна для вывода: product.tpl (структура шаблонов)

Классы API:

В папке /api/ содержатся все основные классы 5CMS. Данные классы предназначены только для работы с базой данных.

Как правило в этих классах используюся функции для выборки сущностей, добавления, удаления и обновления.

Резюме:

а) Итак, как вы уже поняли, все работы по внесению изменений в код начинаются с соответствующего контроллера

б) Однако, многие вещи можно реализовать прямо в шаблоне, благодаря Smarty:

  • например благодаря плагину Smarty api можно вызвать любую функцию API сразу из шаблона

Другие примеры:

Например нам нужно отловить момент оформления заказа для передачи данных о заказе в какой-нибудь сторонний сервис.

  • URL: /cart
  • контроллер: соответственно CartView

заходим в контроллер и видим:

// Перенаправляем на страницу заказа

header('Location: '.$this->config->root_url.'/order/'.$order->url);

То есть все просто - наш код должен быть до перенаправления на страницу /order/

  • Еще в этом-же контроллере есть полезный пример кода:

$this->notify->email_order_user($order->id);

который осуществляет отправку email о заказе пользователю. 

Как работает 5CMS

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

Рекомендуем прочитать
  • Дизайны для 5CMS

    Дизайны для 5CMS

    Дизайн состоит из адаптивного (под 4 ширины десктопов и ноутбуков) и мобильного - такая универсальность и высокая скорость загрузки есть только в нашей CMS.

  • Прикрепление файлов к товарам

    Прикрепление файлов к товарам

    Зачастую требуется товары сопровождать доступными для скачивания файлами (напр.: инструкции, сертификаты и т.п.).

    Для этих целей используется функционал прикрепления файлов к товарам.

  • Уведомления о новых заказах в админке

    Уведомления о новых заказах в админке

    Для удобства администрирования магазина мы добавили доработку уведомлений о новых заказах. Теперь при поступлении новых заказов (со статусом "Новый") появляются уведомления на иконке браузера и всплывающее сообщение