Дублированные страницы на сайте 1c-bitrix. Дубли из-за неучитывающихся символьных кодов разделов(bitrix:catalog).

← Назад в записки веб-программиста

Дублированные страницы на сайте 1c-bitrix. Дубли из-за неучитывающихся символьных кодов разделов(bitrix:catalog).

php1c-bitrixсимвольные коды404

Работая с интернет-магазинами на 1c-bitrix, не первый раз сталкивался с данной проблемой. Заметил, что по ссылкам /catalog/sergy/2419/ и /catalog/obodki/2419/ открывается один и тот же товар. Как оказалось, комплексный компонент bitrix:catalog учитывает только id = 2419, открывая товар под этим id и не учитывая символьный код раздела sergy.

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

	<?		$rsSections = CIBlockElement::GetElementGroups($arResult['ID'], true); //определяем раздел товара		while($arSection = $rsSections->Fetch())			$arSections[] = $arSection["CODE"];		//собираем массив разделов с таким символьным кодом		if(!in_array($arParams['SECTION_CODE'], $arSections)){	//перебираем массив, если такого раздела нет, выводим 404		   @define("ERROR_404", "Y");	//добавляем константу		   if($arParams["SET_STATUS_404"]==="Y") 			  CHTTP::SetStatus("404 Not Found");		//открываем 404		} 	?>				

Плюс еще на заметку: использование константы 404 для вызова страницы 404 =)