Главная » Статьи » Документация » Для разработчиков
Категории
20 Окт 2015
Начиная с версии 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
}
24 Ноя 2014
Бесплатная CMS AtomX является opensource проектом. По-этому каждый желающий разработчик может помогать в развитии проекта. Более того - мы будем этому очень рады). Помощь может выражаться по-разному, будь то написание кода, тестирование или материальная помощь проекту. Тут Вы найдете информацию о репозиториях AtomX CMS и их назначении, а так же дополнительную информацию о контактах основных разработчиков.

Code-style

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

Версионирование

В шапке каждого файла указана мета информация, среди которой, версия файла(класса или библиотеки), а так же дата последнего изменения. Эти значения необходимо менять каждый раз при изменении файла. Версионность ведется по принципу мажорной и ми
23 Апр 2014
Составление запросов

ORM - это програмнная прослойка между базой данных и контроллерами(модулями). ORM позволяет оперировать данными в виде объектов, а не в виде табличных данных, как они храняться в БД. Зачем это нужно? Ответ очень прост - объектами проще манипулировать на уровне ООП приложения(программы).

Основными частями ORM являются:

- Models
- Entities
- DB Driver

Рассмотрим каждую из этих частей подробнее:


Models

/sys/inc/ORM/Models/
Модели служат для описания связей между собой, а так же для описания функций выборки. Каждой таблице в БД должна соответствовать одна модель. Модель представляет из себя класс унаследованный от класса FpsModel. Для того, чтобы стало понятно как должна называться сама модель(класс модели), проще всего привести несколько примеров(имя_таблицы БД = Модель):
news = NewsModel
news_add_fields = NewsAddFieldsModel

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

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]
31 Мар 2014
В AtomX есть система плагинов, которая позволяет расширять стандартный функционал системы. В этой статье я расскажу как использовать эту возможность.

Обязательные условия

  • Каждый плагин должен находиться в папке /sys/plugins/
  • Каждый плагин должен представлять из себя дирректорию, чье имя состоит из бук, цифр или знака подчеркивания "_". Буквенные символы могут быть в любом регистре.
  • Плагин должен содержать конфиг в формате JSON config.dat.
  • В конфиге должны быть следующие значения:
    className - Имя основного класса(ниже будет рассказанно что это)
    title - Название плагина
    active - Включен ли плагин(1|0)
    points - На какие хуки подписывается плагин(массив)
  • Плагин должен содержать файл index.php, в котором будет находится основной класс.

Список хуков

Как это работает?

Плагин подписывается на хуки, перечисленные в points. Когда система "до
31 Мар 2014
Как делать плагины используя эти самые хуки.

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 - Просмотр категории. Хотя слово "просмотр" тут не совсем подходит. Этот хук вызывается при любом действии, затрагивающем категории. Например при просмотре материала вызовется этот хук с категорией, в которую данный материал входит. То же самое при редактировании комментария(например), хук вызовется с категорией, в которую входит матери
1