canonical bitrix

Для улучшения рейтинга одинакового содержания размещенного на разных страницах, необходимо использовать канонические URL. Как правило это относится к страницам пагинации. На сайтах Битрикс, делаем так:

Добавляем в /bitrix/php_interface/init.php

if ($_REQUEST['PAGEN_1']) {
	global $APPLICATION;
	$APPLICATION->AddHeadString('<link href="http://'.$_SERVER['HTTP_HOST'].$APPLICATION->sDirPath.'" rel="canonical" />',true);
}

Соответственно в шаблоне должна быть объявлена функция:

<?$APPLICATION->ShowHead();?>

Готово!

catalog.smart.filter - ajax обновление списка без AXAJ_MODE

Не нравится мне работа режима AJAX_MODE в компоненте catalog. Вот хоть убей, но ничего с битриксом в лучшую сторону с годами не меняется. Как был коммерческим продуктом, так им и остался. Где технологичность? Короче простое решение обновления списка с помощью ajax.get

В шаблоне bitrix:catalog.smart.filter редактируем script.js - ищим функцию JCSmartFilter.prototype.postHandler и редактируем следующее

//if (modef.style.display === 'none')
//{
//	modef.style.display = 'inline-block';
//}

$.get(
	result.FILTER_AJAX_URL, 
	function (data)	{
		$('.catalog-list').html($(data).find('.catalog-list').html());
	}
);

.catalog-list - селектор который необходимо обновить. Естественно jQuery должен быть подключен.

Если не работает SECTION_CODE_PATH в bitrix:catalog

В помощь трудящимся!

Если в шаблоне bitrix:catalog.section компонента catalog не работает путь из символьных кодов, как правило это вылазит когда используется вывод товаров и из подразделов - поможет небольшой код в result_modifier.php

$ids = array();
foreach ($arResult['ITEMS'] as $arItem)
	$ids[] = $arItem['ID'];

$res = CIBlockElement::GetList(array("SORT" => "ASC"), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ACTIVE' => 'Y', 'ID' => $ids), false, false, array('ID', 'CODE', 'IBLOCK_ID' ,'DETAIL_PAGE_URL'));
while($obj = $res->GetNext())
	$arRes[$obj['ID']] = $obj['DETAIL_PAGE_URL'];

foreach ($arResult['ITEMS'] as &$arItem)
	$arItem['DETAIL_PAGE_URL'] = $arRes[$arItem['ID']];

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

Спасибо за внимание! Всем чистого кода!