Что такое BXReady
Микрофреймворк BXReady предназначен для использования на платформе Bitrix.
Зачем существует BXReady? Мы просто хотим:
- Максимально упростить разработку, сопровождение и модернизацию проектов на базе Битрикс
- Предоставить пользователям и разработчикам в помощь универсальные примитивы, расширяющие возможности платформы Битрикс
- Создать бесплатное хранилище примитивов, на основе которых веб-разработчики могли бы собирать проекты с максимальной экономией.
- Создать технологии, позволяющие экономить на сопровождении и модернизации интернет-проектов
Технологии:
Все сущности микрофреймворка для публичной части сайта собираются:
- С обязательной поддержкой адаптивности
- На базе Bootstrap (в том числе со 100% совместимостью Bootstrap из ядра Битрикс)
Как использовать микрофреймворк BXReady?
- В настоящее время продукт используется только при разработке проектов ЦР Кузница.
- До официальной публикации продукта вы можете получить возможность работы с бета-версиями по индивидуальному запросу
Адаптивные списки
Инфоблоки в BXReady
Данный раздел содержит описание тонкостей и лайфхаки для работы с инфоблоками при использовании микрофреймворка BXReady
Волшебные свойства
Для работы представлений и стандартизации мы используем и рекомендуем использовать нижеуказаные свойства в инфоблоках для ряда узкоспециализированных задач
BXR_GLYPH
|
Класс глификонки
Тип свойства - строка
Содержит класс для отображения glyph иконки или иконки fontawesome
примеры значений
"fa fa-user" - используем иконки fontawesome
"glyphicon glyphicon-search" используем иконки glyphicon
|
BXR_ADDCLASS
|
Позволяет указать дополнительные класс для элементов представлений
Тип свойства - строка
Содержит строковое описание дополнительного класса
|
BXR_URL
|
Позволяет указать адрес произвольной ссылки для перехода
Тип свойства - строка
Используется на ряде представлений
|
BXR_PRICE
|
Позволяет задать цену для элемента ИБ (не явл. торг. каталогом)
|
BXR_DISCOUNT_PRICE
|
Позволяет задать цену со скидкой для элемента ИБ (не явл. торг. каталогом)
|
BXR_UNIT_PRICE
|
Единица измерения
|
BXR_DISCOUNT_PERIOD_FROM
|
Начало действия скидки
|
BXR_DISCOUNT_PERIOD_TO
|
Окончание действия скидки
|
Bxready и принципы открытой архитектуры
Одними из ценных и прогрессивных в наш век оказались принципы открытой архитектуры IBM.
- конструкция предусматривает возможность расширения системы;
- использование технических решений и технологий не требует лицензионных затрат;
- в процессе эксплуатации возможно изменение базового состава системы самим пользователем.
И микрофреймворк BXReady мы собираем с соблюдением этих принципов, поэтому каждая сущность BXReady:
- должна упрощать работу с Битрикс
- предоставляет возможности расширения и модернизации
- экономична как для пользователя, так и для веб-разработчика
И мы к этому стремимся.
Сущности BXready
Управляемые области шаблонов сайтов
Назначение:
Предоставить простой арсенал для автоматического управления и переключения областями в составе шаблона сайта.
При этом, все механизмы управления должны работать в автоматическом режиме без доработок как на уровне административной части, так и на уровне элементов управления Эрмитаж.
Охарактеризовать сущности можно следующим образом.
Если вам требуется готовый "отсек" или "слот" для размещения взаимозаменяемых модулей публичной части вашего сайта на уровне принципов открытой архитектуры, этот инструмент может вам помочь.
При этом все управление работой такого отсека уже сразу встроено в продукт и может происходить как в административной части, так и на уровне инструментов Эрмитаж.
Архитектура управляемых областей
Для того, чтобы использовать управляемые включаемые области достаточно следующей архитектуры в шаблоне вашего сайта
Создайте в папке
bxready ( ключевой раздел для всех сущностей BXReady ) шаблона? в котором планируется использование управляемых областей папку
area
Любой подраздел в указанной папке автоматически превращается в описание будущих bxready-слотов. А хранящиеся в таких разделах сценарии - есть варианты или версии областей.
Пример
Но просто иметь кодовые названия областей не всегда интересно, поэтому в разделе /bxreay/lang вашего шаблона вы можете добавить файл языковых для названий и описаний областей и их версий
код языковой фразы формируется следующим образом
для областей
bxr_<код области>_name - название области
bxr_<код области>_description - краткое описание области
для версий областей
bxr_<код области>_<код версии>_name - название версии
bxr_<код области>_<код версии>_description - краткое описание версии
Волшебные заначки
В коде версии вы можете использовать волшебную аббревиатуру
.disabled
Версии с такой аббревиатурой считаются ПРИНУДИТЕЛЬНО ВЫКЛЮЧЕННЫМИ, не участвуют в централизованном управлении и могут подключаться только прямым вызовом в замороженном режиме.
Сделано это специально (смотрите примеры использования и подключения областей)
Централизованное управление
Централизованное управление происходит на уровне шаблона,в случае, если для текущего шаблона оно разрешено
Для работы с централизованным управлением нужно только
Выбрать в секции области шаблонов (1) название вашего шаблона (2)
Разрешить централизованное управление (3)
И сопоставить для для каждого из слотов областей (4) нужную вам версию (5)
Список слотов и версий формируется автоматически на основании архитектуры ваших разделов и сценариев шаблона (см статью Сущности Bxready / Управляемые области шаблонов / Архитектура управляемых областей)
Поддержка Эрмитаж
Для поддержки централизованного управления областями через Эрмитаж
Перейдите в настройки модуля Bxready и на вкладке Эрмитаж включите опцию поддержки.
После этого в публичной части, формируемой шаблонами сайтов, в которых централизованное управление областями доступно, будет появляться подпункт
управления областями в панели управления Эрмитаж
Режим замороженного вызова
Для использования режима замороженного вызова используйте третий параметр метода
Area::showArea($areaName, $areaVersion, true)
равным true
Это дает сигнал системе, что ни при каких условиях в текущем слоте управляемой области с кодом
$areaName не будет показано никакая другая версия за исключением
$areaVersion, даже, если включено централизованное управление.
Примеры использования
Несколько примеров использования мы объединили в единый код
---
if (CModule::IncludeModule('alexkova.bxready')){
/*
* example 1
* View top_panel width BXready Core Support
*/
\Alexkova\Bxready\Area::showArea('top_panel', 'top_panel_v3');
/*
* example 2
* View header width BXready Core Support
* and development other area
*/
if ($USER->IsAdmin()){
\Alexkova\Bxready\Area::showArea('header', 'header_v1.disabled', true);
}else{
\Alexkova\Bxready\Area::showArea('header', 'header_v1');
}
}
---
Пример 1: Стандартное подключение управляемой области с кодом top_panel с использование централизованного управления и кодом области top_panel_v3 по умолчанию.
Пример 2: более интересный
Для все пользователей используется стандартное подключение, а вот разработчик с полными правами работает с определенной областью в режиме заморозки.
Причем код области составлен с использованием волшебного слова .disabled, что автоматически выводит его из под контроля централизованного управления и по сути - делает эту область недоступной для пользователя.
Таким образом разработчик может спокойно заниматься модернизацией, доработкой или созданием нового типа области header не переживая,что он (или кто то с соответствующими правами) может случайно включить ее.
Представления элементов
Назначение
Представления служат для отображения элементов списка, таких как карточка товара, элемент списка новостей и другие.
Подробнее о принципах работы представлений вы можете прочитать
здесь.
Архитектура
Структура представления
Представление может состоять всего из одного файла -
element.php. Данный файл является аналогом шаблона компонента, он содержит в себе верстку представления и вывод необходимых данных из результирующего массива
$arElement.
Кроме того, в представлении могут подключаться скрипты и стили, из папки
include, а также языковые файлы из папки
lang.
Для подключения скриптов и стилей в компонентах, работающих в ajax-режиме, необходимо наличие файла
epilog.php.
Начиная со второй версии фреймворка, появилась возможность передавать параметры в представления. Для этого используется файл
.parametrs.php. Структура файла аналогично файлу параметров компонентов. Единственное условие - название параметра должно начинаться с префикса "
BXR_PRST_".
Размещение представления
Для размещения представления вам достаточно в шаблоне компонента, отображающем список элементов, подключить класс
draw и в цикле прохода по элементам вызвать метод
use Alexkova\Bxready2\Draw;
$elementDraw = \Alexkova\Bxready2\Draw::getInstance($this);
$elementDraw->setCurrentTemplate($this);
foreach ($arResult["ITEMS"] as $cell => $arItem):
$elementDraw->showElement($arParams["BXREADY_LIST_TYPES"], $arParams["BXREADY_ELEMENT_DRAW"], $arItem, $arParams, $onlyEpilog);
endforeach;
куда передать следующие параметры:
- $arParams["BXREADY_LIST_TYPES"] - символьный код коллекции представления;
-
$arParams["BXREADY_ELEMENT_DRAW"] - символьный код представления;
-
$arItem - массив, описывающий элемент;
-
$arParams - массив, описывающий параметры работы представления;
- $onlyEpilog - подключить только epilog, необходимо при вызове ajax-компонентов
Пользовательские представления
При создании пользовательского представления вам необходимо разместить его в папке
/local/php_interface/include/bxready2/collection/user/ или
/bitrix/php_interface/include/bxready2/collection/user/
Где хранятся представления
Стандартные представления элементов хранятся по следующему пути:
bitrix/tools/bxready2/collection/bxr_elements/
Создание собственных представлений
Собственные представления размещаются в шаблоне
.default
Путь к шаблона аналогичен пути расположения штатных представлений
В настоящий момент мы готовим кейс по разработке своих представлений
Но принцип работы аналогичен прежним нашим решениям
Поэтому рекомендуем статьи
Различия есть, но понять принцип работы данные статьи помогут
Пошаговое руководство по созданию собственных представлений
https://dev.1c-bitrix.ru/community/webdev/user/245878/blog/15679/
Пример кастомизации
https://dev.1c-bitrix.ru/community/webdev/user/245878/blog/15701/?sphrase_id=23984267
Примеры представлений
Коллекции представлений
Форум
Классы BXReady
Allbxready
Класс родитель для любых классов BXBeady, содержит ряд методов и функций, которые должны быть доступны любому потомку.
Методы, которые могут использоваться в разработке
getManagementMode()
Служит для проверки режима централизованного режима управления сущностями через Эрмитаж. Возвращает true, если в системе включен режим поддержки Эрмитаж
getTemplateManagementMode($template = '')
Проверяет поддержку режима централизованного управления сущностями шаблона с кодом
$template. Возвращает
true, если в данном шаблоне включено централизованное управление
Draw
Класс для отрисовки представлений элемент.
Методы, которые могут использоваться в разработке
getInstance(&$componentTemplate = null, &$componentResult = null)
Служит для получения singleton сущности, отвечающей за прорисовку элементов.
showElement($elementType, $arElement = array(), $arElementParams = array(), $onlyEpilog = false)
Возвращает готовый html код представления.
Входные параметры:
$elementType - код представления;
$arElement - массив, описывающий элемент;
$arElementParams - массив с параметрами элемента;
$onlyEpilog - подключать только эпилог
Area
Класс Area является потомком класса Allbxready
Задача класса - обеспечение работы с управляемыми включаемыми областями
Содержит ряд вспомогательных методов
Основной метод, который требуется в работе
showArea
function showArea($areaName, $areaVersion, $noManagment = false)
Задача метода - создания "слота" управляемой области шаблона
$areaName - название слота
$areaVersion - версия области по умолчанию
$noManagment - специальный параметр запрета централизованного управления слотом.
В случае запрета централизованного управления слот будет подключать строго вариант $areaVersion
(
удобно в ряде случаев
пример 1: заморозка слота и запрет управления даже администраторами
пример 2: комбинированное использование слотов на время разработки в процессе эксплуатации проекта - один замороженный для разработчика, второй - управляемый для остальной категории пользователей
)
Смотрите также: Управляемые области шаблона
Nbxready
Less
Класс потомок AllBxready, в задачу которого входит предоставление разработчику инструментария обработки LESS на уровне выполнения PHP сценария
Для использования генератора достаточно использовать метод
function
createLess($inFile, $outFile, $lessVars = array(), $autoControl = false)
где
$inFile - абсолютный путь к входящему файлу LESS
$outFile - абсолютный путь к результирующему файлу CSS
$lessVars - массив значений LESS переменных для генерации CSS (не обязателен)
autoControl - флаг контроля за свежестью исходного LESS файла. Если включен - система проверит дату изменения исходного файла и в случае, если изменения произошли позднее последней генерации - осуществит генерацию, в противном случае вызов пройдет в холостом режиме.
При выключенном флаге генерация осуществляется принудительно.
Promo
Форум
Задать вопросы или обсудить МФ можно на форуме
http://bxready.ru/framework/forum/