Общие принципы и идеология

Любой сайт на Astra.CMS полностью состоит из экземпляров расширений трех видов: модули, плагины, блоки. Основной упор при сборке сайта сделан на работу с шаблонами и редакторами панели управления, поэтому все стандартные расширения сделаны максимально универсальными и разработка своих расширений требуется как правило в особых случаях.

Уровни универсальности расширений

Чем меньше универсальность - тем проще реализация. Для расширений под индивидуальные проекты как правило особая универсальность не требуется.

Размножаемость

Возможность модуля обслуживать несколько разделов схожей функциональности.

Переопределяемые шаблоны страниц

Возможность из панели управления переназначать шаблоны для типов страниц раздела.

Набор настраиваемых опций

Возможность из панели управления изменять какие-то опциональные значения.

Экземпляры расширений

Расширения начинают работать на сайте только после того как:

  1. они установлены (зарегистрированы в системе)
  2. на их базе создан компонент сайта: раздел, дополнение или блок.

За исключением особого вида плагинов, которые работают сразу после установки и не требуют создания своего экземпляра для сайта.

Страницы на сайте

Все страницы на сайте обслуживают модули. Каждый модуль реализуется с помощью класса, который наследует A_MainFrame, который в свою очередь является наследником Smarty.

Маршрутизация URL на сайте

Первый элемент в пути URL, автоматически распознается как идентификатор раздела, который в свою очередь и направляет поток выполнения на класс соответствующего модуля. Дальнейшая маршрутизация может осуществляться уже в самом модуле в методе A_MainFrame::Router(). Задача этого маршрутизатора, собрать первичные данные по элементам пути URL и определить тип страницы (свойство A_MainFrame::$page) и, возможно, сразу присвоить шаблон (свойство A_MainFrame::$template), либо сообщить о ненайденной странице.

Формирование данных

Все необходимые данные для страницы (кроме глобальных) формируются в переопределяемом методе A_MainFrame::createData() и добавляются в набор данных шаблона с помощью Smarty::assign(). С помощью свойства A_MainFrame::$page установленного на этапе маршрутизации URL может осуществляться дополнительная маршрутизация по типам страниц.

Шаблон страницы (группы страниц)

Сформированные данные обрабатываются заданным шаблоном (свойство A_MainFrame::$template) и выдается итоговая страница.

Маршрутизация действий

Для выполнения определенного действия в GET или POST запросе необходимо передавать параметр action с идентификатором действия. Маршрутизация действий на их методы-обработчики происходит в методе A_MainFrame::Action().

Страницы в панели управления

Все страницы в панели управления реализуются с помощью класса, который наследует тот же A_MainFrame. Из особенностей стоит отметить что в панели управления не используется ЧПУ, поэтому маршрутизация осуществляется с помощью GET параметров, а так же то, что для выполнения действия вместе с параметром action нужно передавать параметр authcode, который содержит уникальный код авторизации администратора.

События

С помощью системы событий возможно внедрение своих функций в процесс работы других расширений.

Примеры

 
coding/index.txt · Последние изменения: 01.10.2016 23:26 (внешнее изменение)