Редирект на страницу с параметрами — различия между версиями
Velross (обсуждение | вклад) (Новая страница: «<p>Актуально для версии 2.9</p> <hr> '''Задача:''' Переадресовать на страницу с передачей GET-параме…») |
|||
(не показано 7 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
− | <p>Актуально для версии 2. | + | <p>'''Актуально для версии 2.12'''</p> |
<hr> | <hr> | ||
'''Задача:''' Переадресовать на страницу с передачей GET-параметров.<br> | '''Задача:''' Переадресовать на страницу с передачей GET-параметров.<br> | ||
− | '''Применение:''' Например создание пунктов меню, по которым пользователь будет попадать на страницу с отфильтрованными результатами по какому либо параметру. | + | '''Применение:''' Например создание пунктов меню, по которым пользователь будет попадать на страницу с отфильтрованными результатами по какому-либо параметру. |
<br> | <br> | ||
'''Решение:'''<br> | '''Решение:'''<br> | ||
+ | |||
+ | Для TPL очень простое, достаточно в поле контент страницы с которой нужна переадресация вставить макрос %content redirect()% с нужными параметрами: | ||
+ | |||
+ | <source lang="html4strict"> | ||
+ | %content redirect('/shop/televizory/zhk_televizory/?fields_filter[price][1]=3000&fields_filter[price][0]=1500')% | ||
+ | </source> | ||
+ | |||
+ | Для XSLT необходимо следующие символы заменить на urlcode или entity:<br/> | ||
+ | [ - %5B<br/> | ||
+ | ] - %5D<br/> | ||
+ | ? - %3F<br/> | ||
+ | & - &amp;<br/> | ||
+ | <br> | ||
+ | |||
+ | Допустим у нас имеется страница "Телевизоры от 1500 до 3000 рублей" с pageId равным 99. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим (в целях удобного отображения, строка разбита на 2 части): | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <xsl:if test="result/@pageId = 99 and not(contains($_request_uri, 'fields_filter'))"> | ||
+ | <xsl:value-of select="document('udata://content/redirect/ | ||
+ | (/shop/televizory/zhk_televizory/%3Ffields_filter%5Bprice%5D%5B1%5D=3000&fields_filter%5Bprice%5D%5B0%5D=1500)/')" /> | ||
+ | </xsl:if> | ||
+ | </source> | ||
+ | |||
+ | Второе условие нужно для того, чтобы не происходила бесконечная переадресация на странице с уже примененным фильтром. Подробнее о переменной $_request_uri можно почитать [http://wiki.umisoft.ru/Получение_доступа_к_значениям_php_массивов_$_REQUEST_и_$_SERVER здесь] | ||
+ | |||
+ | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]] |
Текущая версия на 07:18, 19 мая 2016
Актуально для версии 2.12
Задача: Переадресовать на страницу с передачей GET-параметров.
Применение: Например создание пунктов меню, по которым пользователь будет попадать на страницу с отфильтрованными результатами по какому-либо параметру.
Решение:
Для TPL очень простое, достаточно в поле контент страницы с которой нужна переадресация вставить макрос %content redirect()% с нужными параметрами:
%content redirect('/shop/televizory/zhk_televizory/?fields_filter[price][1]=3000&fields_filter[price][0]=1500')%
Для XSLT необходимо следующие символы заменить на urlcode или entity:
[ - %5B
] - %5D
? - %3F
& - &
Допустим у нас имеется страница "Телевизоры от 1500 до 3000 рублей" с pageId равным 99. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим (в целях удобного отображения, строка разбита на 2 части):
<xsl:if test="result/@pageId = 99 and not(contains($_request_uri, 'fields_filter'))">
<xsl:value-of select="document('udata://content/redirect/
(/shop/televizory/zhk_televizory/%3Ffields_filter%5Bprice%5D%5B1%5D=3000&fields_filter%5Bprice%5D%5B0%5D=1500)/')" />
</xsl:if>
Второе условие нужно для того, чтобы не происходила бесконечная переадресация на странице с уже примененным фильтром. Подробнее о переменной $_request_uri можно почитать здесь