Что такое 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-слотов. А хранящиеся в таких разделах сценарии - есть варианты или версии областей.

Пример 


scr1.jpg

Но просто иметь кодовые названия областей не всегда интересно, поэтому в разделе /bxreay/lang вашего шаблона вы можете добавить файл языковых для названий и описаний областей и их версий

scr2.jpg 
код языковой фразы формируется следующим образом

для областей
bxr_<код области>_name - название области
bxr_<код области>_description - краткое описание области

для версий областей
bxr_<код области>_<код версии>_name - название версии
bxr_<код области>_<код версии>_description - краткое описание версии

Волшебные заначки
В коде версии вы можете использовать волшебную аббревиатуру .disabled
Версии с такой аббревиатурой считаются ПРИНУДИТЕЛЬНО ВЫКЛЮЧЕННЫМИ, не участвуют в централизованном управлении и могут подключаться только прямым вызовом в замороженном режиме.
Сделано это специально (смотрите примеры использования и подключения областей)

Централизованное управление

Централизованное управление происходит на уровне шаблона,в случае, если для текущего шаблона оно разрешено
scr3.jpg

Для работы с централизованным управлением нужно только
Выбрать в секции области шаблонов (1) название вашего шаблона (2)
Разрешить централизованное управление (3)
И сопоставить для для каждого из слотов областей (4) нужную вам версию (5)

Список слотов и версий формируется автоматически на основании архитектуры ваших разделов и сценариев шаблона (см статью Сущности Bxready / Управляемые области шаблонов / Архитектура управляемых областей)

Поддержка Эрмитаж

Для поддержки централизованного управления областями через Эрмитаж
scr5.jpg

Перейдите в настройки модуля Bxready и на вкладке Эрмитаж включите опцию поддержки.

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

scr4.jpg

Режим замороженного вызова

Для использования режима замороженного вызова используйте третий параметр метода 
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/