Справка
Массивы
Код: [count]
Результат: Значение (текст, числа, дата)
Для получения количества с учётом вложенных элементов, используйте команду [Количество (учитывая дочерние элементы)]
Код: [st]
Результат: Массивы
Например, попробуем получить перечень всех статей в категориях:
[cex.cat.rows.st.articles]
В данном примере можно также использовать метод [st] таблицы: [cex.cat.st.articles]
А теперь попробуем получить все статьи некоторых категорий:
Вначале выберем категории, помеченные нужным тегом
[tag=cex.tag.get('Интересное')]
Cделать это можно двумя способами:
1ый: [cats=cex.cat.gets($tag)]
2ой: [cats=$tag.linked]
(см. подробнее методы [linked] и [Выдать элементы по значению поля])
Далее, чтобы получить перечень статей этих категорий, напишем нашу команду:
[$cats.st.articles]
А теперь попробуем получить комментарии этих статей:
[$cats.st.articles.st.comments]
Код: [st_auth]
Код: [st_simple]
Результат: Массивы
Пример: [$category.st_simple.articles]
Используется в том случае, когда основное требование к выборке - её скорость и минимальный объём потребляемой ОЗУ.
Код: [stasc]
Псевдонимы: stdesc
Результат: Массивы
Выдаёт указанный диапазон элементов подтаблиц сортированных в определённом порядке.
[stasc] - отсортировать по возрастанию
[stdesc] - отсортировать по убыванию
Первый аргумент позволяет определить переменную, по которому производится сортировка.
Второй аргумент определяет количество пропущенных элементов, которые не войдут в итоговую выборку.
Третий аргумент определяет количество элементов в выборке.
Например:
[$cat.stdesc.articles('date',35,10)]
В данном случае произойдёт сортировка всех статей по переменной "Дата" по убыванию. А далее, будет выданы элементы с 35 по 44 (т.е. 10 элементов, начиная с 35).
Код: [next]
Результат: Объект
Например, у нас есть набор статей $articles:
[art=$articles.get('Интересная статья')]
[$articles.next($art)]
Выдаст следующую статью, идушую сразу за "Интересной статьёй".
Код: [pos]
Результат: Значение (текст, числа, дата)
([pos] у объекта, настраивается в административном кабинете)
Код: [owners]
Результат: Массивы
Код: [usel]
Результат: Массивы
Код: [sc]
Результат: Массивы
Например, [$articles.sc.title] выдаст массив всех заголовков исходных статей.
Оператор работает только если в исходном массиве все объекты одного типа.
Для обработки разнотипового массива используйте оператор Массив значений полей (из разных таблиц)
Код: [sc_mixed]
Например:
[($articles+$pages).sc_mixed.title]
Выдаст массив заголовков всех страниц и статей.
Код: [limit]
Результат: Массивы
Код: [del]
Результат: Массивы
Код: [one_for_each_owner]
Результат: Массивы
Например, у нас есть массив статей из всех категорий (который можно получить с помощью команды [Активные элементы подтаблицы], например: [arts=cex.category.st.articles]).
Мы можем оставить по одной статье из каждой категории, с помощью нашего метода:
[$arts.one_for_each_owner]
Будет выбран первый попавшийся элемент для каждого родителя. Для выборки последнего элемента используйте команду [one_for_each_owner2]
Код: [combine]
Результат: Значение (текст, числа, дата)
Код: [del_num]
Результат: Массивы
Код: [deldouble]
Результат: Массивы
Если исходный массив состоит из объектов, то возможно указание переменной, по которым будет происходить сверка объектов.
Например, [$articles.deldouble('title')] вернёт только те статьи, у которых различаются заголовки.
Данный метод оставляет самый первый элемент из повторяющихся. Если необходимо оставлять последний элемент, используйте метод [Удалить повторяющиеся элементы (с конца)]
Код: [flip]
Результат: Массивы
Код: [implode]
Псевдонимы: imp
Результат: Значение (текст, числа, дата)
Код: [push]
Результат: Массивы
Код: [get]
Результат: Объект
Если переменная не указана, то производит поиск по всем переменным объекта.
Например, получим статью с заголовком "Интересная" - [$articles.get('title','Интересная')]
А теперь получим сотрудников, у которых хотя бы одно поле соответствует значению "Иван" - [$employers.get('Иван')]
Для получения множества значений, используйте оператор [gets]
Код: [sel]
Результат: Массивы
В условии можно использовать оператор [cur], который будет означать текущий перебираемый элемент массива.
Например, отфильтруем статьи:
[cex.articles.rows .sel(cur.title=='Интересная' && cur.tags.get('новости') || cur.owner.title=='Авторские статьи')]
Код: [gets]
Результат: Массивы
Код: [find]
Результат: Массивы
Код: [find_count]
Результат: Значение (текст, числа, дата)
Код: [find_pointer]
Код: [search]
Результат: Массивы
В аргументах можно указать строгость поиска (strict, regular и easy), а также указать переменные, которыми будет ограничен поиск.
Для качественного отображения найденной информации можно использовать оператор [highlight] и [highlight_only]. Первый выдаст куски текста, связанные с запросом, а вторая только подсветит их в общем тексте.
Код: [seld]
Результат: Массивы
Код: [lsel]
Результат: Массивы
Если использовать обычный [sel], то в его результаты не подойдут вложенные объекты, чьи родители не соответствуют условиям. Для таких случаев следует использовать команду [lsel].
Код: [rand]
Результат: Массивы
Например: [cex.articles.rows.rand(5)]
выдаст 5 случайных статей
Это будет выглядеть так:
[cex.articles.find.sort(rand).limit(5)]
Код: [sort]
Результат: Массивы
Затем сортирует исходный массив согласно полученным значениям.
В выражении сортировки можно использовать метод [cur] (или [value], если исходный массив не состоит из объектов), который будет означать текущий объект
Например, давайте отсортируем статьи по дате и заголовку:
[$articles.sort(cur.date++cur.title)]
А теперь отсортируем статьи по дате добавления:
[$articles.sort(cur.creation_date.day3)]
А теперь по имени автора:
[$articles.sort(cur.user.name)]
Код: [asc]
Псевдонимы: order
Результат: Массивы
Например: [$articles.asc('title,date')]
Обратите внимание на то, что перечисление переменных в этом операторе происходит внутри кавычек.
Вместо названия переменной можно использовать следующие значения:
id - идентификатор объекта
pos - позиция в кабинете администратора
owner - объект-родитель
user - основной пользователь-владелец объекта
Для обратной сортировки можно использовать метод [Обратная сортировка].
Код: [desc]
Результат: Массивы
Код: [kdesc]
Результат: Массивы
Код: [_function]
В качестве главной переменной функции назначается результат выполнения предыдущей цепочки операторов.
Более подробно смотрите в [_function]
Код: [_component]
В качестве главной переменной компонента назначается результат выполнения предыдущей цепочки операторов.
Более подробно смотрите в [_function]
Код: [_show]
В качестве главной переменной отображения назначается результат выполнения предыдущей цепочки операторов.
Более подробно смотрите в [_function]
Код: [_form]
В качестве главной переменной формы назначается результат выполнения предыдущей цепочки операторов.
Более подробно смотрите в [_function]
Код: [_part]
В качестве главной переменной части назначается результат выполнения предыдущей цепочки операторов.
Более подробно смотрите в [_function]
Код: [prepare]
Результат: Массивы
Данная операция осуществляется автоматически для оператора [tree] следующим образом. При первой и второй итерациях цикла определяются используемые переменные, после чего происходит автоматическая подгрузка аналогичных переменных для всех остальных объектов.
В качестве аргументов может быть перечисление переменных, а также [*] (все поля) и [sub:name] (подгрузить все подобъекты из указанной подтаблицы).
Если указана подгрузка объектов из подтаблиц, то результатом функции будет являться массив, состоящий из этих подобъектов. Если вместо [sub] указать [sub2], то результатом будет исходный массив.
Пример подготовки переменных, на статьях в категориях:
[cex.category.rows
.prepare('title','sub:articles')
.prepare('title','anons')]
Первая [prepare] подготовит заголовки категорий и массив всех статей, а вторая будет работать уже над массивом всех статей и подготовит заголовки и анонсы всех статей.
Код: [with]
Результат: различный
Позволяет исполнить оператор, в котором будет существовать команда [value], означающая текущий массив.
Например:
[$array.with(value.count)]
будет аналогична
[$array.count]
Следует использовать для сохранения цепочек в сложных ситуациях.
Код: [walk]
Псевдонимы: tree, each
Результат: Значение (текст, числа, дата)
Если массив состоит из объектов, то в операторе можно использовать команду [cur], означающую текущий перебираемый объект.
Если массив не состоит из объектов, то следует вместо [cur] использовать команду [value].
Если оператор возвращает текст, то команда [walk] вернёт результат, полученную путём сложения всех текстов.
Код: [map]
Результат: Массивы
Читать далее про "Модуль"