Кастомизация файлов стилей и скриптов

Основные стили и скрипты модуля находятся в следующих файлах:
/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"

\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"
    
)
);