Особенности и возможности

Amiro.CMS 6 предоставляет профессиональные эффективные инструменты разработки, модификации и создания расширений для любого проекта вне зависимости от его масштаба – от небольшого сайта-визитки до крупных интернет-магазинов, контент-проектов, сайтов СМИ, сложных веб-приложений.

Открытый код и мощное API

Долгое время Amiro.CMS была известна как отличная, но закрытая система, в которой пользователь может реализовать все свои потребности без программирования. Даже будучи закрытой системой Amiro.CMS входит в ТОПЫ наиболее популярных CMS.

Теперь Amiro.CMS это платформа с открытым кодом, дающая широчайшие возможности разработчикам для расширения функционала под нужды самых взыскательных потребителей.

С открытием системы возникают новые перспективы роста для работающих с Amiro.CMS разработчиков. Они получают доступ к всем инструментам и технологиям, используемым компанией Амиро для развития ядра CMS.

Исходный код Amiro.CMS 6 доступен для загрузки в составе дистрибутивов всех редакций включая Amiro.CMS FREE.

Современное ядро

При создании ядра Amiro.CMS 6 использованы современные подходы к архитектуре и разработке. Конечно, это полноценный MVC, события, различные точки входа в варианте, рассчитанном на максимальное удобство модификации с сохранением обновлений, вплоть до дистрибьюции. В новом ядре сохранен акцент на производительность и экономию ресурсов.

Ядро Amiro.CMS прошло тщательнейшую отладку и тестирование на тысячах сайтов – большая часть административной панели Amiro.CMS с 2012 года реализована на данном ядре, работавшем параллельно ядру предыдущего поколения.

В отличие от других CMS, при всех масштабных изменениях и новых возможностях Amiro.CMS 6 обратно совместима с предыдущим поколением системы. Владельцам сайтов и разработчикам для перехода на Amiro.CMS 6 не придется терять время на переписывание своих проектов.

С подробностями можно ознакомиться в разделе Ядро Amiro.CMS 6 и в FAQ по миграции модулей с Amiro.CMS 5.

Производительность

Amiro.CMS – высокопроизводительная платформа, по скорости опережающая все остальные коробочные российские CMS, что доказано данными исследований рейтинга iTrack.

Высокая производительность платформы достигается за счет использования комбинированного подхода. Идеология производительности проходит сквозь всю систему:

Изначальный баланс декомпозиции базы данных и кода. Вся разработка платформы ведется с акцентом на скорость и производительность.

Отложенная загрузка ресурсов не только в классах, но и везде – ядро делает только минимально необходимый объем работы для выполнения задачи: даже при большом количестве динамического контента отрабатывает только ту часть, которая непосредственно нужна для получения результата. При этом, если возможно, полученный результат еще и кэшируется.

Быстрые запросы ядра: прямо из коробки система полностью оптимизирована и может делать выборки по большой базе за разумное время. Другие системы часто требуют значительных доработок для обеспечения оптимальной производительности.


Оптимизация загрузки JS/CCS путем сжатия ресурсов в минимум файлов.

Возможность выбора окружения (полное, легкое) исходя из специфики задачи. Легкое окружение используется для вызова быстрых функций, не требующих инициализации всего ядра.

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

Собственный шаблонизатор, глубоко интегрированный в ядро. Такая интеграция позволяет существенно увеличить производительность и гибкость: в отличие от внешних шаблонизаторов здесь не требуется лишний уровень абстракции. Можно провести аналогию с ADODB – это удобный универсальный механизм, но он работает в разы медленнее «родных» драйверов и не дает возможности использовать специфику конкретной базы.

Использование асинхронных вызовов для получения данных/выполнения каких-либо операций. Обновление информации происходит через перерисовку конкретных компонент, при этом между пользователем и сервером передается минимальный набор данных – снижается нагрузка на канал и на сервер.

Уникальная схема разработки и наследования

Архитектура Amiro.CMS 6 разработана, чтобы дать максимально возможное количество альтернатив реализации исходя из стоящей перед разработчиком задачи: любое место можно унаследовать, заменить, несколькими способами изменить функциональность на том уровне, где это в данный момент требуется. Архитектура позволяет разработчику работать в концепции «пиши только мясо»: максимально переиспользовать имеющийся готовый функционал и инфраструктуру платформы, писать свой код только для реализации необходимого заказчику функционала, избегая рутины для тривиальных операций, возникающих при использовании других CMS.

Amiro.CMS 6 предлагает уникальную объектную модель с трехуровневой схемой наследования гипермодуль-конфигурация-экземпляр:

  • Гипермодуль – это общая кодово-шаблонная база группы модулей,
  • Конфигурации реализуют отличия конкретного типа от общей базы,
  • Экземпляр – это установленный модуль конкретного типа. Возможно установить несколько независимых экземпляров модуля одной конфигурации. При этом экземпляр может работать как с кодом своей конфигурации, так и иметь свой локальный код, где функционал конфигурации может быть расширен или изменен.

Как правило, для конкретной задачи удобнее модифицировать конкретный экземпляр. Если предполагается многократное использование и тиражирование, то модифицируется конфигурация или даже сам гипермодуль.

ПРИМЕР

Рассмотрим возможности модификации функционала Amiro.CMS.

Если двигаться от простого к сложному – от клиента к ядру, то у разработчика есть возможности:

  • менять настройки;
  • менять шаблоны;
  • модифицировать JS-код на клиенте;
  • использовать AJAX и REST API.

Если клиентских возможностей не хватает для реализации, то разработчик может работать на стороне сервера:

  • создавать свои обработчики событий;
  • простым нажатием кнопки получать из готового экземпляра модуля пронаследованный от него локальный код и менять в нем необходимые методы;
  • аналогичным образом можно наследовать и изменять системные классы, в результате чего все инсталлированные в системе модули будут работать с модицифицированной версией библиотеки.

Дальше – больше: можно создать полностью свой экземпляр, свою конфигурацию или даже свой гипермодуль. Впрочем, это может потребоваться, только если необходимо организовать дистрибуцию тиражируемого решения. Если делается реализации под конкретный проект, то достаточно просто выполнить наследование.

Последний уровень модификации  – возможность внести изменения в открытый код ядра, но в этом случае происходит потеря возможности обновления системы. На всех предыдущих уровнях модификации система остается полностью обновляемой, так как общие файлы остаются неизменными. Очень малое число CMS предоставляет столь широкий выбор возможностей модификации

Таким образом, разработчик поднимается на уровень абстракции ровно на столько, на сколько это необходимо для решения поставленной задачи. И это снова позволяет работать в концепции «пиши только мясо»: разрабатывать только то, что непосредственно необходимо.


Дистрибуция и обновление решений

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

Уникальной особенностью архитектуры Amiro.CMS является мультиэкземплярность модулей. Amiro.CMS оперирует дистрибутивами модулей, которые позволяют устанавливать произвольное количество экземпляров модуля.

Иллюстрацией такого подхода являются Инфоленты, которые входят в стандартную поставку системы. Это модули управления контентом (новости, блоги, фотоальбомы и т.д.) с широким набором функционала (теги, комментарии, рейтинги и др.)

Например, пользователь может установить из дистрибутива несколько лент новостей, переопределив при этом внешний вид, настройки и даже код каждой из них и включив в каждой свой уникальный набор дополнительного функционала.

Мультиэкземплярность и широкие возможности модификации стали возможны благодаря использованию в архитектуре объектной модели с трехуровневой схемой наследования гипермодуль-конфигурация-экземпляр.

Дистрибутив представляет собой targz-архив с тремя составляющими: общий код, инструкции установщика и манифест с информацией о дистрибутиве.

В Amiro.CMS долгое время применяется тщательно отработанная уникальная система обновления: автоматически происходит обновление фронта при помощи специального парсера. Благодаря этой схеме в отличие от других систем обновления проходят безболезненно, пользователи Amiro.CMS не боятся обновлять свои сайты на актуальную версию ПО. Теперь весь функционал автоматической системы обновления становится доступен разработчикам решений для Amiro.CMS.

Гибкая безопасно расширяемая архитектура

Вся работа сторонних решений с ядром происходит через API. Модули не взаимодействуют между собой с помощью прямых вызовов методов. Взаимодействие происходит через систему событий: модуль может подписаться на события и сам инициировать новые события. Такой подход гарантирует, что добавление нового модуля «не сломает» работу других модулей.

Еще один плюс данного подхода – новые модули, которые будут реализованы в будущем, смогут взаимодействовать с модулями, написанными уже сейчас.

Например, модуль рейтингов был реализован позже других модулей Amiro.CMS, но он автоматически подключился ко всем модулям системы без каких либо изменений в них, так как для работы этому модулю требуется только модель списка и модель деталей.

В Amiro.CMS 6 для разработчиков решений предусмотрены широкие возможности как для разработки клиентской части решений, так и для управлениями этими решениями в панели администратора. API позволяет не только реализовывать секции для администрирования своих модулей, но создавать расширения, создающие новые аспекты для всех объектов панели администратора, например, добавляющие новые групповые операции над объектами или контролирующие индексацию страниц в поисковых системах.

Амиро.Маркет

Вместе с Amiro.CMS 6 на рынок выведен новый продукт – Амиро.Маркет. Это магазин готовых решений, позволяющий разработчикам зарабатывать на продаже созданных ими решений для Amiro.CMS.

Амиро.Маркет значительно расширяет аудиторию пользователей решений Amiro.CMS: благодаря использованию API Амиро.Маркет решения получают возможность автоматической установки и становятся доступны не только профессионалам, но и конечным пользователям, не обладающим навыками программирования.

В будущем часть функционала из Amiro.CMS перейдет в Амиро.Маркет в виде загружаемых решений. Оформление функционала в виде загружаемых из Амиро.Маркет решений позволяет не перегружать установленную у пользователя CMS избыточным функционалом, дает возможность оптимизировать систему, устанавливая только то, что действительно необходимо конкретному проекту. Как следствие – система работает еще быстрее, потребляется меньше ресурсов, при этом интерфейс администратора становится проще.

Готовая инфраструктура

При разработке ядра Amiro.CMS 6 одной из основных задач было дать разработчикам всю необходимую готовую инфраструктуру, такую как MVC, авторизация, работа с формами, валидация данных, структуры данных и тд.

Разработчику остается только писать код, реализующий непосредственно логику, необходимую бизнес-пользователям. Подробнее о предоставляемой инфраструктуре.

Автогенерация кода: отсутствие необходимости разработчику вручную создавать все файлы и структуру классов. Все скелеты пользовательских дистрибутивов создаются встроенным генератором кода

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

Инфоленты

В Amiro.CMS 6 применен новый принцип реализации контентных модулей (новости, блоги, статьи и т.д.). Ранее у этих модулей была единая обобщенная монолитная реализация, затруднявшая их раздельную модификацию. В новой версии ядра выполнено разделение логики управления контентом на уровни абстракции с использованием новой 3-уровневой схемы наследования (гипермодуль-конфигурация-экземпляр).

Новый гипермодуль ami_multifeeds реализует функционал, на основе которого можно даже без написания кода (а при необходимости – и c написанием) создавать свои конфигурации, являющиеся законченными функциональными модулями.

ПРИМЕР

Рассмотрим ленту новостей, блог и фотоальбом. Гипермодуль ami_multifeeds содержит в себе исчерпывающий функционал и большое количество расширений (теги, комментарии, рейтинги и др.) для разнообразных сценариев работы с контентом.

На основе гипермодуля ami_multifeeds можно в 1 клик реализовать новостную ленту. По своей сущности лента новостей это Инфолента, в которой отключены категории, поэтому лента новостей это просто конфигурация гипермодуля инфолент, в которой отключено расширение категорий.

Рассмотрим блог, отличающийся от ленты новостей тем, что у него по-умолчанию включены комментарии и голосование. Блог просто является конфигурацией Инфоленты, в которой прописана данная специфика.

Фотоальбом – это Инфолента, у которой по-умолчанию включено расширение «Изображения».

Шаблоны оформления этих модулей могут отличаться между собой, что можно легко реализовать с помощью CSS. 

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

Предположим, что требуется немного изменить поведение фотоальбома, например, изменить принцип категоризации контента в нем. Можно автоматически создать наследованный экземпляр фотоальбома и просто дописать в него код, отсутствующий в гипермодуле. Но во всем остальном получившийся объект продолжает оставаться гипермодулем – он подчиняется общей логике работы гипермодуля Инфолент и автоматически получает все обновления, которые разработчики Amiro.CMS вносят в Инфоленты с выходом новых версий.

Необходимость писать свой гипермодуль может возникнуть, только если требуется написать кардинально иной функционал. Чтобы разработчик не выходил за концепт системы, предусмотрен ряд готовых гипермодулей, который в дальнейшем будет расширяться:

  • пустой гипермодуль ami_clean, в котором ничего нет, он используется для наследования;
  • гипермодуль Инфолент ami_multifeeds, реализующий разнообразные сценарии работы с контентом.

Сейчас с помощью инфолент в ядре Amiro.CMS реализованы модули: «Новости», «Блог», «Статьи», «Фотоальбомы» и другие. Подробнее с ними можно познакомиться в регулярно пополняющейся документации.

О переводе контентных модулей на инфоленты читайте в FAQ по вопросам миграции модулей с 5-ой на 6-ю версию Amiro.CMS.

Современные универсальные шаблоны

В Amiro.CMS 6 реализован новый подход к организации шаблонов. Настройка дизайна любого модуля практически полностью может быть выполнена через CSS. Универсальная верстка дает широкие возможности настройки внешнего вида работы шаблона через настройку CSS без изменений самих шаблонов. 

Шаблоны Инфолент созданы изначально так, чтобы вся настройка дизайна могла быть полностью выполнена средствами CSS. Это рекомендованный оптимальный способ управления внешним видом модулей.

Например, модули новости, блог, фотоальбом работают фактически на одном базовом шаблоне, а индивидуальный вид и стиль отображения настроены с помощью собственного CSS каждого модуля, т.е. один шаблон универсален для различных модулей.

Другой пример универсальности шаблонов – адаптация отображения модуля для различных устройств с разным разрешением экрана (в том числе мобильных) только с помощью CSS.

Асинхронный интерфейс

В Amiro.CMS 6 реализован механизм асинхронных вызовов для получения данных или выполнения каких-либо операций.

Преимущества асинхронного интерфейса в том, что обновление информации происходит через перерисовку конкретных компонент, при этом между пользователем и сервером передается минимальный набор данных, что делает лаг в работе в разы меньшим, чем при перезагрузке всей страницы. Повышается производительность и быстродействия системы – снижается нагрузка на канал и на сервер.

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

Основные доступные асинхронные компоненты: фильтр, список, форма.

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

Пример сервиса, построенного с помощью асинхронного интерфейса – «Личные сообщения».

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

Наследование шаблонов

Оформление модуля берется из базового шаблона, входящего в дистрибутив модуля. Для изменения оформления экземпляра модуля достаточно переопределить только то, что нужно изменить относительно шаблона модуля. Такой подход существенно сокращает количество кода и время на его поддержку, позволяя производить настройку дизайна максимально гибко только средствами CSS.

ПРИМЕР

Рассмотрим устройство шаблона модуля «Новости». Шаблоны модуля подключаются и наследуются в следующем порядке:

Гипермодуль → Конфигурация → Экземпляр (модуль)

1. Шаблон гипермодуля Инфолента является общим для всех модулей этого типа templates/hyper/ami_multifeeds.tpl, в нем содержится все основное оформление для всех модулей такого типа.

2. Шаблон конфигурации «Новости» содержит и переопределяет только элементы оформления, которые должны отличаться от базового модуля и являются специфичными для модулей этой конфигурации /hyper/ami_multifeeds_news.tpl.

3. Шаблон экземпляра. Шаблон конкретного экземпляра модуля, в котором вы сейчас находитесь. В нем содержатся элементы оформления, специфичные для этого конкретного экземпляра.

Если требуется что-либо изменить, то достаточно перейти на уровень выше, скопировать необходимый код и на текущем уровне внести в него изменения уже в своем модуле.


Загрузите дистрибутив, чтобы опробовать производительность, богатый функционал, готовую инфраструктуру CMF и удобную архитектуру Amiro.CMS 6. Начните изучение системы с кейсов и учебника для начинающих разработчиков Amiro.CMS