- Кастомизация файлов стилей и скриптов
- Класс "\Grain\Gallery\Tools"
- \Grain\Gallery\Tools::replace - замена макросов на галереи
- \Grain\Gallery\Tools::addAsset - добавление скриптов и стилей
- \Grain\Gallery\Tools::getRegExp - получение регулярного выражения
- \Grain\Gallery\Tools::getComponentTemplates - получение списка шаблонов компонента
- \Grain\Gallery\Tools::getCustomAsset - проверка на наличие кастомизированного файла
- Компонент "grain:gallery.section"
Кастомизация файлов стилей и скриптов
Основные стили и скрипты модуля находятся в следующих файлах:
/bitrix/js/grain.gallery/gallery.css
/bitrix/js/grain.gallery/gallery.js
При необходимости, для быстрой кастомизации, вы можете скопировать эти в файлы в шаблон сайта в подпапку "grain.gallery" выборочно или оба сразу. Т.е. чтобы подключались ваши файлы вместо системных, они должны находится, например, по следующим путям:
/bitrix/templates/папка_шаблона/grain.gallery/gallery.css
/bitrix/templates/папка_шаблона/grain.gallery/gallery.js
или
/local/templates/папка_шаблона/grain.gallery/gallery.css
/local/templates/папка_шаблона/grain.gallery/gallery.js
\Grain\Gallery\Tools::replace - замена макросов на галереи
Выполняет замену макросов типа ##Gid_галереи#название_шаблона# на результат работы компонента "grain:gallery.section". Возвращает html-код, в котором макросы заменены на html-код галерей.
Функция актуальна, когда галочка "Не использовать глобальную замену (производить замену самостоятельно)" в настройках модуля установлена.
Параметр функции | Описание |
---|---|
content | Исходный html-код |
Пример использования функции для детального текста в шаблоне компонента "bitrix:news.detail" (в файле result_modifier.php):
$arResult["DETAIL_TEXT"] = \Grain\Gallery\Tools::replace($arResult["DETAIL_TEXT"]);
\Grain\Gallery\Tools::addAsset - добавление скриптов и стилей
Добавляет скрипты и стили на страницу. Скрипты будут добавлены перед закрывающим тегом "</body>", а стили - перед закрывающим тегом "</head>".
Функция возвращает массив со списком всех добавленных скриптов и стилей.
Данная функция используется вместо стандартных \Bitrix\Main\Page\Asset::getInstance()->addCss и \Bitrix\Main\Page\Asset::getInstance()->addJs по причине невозможности их использования при глобальной замене в конце буферизации страницы.
Параметр функции | Описание |
---|---|
asset=false | Путь к файлу скрипта или или файлу стилей |
type=false | Тип: "css" - файл стилей, "js" - скрипт |
standard=false | Использовать стандартный способ подключения стилей. Если данная переменная будет равно true, то для подключения скриптов и стилей будут использоваться стандартные функции \Bitrix\Main\Page\Asset::getInstance()->addCss и \Bitrix\Main\Page\Asset::getInstance()->addJs. Данный параметр устанавливается в true в шаблонах при подключении компонента "grain:gallery.section" стандартным способом, а не при глобальной замене. |
Пример использования функции для подключения файла со скриптом лайтбокса:
\Grain\Gallery\Tools::addAsset(BX_ROOT."/js/grain.gallery/lightbox.js","js");
\Grain\Gallery\Tools::getRegExp - получение регулярного выражения
Возвращает регулярное выражение нужного типа для работы с макросами вида ##Gid_галереи#название_шаблона#.
Параметр функции | Описание |
---|---|
type="REPLACE" |
Тип регулярного выражения. Возможны следующие варианты: "REPLACE": для замены с использованием функций наподобие preg_replace_callback "SPLIT": для разбиения на фрагменты с помощью функций наподобие preg_split "MATCH": для проверки с использованием функций наподобие preg_match |
Пример: необходимо в шаблоне компонента "news.detail" разбить $arResult["DETAIL_TEXT"] на части, чтобы обернуть определенными html-тегами текст, который находится между галереями:
<?php
\Bitrix\Main\Loader::IncludeModule("grain.gallery");
$arResult["PARTS"] = preg_split(\Grain\Gallery\Tools::getRegExp('SPLIT'),$arResult["DETAIL_TEXT"],-1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
foreach($arResult["PARTS"] as $part):
$part = trim($part);
if(strlen($part)<=0)
continue;
if(preg_match(\Grain\Gallery\Tools::getRegExp('MATCH'),$part))
{
echo $part;
continue;
}
?>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2 blog-text">
<p>
<?=$part?>
</p>
</div>
</div>
</div>
<?
endforeach;
\Grain\Gallery\Tools::getComponentTemplates - получение списка шаблонов компонента
Возвращает список шаблонов компонента "grain:gallery.section" (в т.ч. языкозависимые названия из файлов ".description.php" в шаблоне). Может использоваться при построении иниерфейсов в админк и т.д.
Параметр функции | Описание |
---|---|
bGetAll=false | Вернуть полный список шаблонов вне зависимости от настройки модуля "Скрыть шаблоны (не будут отображаться в выпадающем списке при выборе галереи)". |
bDefaultAsEmpty=true | Возвращать название шаблона по умолчанию (".default") как пустую строку (""). |
\Grain\Gallery\Tools::getCustomAsset - проверка на наличие кастомизированного файла
Проверяет наличие кастомизированного файла (например, файла стилей или скриптов), и, если он существует, возвращает путь к нему от корня сайта, а в противном случае путь к нему относительно папки /bitrix/js/grain.gallery/.
Параметр функции | Описание |
---|---|
filename | Путь к файлу относительно папки /bitrix/js/grain.gallery/ |
Пример использования в файле component_epilog.php шаблона:
use \Grain\Gallery\Tools;
Tools::addAsset(Tools::getCustomAsset("gallery.css"),"css",$arParams["REPLACE"]!="Y");
Tools::addAsset(Tools::getCustomAsset("gallery.js"),"js",$arParams["REPLACE"]!="Y");
Компонент "grain:gallery.section"
Вы также можете использовать напрямую компонент "grain:gallery.section" для размещения галерей. Компонент находится в дереве компонентов визуального редактора Контент > Унив. галерея > Универсальная галерея.
Пример подключения компонента (в переменной $GallerySectionID находится ID галереи)
$APPLICATION->IncludeComponent(
"grain:gallery.section",
"about",
Array(
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"FILTER_NAME" => "",
"INCLUDE_SUBSECTIONS" => "Y",
"PARENT_SECTION" => $GallerySectionID,
"PARENT_SECTION_CODE" => "",
"SORT_BY1" => "SORT",
"SORT_BY2" => "ID",
"SORT_ORDER1" => "ASC",
"SORT_ORDER2" => "DESC"
)
);
Пример подключения компонента с дополнительной фильтрацией по элементам (в переменной $GallerySectionID находится ID галереи)
$GLOBALS["galleryFilter"] = array("!DETAIL_PICTURE"=> false); // только элементы, у которых присутствует детальная картинка
$APPLICATION->IncludeComponent(
"grain:gallery.section",
"about",
Array(
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"FILTER_NAME" => "galleryFilter",
"INCLUDE_SUBSECTIONS" => "Y",
"PARENT_SECTION" => $GallerySectionID,
"PARENT_SECTION_CODE" => "",
"SORT_BY1" => "SORT",
"SORT_BY2" => "ID",
"SORT_ORDER1" => "ASC",
"SORT_ORDER2" => "DESC"
)
);