@AndTheEnd

Как сформировать свою ссылку в ЧПУ в комплексном компоненте?

Добрый вечер. Подскажите, пожалуйста.
Я использую комплексный компонент bitrix:news.
ЧПУ раннее формировалось через /news/1234.html - где 1234 - id новости
Причем новость с id 1234 лежит в разделе section.
То есть шаблон ссылок имел вид
"section" => "#SECTION_CODE_PATH#/",
"detail" => "#ELEMENT_ID#.html",

Сейчас нам надо сделать так, чтобы новые добавленные новости имели нормальный чпу вида
"section" => "#SECTION_CODE_PATH#/",
"detail" => "#SECTION_CODE_PATH#/"#ELEMENT_CODE#/",

Но при этом старые новости должны остаться со старым урлом - /news/1234.html

Я не знаю как сделать так, чтобы у новых был новый урл, а у старых старый. Я хотел использовать функцию
SetUrlTemplates
Я прописал ее в result_modifier в news.list - но она не сработала - отдает 404 ошибку страница.
Вот код на примере одного айдишника

$rsElements = CIBlockElement::GetList(array(), array("ID" => 384857, "IBLOCK_ID" => 19), false, false, array("ID", "NAME", "DETAIL_PAGE_URL"));
$rsElements->SetUrlTemplates("/news/#SECTION_CODE_PATH#/#ELEMENT_CODE#.html");
$arElement = $rsElements->GetNext();
foreach($arResult["ITEMS"] as $key => $val){
	if($val["ID"] == $arElement["ID"]){
		$arResult["ITEMS"][$key]["DETAIL_PAGE_URL"] = $arElement["DETAIL_PAGE_URL"];
	}
}


То есть для этого ID ссылка формируется как мне надо, а вот при переходе отдает 404 ошибку. То есть ему вообще все равно. Этому компоненту главное, что за шаблон ссылки стоит при вызове компоненты. То есть, то что идет в массив $arParams.
Подскажите, как мне сделать свой шаблон ссылки, пожалуйста.

Спасибо
  • Вопрос задан
  • 878 просмотров
Пригласить эксперта
Ответы на вопрос 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Не надо создавать дубли страниц. Делайте редирект. Если элементов не много то составьте список и напишете редиректы а htaccess. Если же много то можно на 404 проверят url на принадлежность к старому шаблону ЧПУ, если нашли такую то делайте редирект через LocalRedirect
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы