+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Совершенствуем страницу детального просмотра на «Битрикс»

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

По статистике, посетители сайтов куда чаще оказываются на страницах конкретных статей и товаров, чем собственно на главной странице. Следовательно, есть смысл в первую очередь совершенствовать именно ее. В этой статье разберем пример модернизации страницы детального просмотра для улучшения поведенческих характеристик. А именно, добавим навигацию к предыдущей и следующей записи, а также результаты поиска по сайту.

1. Редактируем шаблон страницы detail.php

Добавим код в параметры компонента bitrix:catalog.section

"PAGE_SEARCH_RESULT" => $APPLICATION->get_cookie("PAGE_SEARCH_RESULT"),   // Страница с результатами поиска
"PAGE_SEARCH_FILTER" => $APPLICATION->get_cookie("PAGE_SEARCH_FILTER"),   // Сериализованный массив фильтра по элементам


2. Редактируем шаблон "подвала" component_epilog.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

// Сохраним параметры фильтра в cookie пользователя
$APPLICATION->set_cookie("PAGE_SEARCH_RESULT", $APPLICATION->GetCurPageParam(), time()+60*60*24*7);

// Массив фильтра для CIBlockElement::GetList
global ${$arParams["FILTER_NAME"]};
$arrFilter = ${$arParams["FILTER_NAME"]}; 
  
// Блок с выбором раздела, если нужно
if($_REQUEST["SECTION_CODE"]) {
   $arrFilter["SECTION_CODE"] = $_REQUEST["SECTION_CODE"];
} 

foreach($arrFilter["PROPERTY"] as $key=>$arProperty) {
   $prefix = "";
   if(strstr($key, "?")) {
      $key = str_replace(Array("?"), "", $key);
      $prefix = "?";
   }
   $arrFilter[$prefix."PROPERTY_".$key] = $arProperty;
}
unset($arrFilter["PROPERTY"]);

$APPLICATION->set_cookie("PAGE_SEARCH_FILTER", serialize($arrFilter), time()+60*60*24*7);

?>


3. Настраиваем параметры компонента .parameters.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

$arTemplateParameters = Array(
   "PAGE_SEARCH_RESULT" => Array(
      "PARENT"   => "SECTION_CODE",
      "NAME"      => "URL страницы с результатами поиска",
      "TYPE"      => "STRING",
      "DEFAULT"   => ""
   ),
   "PAGE_SEARCH_FILTER" => Array(
      "PARENT"   => "SECTION_CODE",
      "NAME"      => "Массив фильтра поиска с которого перешли на страницу",
      "TYPE"      => "STRING",
      "DEFAULT"   => ""
   )
);
?>


4. Настраиваем вывод результатов поиска result_modifier.php

// ССЫЛКА НА СТРАНИЦУ С РЕЗУЛЬТАТАМИ ПОИСКА
$arResult["SEARCH_RESULT"] = $APPLICATION->get_cookie("PAGE_SEARCH_RESULT");

// ССЫЛКИ НА ПРЕДЫДУЩИЙ И СЛЕДУЮЩИЙ РЕЗУЛЬТАТ ПОИСКА
$arrFilterOriginal   = $APPLICATION->get_cookie("PAGE_SEARCH_FILTER");
$arrFilterUser      = unserialize($arrFilterOriginal);

$arSort = Array("sort" => "asc", "timestamp_x"   => "desc");
$arFilter = array_merge(
   Array ("IBLOCK_ID" => $arResult["IBLOCK_ID"], "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y"),
   $arrFilterUser
);

// Выбирать будем по 1 соседу с каждой стороны от текущего
$arNavParams   = Array("nPageSize" => 1, "nElementID" => $arResult["ID"]);
$arSelect      = Array("ID", "NAME", "DETAIL_PAGE_URL" );
$arItems      = Array();
$rsElement   = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);

$rsElement->SetUrlTemplates($arParams["DETAIL_URL"]);
while($obElement = $rsElement->GetNextElement())
   $arItems[] = $obElement->GetFields();

// возвращается от 1го до 3х элементов в зависимости от наличия соседей, обрабатываем эту ситуацию
if(count($arItems)==3):
   $arResult["TOLEFT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]);
   $arResult["TORIGHT"] = Array("NAME"=>$arItems[2]["NAME"], "URL"=>$arItems[2]["DETAIL_PAGE_URL"]);
elseif(count($arItems)==2):
   if($arItems[0]["ID"]!=$arResult["ID"])
      $arResult["TOLEFT"] = Array("NAME"=>$arItems[0]["NAME"], "URL"=>$arItems[0]["DETAIL_PAGE_URL"]);
   else
      $arResult["TORIGHT"] = Array("NAME"=>$arItems[1]["NAME"], "URL"=>$arItems[1]["DETAIL_PAGE_URL"]);
endif;


5. Настраиваем шаблон template.php

<div class="links">
   <?if($arResult["TOLEFT"]):?>
      <a class="back" href="<?=$arResult["TOLEFT"]["URL"]?>">предыдущее предложение</a>
   <?endif;?>

   <?if($arResult["SEARCH_RESULT"]):?>
      <a class="up" href="<?=$arResult["SEARCH_RESULT"];?>">к результатам поиска</a>
   <?endif;?>

   <?if($arResult["TORIGHT"]):?>
      <a class="right" href="<?=$arResult["TORIGHT"]["URL"];?>">следующее предложение</a>
   <?endif;?>
</div>



Готово!

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...