линия

Главная

вторник, 22 ноября 2016 г.

Bitrix: каталог без разделов в URL

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



Допустим, имеем компонент "каталог" на странице /catalog/   . Настраиваем ЧПУ

Далее, создаем страницу detail.php в  папке /catalog/





На страницу кидаем компонент "Элемент каталога детально". И настраиваем его


Ставим галочки, чтобы  менялись заголовки




Теперь идем в админку настраивать  обработку адресов.


Пишем вот это:
#^/catalog/([a-zA-Z0-9_-]+)/#
/catalog/detail.php
ELEMENT_CODE=$1

После данных манипуляций, все должно работать. Но, если при открытии детальной страницы в конце адреса есть GET переменные то компонент не работает. То есть для адреса

/catalog/akusticheskiy_tomograf_kaskad_3_techeiskatel_korrelyatsionnyy/?clear_cache=Y

где в конце ?clear_cache=Y  компонент не откроет элемент, ибо ELEMENT_CODE  будет равен
akusticheskiy_tomograf_kaskad_3_techeiskatel_korrelyatsionnyy/?clear_cache=Y

Решается это путем обработки адресов либо в detail.php  перехватываем $_REQUEST и удаляем лишнее. Можно например сделать вот так:
if(strpos($_REQUEST["ELEMENT_CODE"],'?') !== false){

$a = explode('?', $_REQUEST["ELEMENT_CODE"]);  
$_REQUEST["ELEMENT_CODE"] = $a[0];
}
Ну вот и все.





1 комментарий:

  1. Вариант работает даже в 2020, иного решения не нашел =(

    ОтветитьУдалить