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

Основные стили и скрипты модуля находятся в следующих файлах:
/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"
	)
);?>
Главная   ·   Модули для 1С-Битрикс   ·   Типовые услуги   ·   Форум   ·   Блог   ·   Контакты
Рейтинг@Mail.ru