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

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