ИНТЕРНЕТ-МАГАЗИН / ПОКАЗАТЬ ВСЕ ТОВАРЫ

Заметка создана: 18 ноября 2024 г.
В настройках ТДС "Интернет магазин" заменяем
$Shop_Controller_Show
      ->limit($oShop->items_on_page)
      ->parseUrl();
на
$items_on_page = Core_Array::getGet('items_on_page',false);
$items_on_page = ($items_on_page)?$items_on_page:$oShop->items_on_page;
$Shop_Controller_Show
   ->limit($items_on_page)
   ->parseUrl();
Блок пагинации модернизируем:
<xsl:choose>
                     <xsl:when test="total &gt; 0 and limit &gt; 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 &lt; $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)) &lt; 0">
                                         <xsl:value-of select="page"/>
                                    </xsl:when>
                                    <xsl:when test="($count_pages - page - 1) &lt; 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 &gt; 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) &lt; 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 &gt; 0"><xsl:value-of select="page - $pre_count_page"/></xsl:when>
                                    <xsl:otherwise>0</xsl:otherwise>
                          </xsl:choose></xsl:variable>
                         
                          <p>
                               <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>                             

                <!-- Кнопка показа всех товаров и возврата к пагинации-->
                 <xsl:choose>
                     <xsl:when test="limit &gt; 30">
                               <a href="./?items_on_page=30" class="button" style="margin-top:-1px;">Показать по 30 товаров</a>
                     </xsl:when>
                                  <xsl:otherwise>
                               <a href="./?items_on_page=999" class="button" style="margin-top:-1px;">Показать все товары</a>
                     </xsl:otherwise>
                </xsl:choose>                       
                              
                          </p>
                          <div style="clear: both"></div>
                  </xsl:when>
                     <xsl:otherwise>
                               <h2>К сожалению, таких товаров сейчас нет</h2>
                </xsl:otherwise>
           </xsl:choose>