Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
то ждем ваше обращение в нашей службе тех поддержки.
По статистике, посетители сайтов куда чаще оказываются на страницах конкретных статей и товаров, чем собственно на главной странице. Следовательно, есть смысл в первую очередь совершенствовать именно ее. В этой статье разберем пример модернизации страницы детального просмотра для улучшения поведенческих характеристик. А именно, добавим навигацию к предыдущей и следующей записи, а также результаты поиска по сайту.
1. Редактируем шаблон страницы detail.php
Добавим код в параметры компонента bitrix:catalog.section
2. Редактируем шаблон "подвала" component_epilog.php
3. Настраиваем параметры компонента .parameters.php
4. Настраиваем вывод результатов поиска result_modifier.php
5. Настраиваем шаблон template.php
Готово!
Назад в раздел
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> |
Готово!
Назад в раздел
Подписаться на новые материалы раздела: