Настройка ЧПУ в новостной ленте 1c-bitrix – способ №2
Опубликовано 27 Янв 2010
Сегодня я расскажу как настраивать ЧПУ при совместном использовании 2х компонентов – «лента новостей» и «новость детально». Результатом будут красивые ссылки вида /news/1/ вместо стандартного /news/news_detail.php?ELEMENT_ID=1.
Итак, что нам необходимо для начала работы:
- созданный инфоблок с добавленными элементами
- настроенный обработчик 404 ошибки (как это сделать, я писал тут)
- компонент «лента новостей» (для примера будет располагаться в корне сайта /index.php)
- компонент «новость детально» (например, в /news/news_detail.php)
Первым делом в ленте новостей указываем путь до страницы детального просмотра – /news/#ELEMENT_ID#/
В настройках «новости детально» должно стоять: ID новости ={$_REQUEST["ELEMENT_ID"]}
Идем в Панель управления – Настройки – Настройки продукта – Обработка адресов – Новая запись.
Для тестового примера заполняем поля как на скриншоте
Файл – указываем путь до страницы, на которой лежит компонент «новость детально».
Условие стоит рассмотреть подробнее:
символами #^ обозначается начало строки для сопоставления;
/news/ – реальный или виртуальный каталог (т.е. может не существовать), который будет использоваться в адресах ссылок. Должен совпадать с первой частью пути до страницы детального просмотра в компоненте «лента новостей» (до #ELEMENT_ID#/);
([0-9]+) – буквально означает «любое количество цифр от 0 до 9». Это наиболее подходящий вариант, так как id новости – всегда число;
# – конец условия
Этим заканчивается процесс настройки, ЧПУ уже должно работать.
Для правильной работы поиска указываем в настройках инфоблока:
URL страницы информационного блока: #SITE_DIR#/
URL страницы раздела:
URL страницы детального просмотра: #SITE_DIR#/news/#ELEMENT_ID#/
Здесь /news/ тот самый существующий или не существующий каталог, о котором шла речь выше.
Работа с разделами сознательно не затрагивалась в данной статье, по той причине что нет стандартного новостного компонента, выводящего их список (да, в каталоге есть, но это уже совсем другая история:)




Спасибо огромное, очень я эту информацию искал ))
А то на форуме битрикса или к мануалам отсылают (в которых далеко не всегда все очевидно), или говорят – вы лохи, всякую ерунду спрашиваете ((
Все прекрасно работает, спасибо! Но, что делать, если нужно использовать вместо числового идентификатора символьный, например, ELEMENT_CODE? Пробовал таким путем, но не прокатывает…. Буду признателен за подсказку.
Настройка, по идее, отличается всего лишь одним пунктом – в списке путь до деталки /news/#ELEMENT_CODE#/ и в настройках детального просмотра «Код элемента» ={$_REQUEST["ELEMENT_CODE"]}
Большое спасибо за пример! В документации по битриксу эта информация почему-то отсутствует.
ЧПУ работает, но возникает проблема при применении постраничной навигации –
например при выводе комментариев к новости или при разбивке длинной статьи с помощью тега .
Пример:
До настройки ЧПУ ссылки на новости были такого вида:
/news/detail.php?ID=4827
Если к новости есть многостраничные комментарии (выводятся с помощью компонента forum.topic.reviews), то ссылки имели такой вид:
/news/detail.php?ID=4827&PAGEN_2=2
/news/detail.php?ID=4827&PAGEN_2=3
и т.д.
После настройки ЧПУ ссылки на новость стали такого вида:
/news/4827/
Ссылка выводится красиво как и задумано.
Но ссылки с постраничной навигацией выглядят уже не очень:
/news/4839/?ID=4839&PAGEN_2=2
/news/4839/?ID=4839&PAGEN_2=3
А не так как хотелось бы:
/news/4839/?PAGEN_2=2
/news/4839/?PAGEN_2=3
Пробовал различные настройки в «Обработке адресов» – бесполезно, компонент system.pagenavigation этим правилом не подчиняется.
Поэтому от настройки ЧПУ видимо придется отказаться.
Александр, у Вас в настройках инфоблока путь до страницы детального просмотра правильный стоит?
Такой проблемы не должно быть.
В настройках детальной страницы след. параметр:
#SITE_DIR#/news/#ELEMENT_ID#/
Александр, скиньте код страницы мне на e-mail, попробуем разобраться:)
alexey.valeev@gmail.com
Спасибо, Алексей! Второй раз нахожу нужную информацию на Вашем блоге.
Очень помогли, спасибо!
Отлично) это сработало!
А если ситуация такая. Есть уже готовая страница.. и надо привести её из вида http://mysite.ru/bitrix/test/…/test.php к виду http://mysite.ru/test.html. Естественно с редиректом со старой на новую. Как это реализовать в битриксе, если не секрет?)
C ходу видится 2 варианта – прописать в админке правило в «Обработке адресов» (не скажу точно как оно будет выглядеть, можно в курсах подсмотреть) или поставить 301й редирект прямо из .htaccess корневой директории.