Модификация URL перед запуском

На фрилансе попалась одна интересная задача, сутью которой было:

У элементов инфоблока имеется свойство тип список, typeProds.
Над списком товаров выводится это свойство с такими урлами:
/catalog/motors/jonson/regul/ – регулируемый
/catalog/motors/jonson/servise/ – сервисный
где requl и service — это значения свойства.


Нужно было это сделать, решение кажется подсказала статья: https://dev.1c-bitrix.ru/support/forum/forum6/topic91373/

В перспективе с помощью этого можно делать красивые урлы для чего-либо.

Обобщаю:

Оба варианта идут до инициализации bitrix. У меня вопрос как произвести манипуляции с url перед вызовом компонента bitrix:catalog?
Опишу ситуацию. В инфоблоке настроены url:
#SITE_DIR#/catalog/#SECTION_CODE#/
#SITE_DIR#/catalog/#SECTION_CODE#/#ID#/
Но на сайте есть еще и URL вида:
#SITE_DIR#/catalog/#SECTION_CODE#/#FILTER_NAME#/
Мне необходимо перед вызовом компонента bitrix:catalog определять что находится в url ID или FILTER_NAME. Если FILTER_NAME, то я заношу его в arrFilter и убираю из url последнюю секцию. В 13 версии битрикса я заменял url в $APPLICATION->sDocPath2

РЕШЕНИЕ:
в php.ini или .haccess
прописать
auto_prepend_file = «скрипт в котором заменяется урл в $_SERVER»
в этом файле:

Береш url сохраняешь что тебе надо удалить, в $server_get[«REQUEST_URI»] ставишь туда нужную ссылку, а тут пишешь ($_SERVER[«REQUEST_URI»] = «/catalog/new-collection/?code={$curPath[3]}»; ) оригинал ссылки с параметрами.
Примерно как то так. По идее должно помочь.
данный код преобразовывал /catalog/new-collection/odezda/ в /catalog/new-collection/?code=odezda

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *