Авторизация
Корзина
0
Описание
Технические данные
- Опубликовано:
- 15.07.2015
- Версия:
- 1.0.1
- Установлено:
- 100 - 499 раз
- Подходящие редакции:
- «Первый сайт», «Старт», «Стандарт», «Малый бизнес», «Эксперт», «Бизнес»
- Адаптивность:
- Нет
- Поддержка Композита:
- Нет
Описание
Модуль который позволяет работать с инфоблоками через d7 ORM.
Подробнее в разделе Установка
Подробнее в разделе Установка
Отзывы (0)
- Общая оценка:
- Всего отзывов:
- 0
Авторизуйтесь, чтобы оставить отзыв или задать вопрос разработчику.
Пока что нет отзывов.
Обсуждения (1)
Авторизуйтесь, чтобы оставить отзыв или задать вопрос разработчику.
6 Октября 2017 10:00
Установка
Модель:
В своем модуле создаете entity для конкретного инфоблока. К примеру:
В файле include.php вашего модуля подключим модуль balamarket.orm
Для того, чтоб классы могли знать друг о друге используется правило наименования:
Все 4 класса обязательно должны лежать в одном namespace. Еще одно обязательное условие, свойства инфоблока должны находиться в отдельной таблице.Инфоблоки 2.0
Класс NewsTable инфоблока наследуем от Balamarket\Orm\Entity\IblockElement
Класс NewsPropSimpleTable свойств инфоблока наследуем от Balamarket\Orm\Entity\IblockPropSimple
Класс NewsPropMultipleTable множественных свойств инфоблока наследуем от Balamarket\Orm\Entity\IblockPropMultiple
Класс NewsSectionTable разделов инфоблока наследуем от Balamarket\Orm\Entity\IblockSection
Выборка:
Во время выборки можно использовать все поля указанные в методе getMap()
Доступны специальные поля в getMap():
\Balamarket\Orm\Entity\IblockElement:
\Balamarket\Orm\Entity\IblockPropSimple:
\Balamarket\Orm\Entity\IblockSection:
Для доступа к свойствам используются резервированные названия полей:
Примеры:
Примеры работы с множественными свойствами:
Больше примеров в виде модуля можно посмотреть вот тут:
balamarket.example
Сами примеры живут тут
В своем модуле создаете entity для конкретного инфоблока. К примеру:
/local/ modules/ <ваш модуль>/ content/ news.php - Класс инфоблока newspropsimple.php - Класс свойств инфоблока newspropmultiple.php - Класс множественных свойств инфоблока newssection.php - Класс разделов инфоблока |
use Bitrix\Main\Loader; Loader::includeModule("balamarket.orm"); |
<Сущность>Table <Сущность>PropSimpleTable <Сущность>PropMultipleTable <Сущность>SectionTable |
Все 4 класса обязательно должны лежать в одном namespace. Еще одно обязательное условие, свойства инфоблока должны находиться в отдельной таблице.Инфоблоки 2.0
Класс NewsTable инфоблока наследуем от Balamarket\Orm\Entity\IblockElement
<?php namespace <ваш модуль>\Content; class NewsTable extends \Balamarket\Orm\Entity\IblockElement { public static function getIblockCode() { return "news"; } } |
<?php namespace <ваш модуль>\Content; class NewsPropSimpleTable extends \Balamarket\Orm\Entity\IblockPropSimple { public static function getIblockId() { return NewsTable::getIblockId(); } } |
<?php namespace <ваш модуль>\Content; class NewsPropMultipleTable extends \Balamarket\Orm\Entity\IblockPropSimple { public static function getIblockId() { return NewsTable::getIblockId(); } } |
Класс NewsSectionTable разделов инфоблока наследуем от Balamarket\Orm\Entity\IblockSection
<?php namespace <ваш модуль>\Content; class NewsSectionTable extends \Balamarket\Orm\Entity\IblockSection { public static function getIblockId() { return NewsTable::getIblockId(); } } |
Выборка:
Во время выборки можно использовать все поля указанные в методе getMap()
Доступны специальные поля в getMap():
\Balamarket\Orm\Entity\IblockElement:
DETAIL_PAGE_URL - формируется из настроек инфоблока // Если есть класс с разделами то доступны ссылки на него SECTION - \Balamarket\Orm\Entity\IblockSection SECTIONS - Множественная привязка к разделам \Balamarket\Orm\Entity\IblockSection |
IBLOCK_ELEMENT - Доступ к \Balamarket\Orm\Entity\IblockElement |
DETAIL_PAGE_URL - формируется из настроек инфоблока PARENT_SECTION - Родительский раздел \Balamarket\Orm\Entity\IblockSection |
PROPERTY_SIMPLE.<символьный код свойства> PROPERTY_MULTIPLE_<символьный код свойства>.VALUE |
Примеры:
use <ваш модуль>\Content\NewsTable; $obNews = NewsTable::getList( array( "select" => array( "ID", "NAME", "SOURCE_LINK" => "PROPERTY_SIMPLE.SOURCE_LINK" ), "filter" => array( "=ACTIVE" => "Y", "!PROPERTY_SIMPLE.SOURCE_LINK" => false ), ) ); while($arNew = $obNews->fetch()) { // code } |
use <ваш модуль>\Content\NewsTable; $obNews = NewsTable::getList( array( "select" => array( "ID", "NAME", "PHONES" ), "runtime" => array( "PHONES" => array( "data_type" => "string", "expression" => array( "GROUP_CONCAT(%s)", "PROPERTY_MULTIPLE_PHONE.VALUE" ) ) ), "filter" => array( "=ACTIVE" => "Y", "!PROPERTY_MULTIPLE_PHONE.VALUE" => false ), ) ); while($arNew = $obNews->fetch()) { // code } |
balamarket.example
Сами примеры живут тут
Поддержка
Модуль открытый, распространяется под лицензией Apache License, Version 2.0
Исходный код на github.com
Ошибки и пожелания пишем на github.com Issues
Исходный код на github.com
Ошибки и пожелания пишем на github.com Issues