Кто тебе такое сказал? Ты в битриксе разбираешься?
откуда вы такие только беретесь
И кому какая разница что там внутри и как работает, если это позволяет держать магазины-миллионники
<a href="<?=$APPLICATION->GetCurPageParam('template=название шаблона', array('template'));?>" rel="nofollow">
isset($_GET['template']) && $_GET['template'] ? $_GET['template'] : 'название шаблона по-умолчанию'
ты по сути похожий по реализации функционал сделаешь по-разному и в разных местах.
Это основная причина, почему так делать не надо. Есть ещё куча мелких
- большой объем шаблона
- неудобство расширения, при необходимости (например в одном типе отображения нужно делать дополнительные запросы, а в другом нет)
- если отображение будешь записывать в куки получишь проблему из-за кеша и т.д.
<?
$wievTemplates = array('blocks', 'lines', 'price');
$wievNames = array('<i class="fa fa-th-large"></i>', '<i class="fa fa-list"></i>', '<i class="fa fa-align-justify"></i>');
if (!isset($_SESSION['wiev'])) { $_SESSION['wiev'] = 'blocks' };
?>
<div class="wiev_panel">
<?
$i = 0;
foreach ($wievTemplates as $wiev) {
?>
<span data-wiev="<?= $wiev ?>">
<?= $wievNames[$i] ?>
</span>
<?
$i++;
}
?>
<?
$views = [
['template' => 'blocks', 'button_icon' => 'fa-th-large'],
['template' => 'lines', 'button_icon' => 'fa-list'],
['template' => 'price', 'button_icon' => 'fa-align-justify'],
];
?>
<div class="views_panel">
<?foreach($views as $view):?>
<span data-view="<?=$view['template'];?>">
<i class="fa <?=$view['button_icon']?>"></i>
</span>
<?endforeach;?>
</div>
<?
// Перед вызовом компонента
$template = $_SESSION['view'] ?? 'blocks';
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
$template,
//.....
?>