Skip to content

Инфоблоки ​

Для работы с инфоблоками предусмотрен ряд классов, которые по сути являются оберткой над D7 облегчающие работу с ним.

ID инфоблоков ​

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

Пример

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

  • Создать инфоблок - для каждой задачи свой
  • Создать свойства
  • Перенести (По сути снова создать) ИБ на dev сервер, а после и на prod.

Также не ясно как решать проблему совпадающих ID инфоблоков - ID автоинкрементный и добиться одинаковой БД у всех программистов и серверов практически не реально. Модуль миграций в значительной мере облегчает разработку

Для решения проблемы определения инфоблока по ID на проектах используются константы определяемые с помощью класса \Realweb\Api\Model\Iblock\Helper

Каждый инфоблок на сайте обязан удовлетворять 2 требованиям:

  • Иметь уникальный в рамках типа инфоблока символьный код CODE
  • Быть 2.0 (Т.е. свойства инфоблока должны содержаться в отдельной таблице)

При каждом запросе (это удобно делать в файле init.php или при подключении модуля realweb.api.modules) необходимо выполнить метод

php
\Realweb\Api\Model\Iblock\Helper::getInstance()->definers();

Данный метод объявит ряд констант вида IBLOCK_#ТИП ИНФОБЛОКА#_#КОД ИНФОБЛОКА#

Эти константы затем будут использоваться в построении запросов к инфоблокам.

Основной запрос ​

Основной запрос к получению элементов или разделов ИБ \Realweb\Api\Model\Iblock\Query наследуется от общего запроса к таблицам \Realweb\Api\Model\Orm\Query и содержит общие методы для обеих сущностей.

Имеет ряд встроенных методов:

  • public function setSelect(array $arSelect): static - добавление стандартных полей таблицы в выборку
  • public function setOrder($mOrder): static - указание сортировки
  • public function registerParentSectionField(?int $iBlockId = null): static - добавление родительского раздела в выборку. По умолчанию добавляются поля NAME, CODE и SORT. По желанию также можно добавить любые поля через ->addSelect('IBLOCK_SECTION.FIELD', 'IBLOCK_SECTION_FIELD')
  • public function registerSectionCodePath(): static - добавление в выборку пути из символьных кодов родительских разделов. Используется для построения ссылки на сущность.

Особенность

Для разделов символьный код самого раздела не включается в путь

  • public function registerSectionNamePath(): static - добавление в выборку пути из имен родительских разделов. Вместе с методом registerSectionCodePath() используется для построения хлебных крошек для сущности
  • public function registerAccessField(string $strField, array $arUserGroups, string $strEntityType, ?string $strRuntimeField = null): static - Добавление в выборку полей с правами на сущность

Сущность БД ​

Единая сущность для элемента, раздела и самого инфоблока \Realweb\Api\Model\Iblock\Entity наследуется от \Realweb\Api\Model\Data\Entity

Имеет встроенные методы общие для всех 3-х сущностей

  • public function getUrlTemplate(): ?string - Получение шаблона урл сущности
  • public function processMetaValues(): void - Получение сео мета данных сущности

Особенность

Мета данные инфоблока устанавливаются с помощью Метаданных для Инфоблоков

  • public function addBreadCrumb(): self - Добавление хлебной крошки в общий контейнер для работы с Seo
  • public function setMeta(): self - Установка метаданных на странице
  • public function getId(): ?int - Получение первичного ключа
  • Определение типа сущности, используется для внутренних нужд ядра
php
public function isIblock(): bool
public function isSection(): bool
public function isElement(): bool

Элементы ​

Сущность для работы с элементами ИБ \Realweb\Api\Model\Iblock\Element\Entity наследуется от общей сущности ИБ \Realweb\Api\Model\Iblock\Entity

Дополнительно имеет следующие методы

  • public function getIblock(): ?\Realweb\Api\Model\Iblock\Iblock\Entity - получение сущности инфоблока
  • public function getPreviewPicture(): ?PublicFile - получение файла картинки для анонса
  • public function getDetailPicture(): ?PublicFile - получение файла детальной картинки
  • public function getUrl(): string - получение ссылки на элемент в публичной части
  • public function save(): bool - сохранение элемента
  • public function delete(): bool - удаление элемента
  • public function addBreadCrumb(): self - добавление хлебной крошки элемента (Мета выводится через класс \Realweb\Api\Model\Utils\Seo)
  • public function setMeta(): self - установка мета тегов элемента (Мета выводится через класс \Realweb\Api\Model\Utils\Seo)
  • public function getMetaValues(): Meta\Collection - получение коллекции мета тегов (вернет пустую коллекцию без использования метода processMetaValues)
  • public function processMetaValues(): void - получение мета тегов элемента и добавление их в коллекцию \Realweb\Api\Model\Iblock\Meta\Collection
  • Ряд других вспомогательных методов

Замечание

Получение мета тегов осуществляется в кешируемой части контроллера методом processMetaValues(). Без вызова этого метода - getMetaValues вернет пустую коллекцию

Каждая наследуемая сущность элемента обязана реализовывать метод возвращающий название класса БД protected static function _getDatabase(): string.

Основной запрос ​

Основной запрос к списку элементов \Realweb\Api\Model\Iblock\Element\Query наследует \Realweb\Api\Model\Iblock\Query и имеет ряд встроенных методов:

  • public function registerDropdownField(string $strName, int $iBlockId): static - регистрация свойства типа "список"
  • public function registerMultiDropdownField(string $strName, int $iBlockId): static - регистрация множественного свойства типа "список"
  • public function registerPreviewPicture(bool $bWithSize = false): static - регистрация картинки для анонса
  • public function registerDetailPicture(bool $bWithSize = false): static - регистрация детальной картинки
  • public function registerMultiFileField(string $strName, int $iBlockId): static - регистрация множественного свойства типа "Файл"
  • public function registerMultiParentSectionField(): static - регистрация множественной привязки элемента к разделам
  • public function registerElementLinkField(string $strName, int $iBlockId): static - регистрация привязки к элементу ИБ

Рекомендация

Для получения множественных свойств рекомендуется пользоваться Получением множественных свойств через коллекцию

База данных ​

База данных элементов \Realweb\Api\Model\Iblock\Element\Database наследуется от стандартной БД \Realweb\Api\Model\Data\Database и имеет встроенные методы:

  • public static function getQuery(?Pagination $obNav = null): Query - основной запрос к элементам инфоблока В качестве параметров можно предавать следующие:
    • active - boolean, активность элементов, по умолчанию false
    • id - integer, фильтр по ID
    • ids - array, фильтр по массиву ID
    • code - string, фильтр по символьному коду CODE
    • codes - array, фильтр по массиву символьных кодов CODE
    • iblock_section_id - integer, фильтр по полю IBLOCK_SECTION_ID
    • iblock_section_ids - array, фильтр по массиву IBLOCK_SECTION_ID
    • section_id - integer, фильтр по родительскому разделу (в том числе, учитывая множественную привязку)
    • section_ids - array, фильтр по массиву родительских разделов (в том числе, учитывая множественную привязку)
    • include_subsections - boolean, в случае наличия параметров section_id или section_ids - учитывать ли дочерние разделы
    • order - array, сортировка
  • public static function getCacheTag(): string - получение тэга для кеша, используется в контроллере
  • public static function getMetaCacheTag(): string - получение тэга для кеша данных инфоблока, используется в контроллере
  • public static function clearCache(): void - очищение кеша инфоблока
  • public static function getSingleTable(): Property\Single\Table - получение ORM сущности таблицы свойств элементов
  • public static function getMultiTable(): Property\Multi\Table - получение ORM сущности таблицы множественных свойств элементов

Сохранение элемента ​

Для успешного сохранения полей элемента, необходимо, чтобы БД элемента возвращала массив полей методом public static function getFields(): array - по умолчанию возвращается свойство класса БД $arFields.

Для успешного сохранения свойств элемента, необходимо, чтобы БД элемента возвращала массив полей методом public static function getProps(): array - по умолчанию возвращается свойство класса БД $arProps

Свойства ​

Для работы со свойствами следует использовать Orm структуру свойств.

Для получения свойств удобно пользоваться встроенным в ядро модулем Iblock: контроллеры \Realweb\Api\Module\Iblock\Controller\PropertyController и \Realweb\Api\Module\Iblock\Controller\Property\EnumController.

Запрос базы данных \Realweb\Api\Model\Iblock\Element\Property\Database поддерживает следующие параметры:

  • codes - array, фильтр по массиву CODE
  • multiple - string, N или Y, фильтр по MULTIPLE
  • iblock_id - integer, фильтр по IBLOCK_ID
  • iblock_ids - array, фильтр по массиву IBLOCK_ID

Сущность свойства \Realweb\Api\Model\Iblock\Element\Property\Entity наследуется от стандартной \Realweb\Api\Model\Data\Entity и имеет встроенные методы:

  • public function getValueColumnName(): string - получение название поля, где хранится значение
  • public function getDescriptionColumnName(): string - получение название поля, где хранится описание к значению
  • public function isDetailShow(): bool - настройки свойства, показывать ли на детальной странице
  • public function isInBasket(): bool - настройки свойства, значение добавляется в корзину
  • public function isOfferTree(): bool - настройки свойства, используется для выбора торговых предложений
  • public function getCodeFormatted(): string - получение кода свойства в нижнем регистре
  • public function isDescription(): bool - выводить ли описание в редактировании элемента
  • public function isMultiple(): bool - множественность
  • public function isRequired(): bool - обязательность к заполнению
  • public function isEnum(): bool - тип свойства "список выбора"
  • public function isString(): bool - тип свойства "строка"
  • public function isFile(): bool - тип свойства "файл"
  • public function isElement(): bool - тип свойства "привязка к элементу"
  • public function isSection(): bool - тип свойства "привязка к разделу"
  • public function isNumber(): bool - тип свойства "число"
  • public function isDirectory(): bool - тип свойства "cправочник" (HL блок)
  • public function getEnumValues(): Enum\Collection - коллекция значений типа Enum
  • public function isSmartFilter(): bool - отображать в "умном" фильтре
  • public function getArUserTypeSettings(): ?array - получение настроек свойства
  • public function getFeature(): Feature\Collection получение коллекции дополнительных данных

Коллекция сущностей \Realweb\Api\Model\Iblock\Element\Property\Collection наследуется от стандартной и имеет встроенные методы:

  • getByCode - получение свойства по символьному коду
  • getByXmlId - получение свойства по внешнему коду
  • processFeatures - получение дополнительных данных Feature
  • processFilter - получение данных для "умного" фильтра Filter, в качестве параметра передается ID раздела, 0 - значит для всех
  • processEnumValues - получение значений типа список Enum
  • getOfferTree - получение коллекции свойств для отбора ТП
  • getSingle - получение коллекции одиночных свойств
  • getMultiple - получение коллекции множественных свойств
  • getFilterProperties - получение коллекции свойств отображаемых в "умном" фильтре

Множественные свойства ​

Для работы со значениями множественных свойств используется Orm структура \Realweb\Api\Model\Iblock\Element\Property\Multi.

База данных \Realweb\Api\Model\Iblock\Element\Property\Multi\Database содержит основной запрос к таблице со значениями. Так как стандартом разработки является использование инфоблоков 2.0 (Т.е. свойства инфоблока содержатся в отдельной таблице) для получения значений для конкретного ИБ необходимо создать собственную Orm структуру, наследуемую от "ядерной" и в классе Database реализовать метод public static function getIblockId(): int; возвращающий ID необходимого ИБ.

По умолчанию база данных \Realweb\Api\Model\Iblock\Element\Property\Multi\Database принимает следующие параметры (Которые при необходимости можно расширить в своем классе)

  • id - integer, фильтр по ID
  • ids - array, фильтр по массиву ID
  • property_id - integer, фильтр по PROPERTY_ID
  • property_code - string, фильтр по PROPERTY_CODE
  • element_id - integer, фильтр по IBLOCK_ELEMENT_ID

Рекомендация

Получение значений множественных свойств для элементов удобно производить через коллекцию элементов

Значения свойства типа список ​

Для работы со значениями свойства типа список используется Orm структура \Realweb\Api\Model\Iblock\Element\Property\Enum

Запрос базы данных \Realweb\Api\Model\Iblock\Element\Property\Enum\Database принимает следующие параметры:

  • id - integer, фильтр по ID
  • ids - array, фильтр по массиву ID
  • xml_id - integer, фильтр по XML_ID
  • xml_ids - array, фильтр по массиву XML_ID
  • property_code - string, фильтр по PROPERTY_CODE
  • property_codes - array, фильтр по массиву PROPERTY_CODE
  • property_id - integer, фильтр по PROPERTY_ID
  • property_ids - array, фильтр по массиву PROPERTY_ID
  • iblock_id - integer, фильтр по IBLOCK_ID

Коллекция значений \Realweb\Api\Model\Iblock\Element\Property\Enum\Collection наследуется от стандартной и дополнительно содержит методы:

  • getByXmlId - получение объекта значения, по внешнему ключу XML_ID
  • getXmlIds - получение массива внешних ключей XML_ID

Рекомендация

Получение значений свойств типа список для элементов удобно производить через контроллер \Realweb\Api\Module\Iblock\Controller\Property\EnumController.

База данных ​

Содержит основной запрос к БД. В качестве параметров можно предавать следующие:

  • codes - array, фильтр по массиву CODE
  • multiple - string, N или Y, фильтр по MULTIPLE
  • iblock_id - integer, фильтр по IBLOCK_ID
  • iblock_ids - array, фильтр по массиву IBLOCK_ID

Коллекция ​

Коллекция сущностей \Realweb\Api\Model\Iblock\Element\Property\Collection наследуется от стандартной \Realweb\Api\Model\Data\Collection и имеет дополнительные методы:

  • getByCode - получение свойства по символьному коду
  • getByXmlId - получение свойства по внешнему коду
  • processFeatures - получение дополнительных данных Feature
  • processFilter - получение данных для "умного" фильтра Filter, в качестве параметра передается ID раздела, 0 - значит для всех
  • processEnumValues - получение значений типа список Enum
  • getOfferTree - получение коллекции свойств для отбора ТП
  • getSingle - получение коллекции одиночных свойств
  • getMultiple - получение коллекции множественных свойств
  • getFilterProperties - получение коллекции свойств отображаемых в "умном" фильтре

Дополнительные данные ​

Дополнительные данные для свойств содержатся в таблице b_iblock_property_feature. Таблица имеет следующую структуру:

IDPROPERTY_IDMODULE_IDFEATURE_IDIS_ENABLED
Первичный ключID свойстваСимвольный код модуляСимвольный код "фичи"Активность

MODULE_ID и FEATURE_ID могут принимать значения

  • iblock - инфоблоки
    • LIST_PAGE_SHOW - Показывать на странице списка элементов
    • DETAIL_PAGE_SHOW - Показывать на детальной странице элемента
  • catalog - каталог
    • IN_BASKET - Значение добавляется в корзину

Умный фильтр ​

Для работы с "умным" фильтром (какие свойства в каком виде и в каких разделах отображать) можно воспользоваться Orm структурой \Realweb\Api\Model\Iblock\Element\Property\Filter.

Данные хранятся в таблице b_iblock_section_property, которая имеет следующую структуру

IBLOCK_IDSECTION_IDPROPERTY_IDSMART_FILTERDISPLAY_TYPEDISPLAY_EXPANDEDFILTER_HINT
ID инфоблокаID разделаID свойстваПрисутствие в смартфильтре
Y/N
Вид отображенияОтображать "открытым"
Y/N
Подсказка

Вид отображения DISPLAY_TYPE может принимать значения

  • A - Поле ввода для чисел со слайдером
  • B - Поле ввода для чисел
  • F - чекбоксы
  • G - чекбоксы с изображениями
  • H - чекбоксы с изображениями и подписями
  • K - радио-кнопка
  • P - список выбора
  • R - список выбора с изображениями и подписями
  • U - календарь

База данных \Realweb\Api\Model\Iblock\Element\Property\Filter\Database наследуется от стандартной.

В качестве параметров можно предавать следующие:

  • property_id - integer, фильтр по PROPERTY_ID
  • property_ids - array, фильтр по массиву PROPERTY_ID
  • iblock_id - integer, фильтр по IBLOCK_ID
  • section_id - integer, фильтр по SECTION_ID
  • smart_filter - string, Y или N, фильтр по SMART_FILTER

Сущность записи \Realweb\Api\Model\Iblock\Element\Property\Filter\Entity наследуется от стандартной и имеет методы:

  • isSmartFilter - отображать в фильтре
  • isDisplayExpanded - отображать развернутым
  • isCheckbox - отображать как чекбокс
  • isRadio - отображать как радио-кнопку

Получение множественных свойств через коллекцию ​

Для получения множественных свойств необходимо в коллекции реализовать метод получения класса базы данных _getDatabase

php
protected function _getDatabase(): string
{
    return Database::class;
}

Далее необходимо вызвать метод processMultiProperties, передав массив $arProps с символьными кодами свойств, при необходимости

php
$obCollection->processMultiProperties($arProps);

Поддерживается три типа данных:

  • \Realweb\Api\Model\Iblock\Element\Property\Multi\Value\Collection - коллекция значений с описанием (Все типы свойств, кроме файлов и списков [enum])
  • \Realweb\Api\Model\FileSystem\Bitrix\Collection - коллекция файлов
  • \Realweb\Api\Model\Iblock\Element\Property\Enum\Collection - коллекция значения типа список

Для получения данных необходимо в Entity добавить магические методы для получения свойств, например

php
@method \Realweb\Api\Model\Iblock\Element\Property\Multi\Value\Collection getEmails()
@method \Realweb\Api\Model\FileSystem\Bitrix\Collection getPictures()
@method \Realweb\Api\Model\Iblock\Element\Property\Enum\Collection getTypes()

При этом название метода строится по следующему алгоритму:

  1. Преобразовываем название поля в CamelCase (знаки "_" опускаются, следующая буква после этого знака - с большой буквы)
  2. Добавляем префикс get

Для типа коллекция значений с описанием \Realweb\Api\Model\Iblock\Element\Property\Enum\Collection метод toJson вернет массив значений, если нужен иной вывод, то в Entity необходимо добавить соответствующий метод, где формируется необходимая структура.

Для получения значений типа элемент или раздел или ХБ, где значением будет коллекция сущностей соответствующего типа, необходимо в коллекции реализовать методы processElements/processSections/processHighLoadBlock взяв ИД сущностей из коллекции значений \Realweb\Api\Model\Iblock\Element\Property\Multi\Value\Collection нужных свойств в Entity

Пользовательские типы свойств ​

Список пользовательских свойств

Разделы ​

Сущность для работы с разделами ИБ \Realweb\Api\Model\Iblock\Section\Entity наследуется от общей сущности ИБ \Realweb\Api\Model\Iblock\Entity

Дополнительно имеет следующие методы

  • public function getPicture(): ?PublicFile - получение картинки раздела в виде объекта PublicFile
  • public function getDetailPicture(): ?PublicFile - получение детальной картинки раздела в виде объекта PublicFile
  • public function getIblock(): ?\Realweb\Api\Model\Iblock\Iblock\Entity - получение сущности инфоблока
  • public function getUrl(): string - получение ссылки на раздел в публичной части
  • public function getChildSections(): Collection - получение коллекции дочерних разделов
  • public function setChildSections($obCollection): self - установка коллекции дочерних разделов
  • public function addChildSection($obSection): self - добавление раздела в коллекцию дочерних разделов
  • public function getChain(): Collection - получение "цепочки" разделов начиная от корневого, заканчивая текущим (Например, для получения хлебных крошек)
  • public function save(): bool - сохранение раздела
  • public function delete(): bool - удаление раздела
  • public function addBreadCrumb(): self - добавление хлебной крошки раздела (Мета выводится через класс \Realweb\Api\Model\Utils\Seo)
  • public function setMeta(): self - установка мета тегов раздела (Мета выводится через класс \Realweb\Api\Model\Utils\Seo)
  • public function getMetaValues(): Meta\Collection - получение коллекции мета тегов (вернет пустую коллекцию без использования метода processMetaValues)
  • public function processMetaValues(): void - получение мета тегов раздела и добавление их в коллекцию \Realweb\Api\Model\Iblock\Meta\Collection
  • Ряд других вспомогательных методов

Замечание

Получение мета тегов осуществляется в кешируемой части контроллера методом processMetaValues(). Без вызова этого метода - getMetaValues вернет пустую коллекцию

Каждая наследуемая сущность элемента обязана реализовывать метод возвращающий название класса БД protected static function _getDatabase(): string.

Основной запрос ​

Основной запрос к списку элементов \Realweb\Api\Model\Iblock\Section\Query наследует \Realweb\Api\Model\Iblock\Query и имеет ряд встроенных методов:

  • public function registerPicture(bool $bWithSize = false): static - получение пути к картинке раздела
  • public function registerDetailPicture(bool $bWithSize = false): static - получение пути к детальной картинке раздела
  • public function registerPathCode(): static - получение "пути" символьных кодов до текущего раздела
  • public function registerPathName(): static - получение "пути" имен до текущего раздела
  • public function registerSectionEnumField(string $strField): static - регистрация свойства типа "Список"
  • public function registerSectionMultiField(string $strField, int $iBlockId, ?string $strAlias = null): static - регистрация множественного свойства
  • public function registerSectionMultiFileField(string $strField, int $iBlockId, ?string $strAlias = null): static - регистрация множественного свойства типа "файл"

База данных ​

База данных разделов \Realweb\Api\Model\Iblock\Section\Database наследуется от стандартной БД \Realweb\Api\Model\Data\Database и имеет встроенные методы:

  • public static function getQuery(?Pagination $obNav = null): Query - основной запрос к разделам инфоблока В качестве параметров можно предавать следующие:
    • active - boolean, активность разделов, по умолчанию false
    • id - integer, фильтр по ID
    • ids - array, фильтр по массиву ID
    • code - string, фильтр по символьному коду CODE
    • codes - array, фильтр по массиву символьных кодов CODE
    • iblock_section_id - integer, фильтр по полю IBLOCK_SECTION_ID
    • iblock_section_ids - array, фильтр по массиву IBLOCK_SECTION_ID
    • section_id - integer, фильтр по родительскому разделу (в том числе, учитывая множественную привязку)
    • section_ids - array, фильтр по массиву родительских разделов (в том числе, учитывая множественную привязку)
    • left_margin - array, фильтр по полю LEFT_MARGIN. Массив из строго двух элементов
      • 1-ый элемент - символ операции (=,<,>,<=,>=)
      • 2-ой элемент - значение
    • right_margin - array, фильтр по полю RIGHT_MARGIN. Массив из строго двух элементов
      • 1-ый элемент - символ операции (=,<,>,<=,>=)
      • 2-ой элемент - значение
    • depth_level - integer, фильтр по полю DEPTH_LEVEL
    • order - array, сортировка
  • public static function getCacheTag(): string - получение тэга для кеша, используется в контроллере
  • public static function clearCache(): void - очищение кеша инфоблока

Для того чтобы была возможность добавлять в запрос поля UF_* необходимо в классе Database установить специальную константу

php
protected const QUERY_WITH_UF = true;

Коллекция ​

Коллекция разделов \Realweb\Api\Model\Iblock\Section\Collection наследуется от стандартной коллекции \Realweb\Api\Model\Data\Collection и имеет встроенные методы:

  • public function getTreeArray(): array - получение "дерева" из плоской коллекции разделов в виде массива
  • public function getTree(): self - получение "дерева" из плоской коллекции разделов в виде коллекции

Сохранение раздела ​

Для успешного сохранения раздела, необходимо, чтобы БД раздела возвращала массив полей методом public static function getFields(): array - по умолчанию возвращается свойство класса БД $arFields

Для успешного сохранения свойств UF_* раздела, необходимо, чтобы они присутствовали в массиве возвращаемых полей для сохранения, а также присутствие константы QUERY_WITH_UF в БД раздела

php
protected const QUERY_WITH_UF = true;

Необходимости регистрировать свойства UF_* отдельно нет, достаточно просто добавить их в список выбора полей.

Привязка к элементам ​

Для работы с множественной привязкой элементов к разделам (таблица b_iblock_section_element) следует пользоваться Orm структурой \Realweb\Api\Model\Iblock\Section\Element

База данных \Realweb\Api\Model\Iblock\Section\Element\Database наследуется от стандартной БД \Realweb\Api\Model\Data\Database

Доступные параметры:

  • element_id - фильтр по полю IBLOCK_ELEMENT_ID
  • section_id - фильтр по полю IBLOCK_SECTION_ID
  • additional_property_id - фильтр по полю ADDITIONAL_PROPERTY_ID
  • additional_property_id_null - фильтр по полю ADDITIONAL_PROPERTY_ID = null
  • with_depth_level - добавление к полям запроса поля раздела DEPTH_LEVEL

Коллекция сущностей \Realweb\Api\Model\Iblock\Section\Element\Collection наследуется от стандартной коллекции \Realweb\Api\Model\Data\Collection и имеет встроенные методы:

  • public function processSectionParents(): void - получение ИД родительских разделов

Сущность записи в БД \Realweb\Api\Model\Iblock\Section\Element\Entity наследуется от стандартного класса \Realweb\Api\Model\Data\Entity и имеет встроенные методы:

  • public function getSectionParentIds(): void - получение ИД родительских разделов (доступно после выполнения метода коллекции processSectionParents())

Пользовательские типы свойств ​

Список пользовательских свойств

Инфоблок ​

Для работы с сущностями ИБ следует пользоваться Orm структурой \Realweb\Api\Model\Iblock\Iblock.

Пользовательские свойства ​

Интерфейс

Интерфейс

Наравне с разделами у инфоблока также есть возможность добавлять пользовательские свойства UF_*.

Вкладка Пользовательские свойства появляется автоматически при подключении модуля realweb.api.

Для работы со значениями свойств ИБ необходимо создать кастомную Orm структуру в модуле realweb.api.module, для получения данных уже не нужен объект Pagination

Пример Database
php
class Database extends \Realweb\Api\Model\Iblock\Iblock\Database
{
	protected const QUERY_WITH_UF = true;

	protected static function _getIblockId(): int
	{
		return IBLOCK_CATALOG_CATALOG;
	}

	public static function getFields(): array
	{
		return array_merge(parent::getFields(), array('UF_COUNT', 'UF_TAGS'));
	}

	public static function getEntity(): string
	{
		return Entity::class;
	}
}
Пример Entity
php
/**
 * @method int getUfCount()
 * @method array getUfTags()
 * @method Entity setUfCount(int $iValue)
 * @method Entity setUfTags(array $arValue)
 */
class Entity extends \Realweb\Api\Model\Iblock\Iblock\Entity
{
	protected static function _getDatabase(): string
	{
		return Database::class;
	}
}

Пользовательские типы свойств ​

Список пользовательских свойств

Метаданные для Инфоблоков ​

Интерфейс

Интерфейс

Внедрение seo мета тегов для инфоблоков (По аналогии с элементами и разделами) может быть полезно для вывода метаданных на разводящих страницах инфоблока (Корневая страница ИБ)

Вкладка SEO инфоблока появляется автоматически при подключении модуля realweb.api.

По умолчанию добавляются поля

  • IBLOCK_META_TITLE - Шаблон META TITLE
  • IBLOCK_META_KEYWORDS - Шаблон META KEYWORDS
  • IBLOCK_META_DESCRIPTION - Шаблон META DESCRIPTION
  • IBLOCK_PAGE_TITLE - Заголовок страницы

На событии onBeforeIblockMetaShow есть возможность добавить дополнительные поля

php
use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;

EventManager::getInstance()
    ->addEventHandler('realweb.api', 'onBeforeIblockMetaShow', 'onBeforeIblockMetaShow');
function onBeforeIblockMetaShow(\Bitrix\Main\Event $obEvent):EventResult
{
	$obResult = new EventResult(EventResult::UNDEFINED,array(
		"IBLOCK_META_TEST"=>"Test"
	));
	return $obResult;
}

ToDo

Использовать только актуальные для ИБ формулы (Сейчас используются для раздела)