8 PPTX, 3 МБ

Download Report

Transcript 8 PPTX, 3 МБ

Новое в инфоблоках:
вычисляемые свойства и ORM.
Смирнов Максим
Ведущий программист
«1С-Битрикс»
SEO
Хранение
• Наследование
• Кеширование
Шаблонизатор
• Подстановки
• Функции
Хранение: обзор
Наследование
• Инфоблок
• Раздел
• Элемент
Хранение
• Кеширование в БД
• Сброс кеша явный
Хранение: код
use Bitrix\Iblock\InheritedProperty;
//ООП ElementTemplates или SectionTemplates или IblockTemplates ))
$ipropTemplates = new InheritedProperty\ElementTemplates($IBLOCK_ID,
$ELEMENT_ID);
//Установить шаблон для элемента
$ipropTemplates->set(array(
"MY_PROP_CODE" => "{=this.Name}",
“SOME_CODE" => "", //Удалить шаблон
));
//Получить шаблоны для "редактирования"
$templates = $ipropTemplates->findTemplates();
//Удалить все собственные шаблоны элемента
$ipropTemplates->delete();
//ООП ElementValues или SectionValues или IblockValues ))
$ipropValues = new InheritedProperty\ElementValues($IBLOCK_ID, $ELEMENT_ID);
//Получить значения
$values = $ipropValues->getValues();
echo $values [" MY_PROP_CODE "];
//Сбросить кеш
$ipropValues->clearValues();
Шаблоны: обзор
Просто текст
Модификатор нижнего регистра/l
Модификатор транслитерации/tПодстановка: {=this.Name}
• Область: this, parent, sections, iblock, property или catalog.
• Поле: name, code, previewtext, detailtext, property_CODE…
Функции: {=concat " \ " "!" iblock.name sections.name this.name}
• Встроенные: upper, lower, translit, concat, limit, contrast, min, max и
distinct.
• Событие: OnTemplateGetFunctionClass
Вложенность:
• {=lower {=contrast 20 " .,?!" {=limit 50 " .,?!" this.previewtext} {=limit 50
" .,?!" parent.previewtext parent.detailtext}}}
Шаблоны: код
use Bitrix\Iblock\Template;
//Подключение модуля инфоблоков.
if (\Bitrix\Main\Loader::includeModule('iblock'))
{
//Задаём шаблон.
$template = "Name: {=this.Name}. Code:{=this.code}";
//Исходные данные будем брать из элемента.
$entity = new Template\Entity\Element($ELEMENT_ID);
//Не забываем про безопасность.
echo \Bitrix\Main\Text\String::htmlEncode(
//Вычисляем значение по шаблону.
Template\Engine::process($entity, $template)
);
}
);}
ORM
Используется шаблонизатором.
Пока только для выборки и нет поддержки Инфоблоков+.
Большие доработки в 14.0.6
Методы add/update/delete скоро будут.
ORM: примеры
$elementList = \Bitrix\Iblock\ElementTable::getList(array(
"select" => array("ID", "CODE"),
"filter" => array("=IBLOCK_ID" => $IblockId),
“limit" => array(5),
));
$element = $elementList->fetch();
if ($element)
echo $element["NAME"];
$elementList = \Bitrix\Iblock\ElementTable::query()
->setSelect(array("ID", "CODE"))
->setFilter(array("=IBLOCK_ID" => $IblockId ))
->limit(5)
->exec()
;
Выводы
Имеем мощный и простой в использовании функционал.
Заложены возможности для расширения.
Есть куда стремиться и развиваться.
ORM в инфоблоках будет совместима по данным с
существующими классами, а значит её можно будет
использовать одновременно и внедрять постепенно.
Спасибо за внимание!
Вопросы?
Twitter: @qMBQx8GH
Skype: mv.smirnov
E-mail: [email protected]