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

Материал из Umicms
Перейти к:навигация, поиск
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
<p>'''Актуально для версии 2.9'''</p>
+
<p>'''Актуально для версии 2.12'''</p>
 
<hr>
 
<hr>
 
'''Задача:''' Переадресовать на страницу с передачей GET-параметров.<br>
 
'''Задача:''' Переадресовать на страницу с передачей GET-параметров.<br>
Строка 18: Строка 18:
 
& - &amp;amp;<br/>
 
& - &amp;amp;<br/>
 
<br>
 
<br>
Допустим у нас имеется страница "Телевизоры от 1500 до 3000 рублей" с pageId равным 99. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим (в целях удобного отображения, строка разбита на 2 части) :
+
 
 +
Допустим у нас имеется страница "Телевизоры от 1500 до 3000 рублей" с pageId равным 99. Тогда код для переадресации на страницу с отфильтрованным результатом будет следующим (в целях удобного отображения, строка разбита на 2 части):
 +
 
 
<source lang="xml">
 
<source lang="xml">
<xsl:if test="result/@pageId = 99">
+
<xsl:if test="result/@pageId = 99 and not(contains($_request_uri, 'fields_filter'))">
    <xsl:value-of select="document('udata://content/redirect/
+
<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)/')" />
 
(/shop/televizory/zhk_televizory/%3Ffields_filter%5Bprice%5D%5B1%5D=3000&amp;fields_filter%5Bprice%5D%5B0%5D=1500)/')" />
 
</xsl:if>
 
</xsl:if>
 
</source>
 
</source>
  
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[]]
+
Второе условие нужно для того, чтобы не происходила бесконечная переадресация на странице с уже примененным фильтром. Подробнее о переменной $_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
& - &amp;

Допустим у нас имеется страница "Телевизоры от 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&amp;fields_filter%5Bprice%5D%5B0%5D=1500)/')" />
</xsl:if>

Второе условие нужно для того, чтобы не происходила бесконечная переадресация на странице с уже примененным фильтром. Подробнее о переменной $_request_uri можно почитать здесь