Сортировка проблема при повторном вызове
ferdinant
26 ноября 2012 г.
У меня такая проблема приходиться 2 раза в шаблоне выводить сортировку магазина по цене и имени. При этом выскакивает такой лаг в работе...
?sorting=2&sorting=1
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
Stepan0v
26 ноября 2012 г.
Лаг в том, что get два раза вписывается или в чем?
hostcms
Модератор
26 ноября 2012 г.
Непонятно что значит два раза выводить сортировку. Блок сортировки в двух местах одной и той же формы? Разделить на две идентичность формы
ferdinant
26 ноября 2012 г.
<form method="get" action="{$path}{$form_tag_url}">
<div class="sort">
<div style="float:left;">
<span>сортировать:</span>
<select name="sorting" onchange="$(this).parents('form:first').submit()" >
<option disabled="disabled" class="stylish-select">Сортировать</option>
<option value="1" >
<xsl:if test="/shop/sorting = 1">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене ↓
</option>
<option value="2">
<xsl:if test="/shop/sorting = 2">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене ↑
</option>
<option value="3">
<xsl:if test="/shop/sorting = 3">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По названию
</option>
</select>
</div>
<xsl:if test="total > 0 and limit > 0">
<xsl:variable name="count_pages" select="ceiling(total div limit)"/>
<xsl:variable name="visible_pages" select="5"/>
<xsl:variable name="real_visible_pages"><xsl:choose>
<xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page"><xsl:choose>
<xsl:when test="page - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="page"/>
</xsl:when>
<xsl:when test="($count_pages - page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - page - 1) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
<xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="floor($real_visible_pages div 2)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок после текущего элемента -->
<xsl:variable name="post_count_page"><xsl:choose>
<xsl:when test="0 > page - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - page - 1"/>
</xsl:when>
<xsl:when test="($count_pages - page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:variable name="i"><xsl:choose>
<xsl:when test="page + 1 = $count_pages"><xsl:value-of select="page - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="page - $pre_count_page > 0"><xsl:value-of select="page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div style="float:left;">
<i>страницы: </i>
<ul class="str">
<xsl:call-template name="for">
<xsl:with-param name="limit" select="limit"/>
<xsl:with-param name="page" select="page"/>
<xsl:with-param name="items_count" select="total"/>
<xsl:with-param name="i" select="$i"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="visible_pages" select="$real_visible_pages"/>
</xsl:call-template>
</ul>
</div>
</xsl:if>
</div>
<xsl:apply-templates select="shop_item" />
<div class="sort sort2">
<div style="float:left;">
<span>сортировать:</span>
<select name="sorting" onchange="$(this).parents('form:first').submit()" >
<option disabled="disabled" class="stylish-select">Сортировать</option>
<option value="1" >
<xsl:if test="/shop/sorting = 1">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене ↓
</option>
<option value="2">
<xsl:if test="/shop/sorting = 2">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По цене ↑
</option>
<option value="3">
<xsl:if test="/shop/sorting = 3">
<xsl:attribute name="selected">selected</xsl:attribute>
</xsl:if>
По названию
</option>
</select>
</div>
<xsl:if test="total > 0 and limit > 0">
<xsl:variable name="count_pages" select="ceiling(total div limit)"/>
<xsl:variable name="visible_pages" select="5"/>
<xsl:variable name="real_visible_pages"><xsl:choose>
<xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name="pre_count_page"><xsl:choose>
<xsl:when test="page - (floor($real_visible_pages div 2)) < 0">
<xsl:value-of select="page"/>
</xsl:when>
<xsl:when test="($count_pages - page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - ($count_pages - page - 1) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
<xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="floor($real_visible_pages div 2)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<!-- Считаем количество выводимых ссылок после текущего элемента -->
<xsl:variable name="post_count_page"><xsl:choose>
<xsl:when test="0 > page - (floor($real_visible_pages div 2) - 1)">
<xsl:value-of select="$real_visible_pages - page - 1"/>
</xsl:when>
<xsl:when test="($count_pages - page - 1) < floor($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:variable name="i"><xsl:choose>
<xsl:when test="page + 1 = $count_pages"><xsl:value-of select="page - $real_visible_pages + 1"/></xsl:when>
<xsl:when test="page - $pre_count_page > 0"><xsl:value-of select="page - $pre_count_page"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<div style="float:left;">
<i>страницы: </i>
<ul class="str">
<xsl:call-template name="for">
<xsl:with-param name="limit" select="limit"/>
<xsl:with-param name="page" select="page"/>
<xsl:with-param name="items_count" select="total"/>
<xsl:with-param name="i" select="$i"/>
<xsl:with-param name="post_count_page" select="$post_count_page"/>
<xsl:with-param name="pre_count_page" select="$pre_count_page"/>
<xsl:with-param name="visible_pages" select="$real_visible_pages"/>
</xsl:call-template>
</ul>
</div>
</xsl:if>
</div>
</form>
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
hostcms
Модератор
26 ноября 2012 г.
И зачем мне это? Разделите на две разные формы, в каждой по своему блоку сортировки.
Авторизация