Нормализация урлов карточек товара в зависимости от категории Bitrix


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

Для начала, надо нормализовать урлы категорий. Для этого, в админке, в настройках инфоблока нужно заменить ссылки на категории и товар c #SECTION_CODE# на #SECTION_CODE_PATH#

И так-же заменить в настройках компонента.

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

Чтобы избежать такой проблемы, нужно в настройках компонента включить опцию «Устанавливать канонический URL».

После этого, у товаров будет один урл, вне зависимости от категорий, в которой находится пользователь. 
Если это не помогло, то нужно в шаблонах компонентов вывода товаров переписать урлы на новые. На примере catalog.section. Нужно в файле result_modifier.php темы компонента в цикле foreach ($arResult[‘ITEMS’] as $key => $arItem) добавить такой код

<?
$newUrl=CIBlockElement::GetByID($arItem["ID"])->GetNext();
$arItem["DETAIL_PAGE_URL"]=$newUrl["DETAIL_PAGE_URL"];
?>

Но это ещё не всё. Товар по старым ссылкам так-же будет открываться, 404 не будет. По этому, те товары которые уже попали в индексацию, не уйдут в 404, а так и останутся как дубли. Для этого уже надо прописать rel=canonical для карточек товара, благо теперь у товара есть один каноничный урл. Для этого нужно прописать код в шаблоне catalog.element вашей темы.

<?
$res=CIBlockElement::GetByID($arResult["ID"]); //Получаем информацию о товаре
if($ar_res=$res->GetNext()){
	if((!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] != "off") || $_SERVER["SERVER_PORT"] == 443){ //Получаем протокол сайта
		$protocol="https://";
	}else{
		$protocol="http://";
	}
	$APPLICATION->AddHeadString('<link rel="canonical" href="'.$protocol.$_SERVER['SERVER_NAME'].$ar_res["DETAIL_PAGE_URL"].'" />',true); //Добавляем в шапку сайта rel="canonical" с каноничной ссылкой на товар
}
?>	

После всех манипуляций получается избавится от дублей товаров, а для тех, что уже попали в индекс, при последующей переиндексации уйдут при помощи rel=canonicial.


Для связи

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

Или написать прямо на почту info@bobreod.ru





Отправляя форму, вы соглашаетесь с нашей политикой конфиденциальности