Формирование URL в MODx Revo
Добрый день уважаемое сообщество!
Подскажите пожалуйста такой вопрос — как формируются ссылки в MODx?
Т.е. задача, нужно сформировать ссылку в адресной строке, когда человек пришел с поисковой системы. Как это сделать именно в момент загрузки страницы? Чтобы ссылка формировалась вида — site.ru/catalog/product.html?&par1=val1&par2=val2 и т.д.
Натолкните на мысли пожалуйста!
Заранее спасибо!
Подскажите пожалуйста такой вопрос — как формируются ссылки в MODx?
Т.е. задача, нужно сформировать ссылку в адресной строке, когда человек пришел с поисковой системы. Как это сделать именно в момент загрузки страницы? Чтобы ссылка формировалась вида — site.ru/catalog/product.html?&par1=val1&par2=val2 и т.д.
Натолкните на мысли пожалуйста!
Заранее спасибо!
Комментарии: 16
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Интересует другое. В момент загрузки страницы нужно перехватить текущий URL, и дописать в конец нужные мне параметры. Т.е. как именно перехватить URL? Смотрю в сторону плагина с событием OnHandleRequest. Не до конца понимаю, что означает это событие, но мне кажется должно подойти. Смотрел в других примерах, например как сформировать фроинд урл из GET параметров, там как раз плагин вешается на это событие.
Буду благодарен, если кто то подскажет про это точнее.
А есть возможность то обратно в строку браузера запихать этот исправленный $url?
[correctMode = true] url формируется на основе текущего ресурса по правилам modx — «устойчивый» вариант
[correctMode = false] url формируется из строки запроса
А дальше добавить параметры — элементарно.
В вашем случае текущий URL и не нужен вообще, нужны только параметры.
Изменить (добавить) параметры при обработке текущего запроса можно 2 способами:
1) «Железный» вариант: на уровне .htaccess (директива redirect с использованием регулярных выражений)
2) В обработчике OnLoadWebDocument (с максимальным приоритетом = 0) добавить недостающие параметры (можно также удалить ненужные) в глобальные массивы:
а) при передаче данных методом POST: $_REQUEST + $_POST
б) при передаче данных методом GET: $_REQUEST + $_GET
И далее в любых сниппетах, функциях, классах, плагинах для получения параметров запроса использовать:
а) либо эти самые глобальные массивы
б) либо метод $modx->request->getParameters($keys, $type) (этот метод как раз и использует вышеуказанные глобальные массивы):
Это все верно, как сформировать ссылку я тоже знаю плюс у тебя все подробно расписано, у меня вопрос то в другом — как мне эту сформированную ссылку засунуть обратно в URL текущей страницы минуя редирект с помощью 301 либо sendRedirect.
Т.е., например, я, как пользователь, захожу из поиска на страницу сайта site.ru/product1.html.
В момент загрузки страницы, я, как программист, формирую нужную мне ссылку сайта с необходимыми GET параметрами:
— взял текущую страницу site.ru/product1.html,
— сформировал каким то образом необходимые параметры из реферера — откуда пришел пользователь, по какому запросу, из какого города.
— засунул данную сформированную ссылку обратно в URL адресную строку браузера
— в конечном итоге в адресной строке наблюдаю уже не site.ru/product1.html, а например site.ru/product1.html?&par1=val1&par2=val2…
Вот это как то можно сделать, минуя редирект?
Заранее спасибо!
modX::sendForward
Forwards the request to another resource without changing the URL. If the ID provided does not exist, sends to a 404 Error page.