Переключение шаблона отображения
- 2 апреля 2021
-
Admin
-
346
-
Нет комментариев
Для выполнения поставленной задачи, подготовим массив с воможными типами шаблонов, а также сделаем так, чтобы выбранный вид запоминался для следующего посещения. Разместить этот кусок следует перед вызовом компонента, в моем случае в комплексном компоненте catalog/section/ перед вызовом bitrix:catalog.section, в который мы передаем в качестве имени шаблона переменную $template ($APPLICATION->IncludeComponent("bitrix:catalog.section",$template,Array()....)
<?
$arTemplateTypes = array("block", "list");
if(array_key_exists("display", $_REQUEST) || (array_key_exists("display", $_SESSION)) || $arParams["DEFAULT_TEMPLATE_TYPE"]){
if($_REQUEST["display"] && (in_array(trim($_REQUEST["display"]), $arTemplateTypes))){
$display = trim($_REQUEST["display"]);
$_SESSION["display"]=trim($_REQUEST["display"]);
}
elseif($_SESSION["display"] && (in_array(trim($_SESSION["display"]), $arTemplateTypes))){
$display = $_SESSION["display"];
}
elseif($arSection["DISPLAY"]){
$display = $arSection["DISPLAY"];
}
else{
$display = $arParams["DEFAULT_LIST_TEMPLATE"];
}
}
else{
$display = "block";
}
$template = "catalog_".$display;
?>
Выведем нашу переключалку и оформим ее, в данном примере стили оформления отсутствуют, но вы можете легко оформить их самостоятельно под стиль вашего сайта.
<?
?>
<div class="display_type">
<?foreach($arTemplateTypes as $TemplateType){?>
<a rel="nofollow"
href="<?=$APPLICATION->GetCurPageParam('display='.$TemplateType, array('display'))?>"
class="btn_display_type <?=$TemplateType?> <?=($display == $TemplateType ? 'current' : '')?>">
<i title="<?=GetMessage("SECT_DISPLAY_".strtoupper($TemplateType))?>"></i>
</a>
<?}?>
</div>
Ну и последнее это lang файл, добавьте эти строки в lang файл шаблона данного компонента /компонент/lang/ru/название_файла_где_размещен_вывод_кнопок
<?
$MESS["SECT_DISPLAY_BLOCK"]="Плитка";
$MESS["SECT_DISPLAY_LIST"]="Список";
$MESS["SECT_DISPLAY_TABLE"]="Таблица";
?>