Начиная с версии 2.0 условные операторы выглядят следующим образом:
{% if context.var == 1 %}
Some HTML
{% else %}
Other HTML
{% endif %}
Таким образом, если context.var равен единице, выведется SomeHTML, а если не равен, то Other HTML.
В условиях можно использовать любые переменные, поддерживаемые в данном участке шаблона.
Условия могут быть вложенны друг в друга, выстраивая логическую цепочку. Пример:
{% if context.var == 1 %}
{% if context.foo == 1 %}
Some HTML
{% else %}
Other HTML
{% endif %}
{% else %}
Other HTML
{% endif %}
Кроме условных операторов, шаблонизатор Fapos CMS поддерживает циклы. Это позволяет обходить каждый элемент массива данных и выполнять над ним действия. Простой цикл:
{% for row in records %}
Some HTML with row
{% endfor %}
Это равносильно следующему коду на PHP:foreach ($records as $row) {
//Some CODE with $row
}
Бесплатная CMS AtomX является opensource проектом. По-этому каждый желающий разработчик может помогать в развитии проекта. Более того - мы будем этому очень рады). Помощь может выражаться по-разному, будь то написание кода, тестирование или материальная помощь проекту. Тут Вы найдете информацию о репозиториях AtomX CMS и их назначении, а так же дополнительную информацию о контактах основных разработчиков.
Code-style
Большая просьба, при написании кода, соблюдать кодстайл применяемый в AtomX и следовать изначально заданной архитектуре. Например, если в AtomX работа с базой ведется через ORM, то так и следует продолжать, а не делать запросы напрямую или подключать свои, избыточные библиотеки.
Версионирование
В шапке каждого файла указана мета информация, среди которой, версия файла(класса или библиотеки), а так же дата последнего изменения. Эти значения необходимо менять каждый раз при изменении файла. Версионность ведется по принципу мажорной и ми
ORM - это програмнная прослойка между базой данных и контроллерами(модулями). ORM позволяет оперировать данными в виде объектов, а не в виде табличных данных, как они храняться в БД. Зачем это нужно? Ответ очень прост - объектами проще манипулировать на уровне ООП приложения(программы).
Основными частями ORM являются:
- Models
- Entities
- DB Driver
Рассмотрим каждую из этих частей подробнее:
Models
/sys/inc/ORM/Models/
Модели служат для описания связей между собой, а так же для описания функций выборки. Каждой таблице в БД должна соответствовать одна модель. Модель представляет из себя класс унаследованный от класса FpsModel. Для того, чтобы стало понятно как должна называться сама модель(класс модели), проще всего привести несколько примеров(имя_таблицы БД = Модель):
news = NewsModel
news_add_fields = NewsAddFieldsModel
Для манипулирования данными, в основном, используется всего несколько методов. Сейчас я постараюсь дать максимально исчерпывающую информацию о них.
getCollection
FpsModel::getCollection([array $conditions[, array $additional_params]])
Возвращает массив записей из БД. Так как все модели наследуются от FpsModel, значит метод getCollection доступен в любой моделе. Метод возвращает массив объектов при удачном выполнении и false при неудаче. $conditions - условия выборки $additional_params - дополнительные параметры(page, limit, order, group)
getById
FpsModel::getById(integer $id)
Возвращает одну запись из БД по ее ID. Так как все модели наследуются от FpsModel, значит метод getById доступен в любой моделе. Метод возвращает объект при удачном выполнении и false при неудаче. $id - ID нужной записи
bindModel
FpsModel::bindModel(string $model[, array $params])
Используется для связывания моделей. Наприме[/b]
В AtomX есть система плагинов, которая позволяет расширять стандартный функционал системы. В этой статье я расскажу как использовать эту возможность.
Обязательные условия
Каждый плагин должен находиться в папке /sys/plugins/
Каждый плагин должен представлять из себя дирректорию, чье имя состоит из бук, цифр или знака подчеркивания "_". Буквенные символы могут быть в любом регистре.
Плагин должен содержать конфиг в формате JSON config.dat.
В конфиге должны быть следующие значения: className - Имя основного класса(ниже будет рассказанно что это) title - Название плагина active - Включен ли плагин(1|0) points - На какие хуки подписывается плагин(массив)
Плагин должен содержать файл index.php, в котором будет находится основной класс.
before_pather - Перед разбором URL, параметров нет.
after_pather - После разбора URL, параметров нет.
before_call_module - После разбора URL, параметры - массив параметров из URL(array(0 => 'news', 1 => 'view', 2 => 27)).
new_entity - После создания нового материала, принимает массив с новым материалом и названием модуля(array('entity' => EntityObject, 'module' => 'module_title')). Данный хук новый и пока реагирует не на любые материалы. На данный момент поддерживаются новости, фото, загрузки и статьи.
view_category - Просмотр категории. Хотя слово "просмотр" тут не совсем подходит. Этот хук вызывается при любом действии, затрагивающем категории. Например при просмотре материала вызовется этот хук с категорией, в которую данный материал входит. То же самое при редактировании комментария(например), хук вызовется с категорией, в которую входит матери