Редирект на страницу с параметрами — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 10: Строка 10:
 
<source lang="html4strict">
 
<source lang="html4strict">
 
%content redirect('/shop/televizory/zhk_televizory/?fields_filter[price][1]=3000&fields_filter[price][0]=1500')%
 
%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. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим:
 +
<source lang="xml">
 +
<xsl:if test="result/@pageId = 99">
 +
    <xsl:value-of select="document('udata://content/redirect/(/shop/televizory/zhk_televizory/%3Ffields_filter%5Bprice%5D%5B1%5D=3000&amp;fields_filter%5Bprice%5D%5B0%5D=1500)/')" />
 +
</xsl:if>
 
</source>
 
</source>

Версия 18:12, 8 июня 2013

Актуально для версии 2.9


Задача: Переадресовать на страницу с передачей 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. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим:

<xsl:if test="result/@pageId = 99">	
    <xsl:value-of select="document('udata://content/redirect/(/shop/televizory/zhk_televizory/%3Ffields_filter%5Bprice%5D%5B1%5D=3000&amp;fields_filter%5Bprice%5D%5B0%5D=1500)/')" />
</xsl:if>