Для клиентов Итераторы

Итератор (от англ. iterator ― перечислитель) — интерфейс, предоставляющий доступ к элементам коллекции (массива или контейнера) и навигацию по ним.

Итератор объектов CeteraCMS

\Cetera\Iterator\DbObject — абстрактный базовый класс для коллекций объектов в CeteraCMS.

Итератор реализует интерфейсы \Countable, \Iterator, \ArrayAccess.

Методы \Cetera\Iterator\DbObject

Метод Описание
count() Количество объектов в коллекции
getCountAll() Количество объектов, исключая ограничение, заданное методом setItemCountPerPage
getFirstIndex() Порядковый номер первого элемента коллекции
getLastIndex() Порядковый номер последнего элемента коллекции
getPageCount() Количество получившихся страниц, если задано ограничение методом setItemCountPerPage
setOffset( $offset ) Исключить из коллекции первые $offset объектов
setItemCountPerPage($itemCountPerPage) Ограничить количество объектов в коллекции
setCurrentPageNumber($pageNumber) Выбрать страницу, если задано ограничение методом setItemCountPerPage
orderBy($sort, $order = null, $add = true) сортировать объекты по полю
groupBy($groupBy, $add = true) группировать объекты по полю
where($where, $combination = 'AND') Дополнительное условие для отбора объектов

Методы \Cetera\Iterator\DbObject доступны в любом из нижеописанных итераторов.

Итератор материалов

\Cetera\Iterator\Material — предоставляет доступ к коллекции материалов.

Способы получения материалов

\Cetera\Catalog::getMaterials() — возвращает итератор с коллекцией материалов данного раздела

\Cetera\ObjectDefinition::getMaterials() — возвращает итератор с коллекцией материалов данного типа

Пример, получить материалы текущего раздела:

$list = \Cetera\Application::getInstance()->getCatalog()->getMaterials();

 

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

$list = $catalog->getMaterials()->where('DATE_FORMAT(dat,"%Y") = 2016');

 

Пример, получить неопубликованные материалы:

// с помощью ->unpublished() добавляем в итератор неопубликованные материалы, 
// а затем с помощью ->where('type=0') оставляем только неопубликованные материалы
$list = $catalog->getMaterials()->unpublished()->where('type=0');

 

Пример, получить все материалы типа «Материал» (стандартный тип материалов, имеющий id=1):

$list = \Cetera\ObjectDefinition::findById(1)->getMaterials();

 

Методы \Cetera\Iterator\Material

Метод Описание
subFolders() Включать материалы из подразделов. Включаются материалы только того же типа, что и в начальном разделе
unpublished() Включать также неопубликованные материалы

Итератор разделов

\Cetera\Iterator\Catalog — предоставляет доступ к коллекции разделов.

Итератор разделов возвращают следующие методы:

\Cetera\Catalog::getChildren() — возвращает коллекцию дочерних разделов

\Cetera\Catalog::getPath() — возвращает коллекцию разделов от корня сайта

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

$menu = \Cetera\Application::getInstance()-getServer()->getChildren()->where('hidden<>1');
foreach ($menu as $catalog)
{
    echo $catalog->name.'<br>';
}

 

Пример, вывести хлебные крошки к текущему разделу:

foreach (\Cetera\Application::getInstance()-getCatalog()->getPath() as $catalog)
{
    if ($catalog->isRoot()) continue;// пропускаем раздел root
    echo $catalog->name.' / ';
}

 

Методы \Cetera\Iterator\Catalog

Метод Описание
has($catalog) Имеется ли в коллекции указанный раздел

Итератор пользователей

\Cetera\Iterator\User — предоставляет доступ к коллекции пользователей.

Итератор разделов возвращают следующие методы:

\Cetera\User::enum() — возвращает коллекцию пользователей CeteraCMS

Пример, найти пользователей, родившихся 15 августа:

// предполагается, что в поле birth_date хранится дата рождения
$list = \Cetera\User::enum()->where('DATE_FORMAT(birth_date,"%d.%m") = "15.08"');

Мы на связи

фото Алены Ратниковой

Алена Ратникова
Отвечаю за всё производство

фото Марии Лебедевой

Мария Лебедева
Занимаюсь новыми клиентами


Cetera Labs

График работы

Понедельник-пятница
9:00-18:00

Телефон

8 (800) 775-52-93