Вывод элементов ИС по n штук в группе +постраничная навигация

#
Вывод элементов ИС по n штук в группе +постраничная навигация
Добрый день! Есть готовый xsl шаблон для ИС. Суть следующая: слайдер, каджый слайд-это город(группа ИС). В каждом городе превьюшки видео (элементов ИС). Этих превьюшек очень много в каждом городе(300-400), из-за чего все это дело начинает безбожно тормозить. Надо сделать ограничение по выводу в каждом городе, например, по  24 штуки, то есть в каждом городе должна быть своя постраничная навигация. Как это сделать? XSL ниже
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   
   <xsl:template match="/informationsystem">
      <div class="u-container-style u-layout-cell u-size-45 u-layout-cell-1">
         <div class="u-container-layout u-container-layout-1">
            <div id="carousel-50bb" data-interval="3500" data-u-ride="carousel"
               class="u-carousel u-carousel-duration-1750 u-expanded-width u-slider u-slider-1">
               <ol class="u-absolute-hcenter u-carousel-indicators u-hidden u-carousel-indicators-1">
                  <li data-u-target="#carousel-50bb" class="u-active u-grey-30" data-u-slide-to="0"></li>
                  <li data-u-target="#carousel-50bb" class="u-grey-30" data-u-slide-to="1"></li>
                  <li data-u-target="#carousel-50bb" class="u-grey-30" data-u-slide-to="2"></li>
               </ol>
               <div class="u-carousel-inner" role="listbox">
                  <!-- ВЫВОД ГРУПП ИС -->
                  <xsl:apply-templates select=".//informationsystem_group" mode="groups"/>
               </div>
               <a class="u-carousel-control u-carousel-control-prev u-icon-circle u-text-hover-palette-1-base u-text-palette-1-base u-carousel-control-1"
                  href="#carousel-50bb" role="button" data-u-slide="prev">
                  <span aria-hidden="true">
                     <svg viewBox="0 0 451.847 451.847">
                        <path d="M97.141,225.92c0-8.095,3.091-16.192,9.259-22.366L300.689,9.27c12.359-12.359,32.397-12.359,44.751,0
                           c12.354,12.354,12.354,32.388,0,44.748L173.525,225.92l171.903,171.909c12.354,12.354,12.354,32.391,0,44.744
                        c-12.354,12.365-32.386,12.365-44.745,0l-194.29-194.281C100.226,242.115,97.141,234.018,97.141,225.92z"></path>
                     </svg>
                  </span>
                  <span class="sr-only">
                     <svg viewBox="0 0 451.847 451.847">
                        <path d="M97.141,225.92c0-8.095,3.091-16.192,9.259-22.366L300.689,9.27c12.359-12.359,32.397-12.359,44.751,0
                           c12.354,12.354,12.354,32.388,0,44.748L173.525,225.92l171.903,171.909c12.354,12.354,12.354,32.391,0,44.744
                        c-12.354,12.365-32.386,12.365-44.745,0l-194.29-194.281C100.226,242.115,97.141,234.018,97.141,225.92z"></path>
                     </svg>
                  </span>
               </a>
               <a class="u-carousel-control u-carousel-control-next u-icon-circle u-text-hover-palette-1-base u-text-palette-1-base u-carousel-control-2"
                  href="#carousel-50bb" role="button" data-u-slide="next">
                  <span aria-hidden="true">
                     <svg viewBox="0 0 451.846 451.847">
                        <path d="M345.441,248.292L151.154,442.573c-12.359,12.365-32.397,12.365-44.75,0c-12.354-12.354-12.354-32.391,0-44.744
                           L278.318,225.92L106.409,54.017c-12.354-12.359-12.354-32.394,0-44.748c12.354-12.359,32.391-12.359,44.75,0l194.287,194.284
                        c6.177,6.18,9.262,14.271,9.262,22.366C354.708,234.018,351.617,242.115,345.441,248.292z"></path>
                     </svg>
                  </span>
                  <span class="sr-only">
                     <svg viewBox="0 0 451.846 451.847">
                        <path d="M345.441,248.292L151.154,442.573c-12.359,12.365-32.397,12.365-44.75,0c-12.354-12.354-12.354-32.391,0-44.744
                           L278.318,225.92L106.409,54.017c-12.354-12.359-12.354-32.394,0-44.748c12.354-12.359,32.391-12.359,44.75,0l194.287,194.284
                        c6.177,6.18,9.262,14.271,9.262,22.366C354.708,234.018,351.617,242.115,345.441,248.292z"></path>
                     </svg>
                  </span>
               </a>
            </div>
         </div>
      </div>
   </xsl:template>
   <!-- ШАБЛОН ВЫВОДА ГРУПП ИНФОРМАЦИОННОГО ЭЛЕМЕНТА -->
   <xsl:template match="informationsystem_group" mode="groups">      
      <div class="u-carousel-item u-container-style u-expanded-width u-slide">
         <xsl:if test="position() = 1">
            <xsl:attribute name="class">u-active u-carousel-item u-container-style u-expanded-width u-slide</xsl:attribute>
         </xsl:if>
         <div class="u-container-layout u-container-layout-2">
            <div class="u-expanded-width u-tab-links-align-justify u-tabs u-tabs-1">
               <ul class="u-border-1 u-border-grey-25 u-tab-list u-unstyled"
                  role="tablist">
                  <li class="u-tab-item" role="presentation">
                     <a class="active u-active-white u-border-2 u-border-active-palette-1-base u-border-hover-palette-1-base u-border-no-left u-border-no-right u-border-no-top u-border-palette-1-dark-1 u-button-style u-tab-link u-text-active-palette-1-base u-text-hover-palette-1-base u-text-palette-1-dark-1 u-tab-link-1" id="link-tab-ed9f" href="#tab-ed9f" role="tab" aria-controls="tab-ed9f" aria-selected="true">
                        <xsl:value-of disable-output-escaping="yes" select="name"/>
                     </a>
                  </li>
               </ul>
               <div class="u-tab-content">
                  <div class="u-align-left u-container-style u-tab-active u-tab-pane u-white"
                     id="tab-ed9f" role="tabpanel" aria-labelledby="link-tab-ed9f">
                     <div class="u-container-layout u-container-layout-3">
                        <div class="u-align-left u-expanded-width u-layout-grid u-list u-list-1">
                           <div class="u-repeater u-repeater-1">
                              <xsl:variable name="group_id" select="@id"/>
                           <div>
                           <!-- ЗДЕСЬ ДОЛЖНА БЫТЬ ПОСТРАНИЧНАЯ НАВИГАЦИЯ -->
                           </div>
                              <!-- ВЫВОД ИНФОРМАЦИОННОГО ЭЛЕМЕНТА -->
                              <xsl:apply-templates select="/informationsystem/informationsystem_item[informationsystem_group_id = $group_id]" />
                           </div>                  
                           <xsl:value-of disable-output-escaping="yes" select="description"/>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </xsl:template>
   <!-- ШАБЛОН ВЫВОДА ИНФОРМАЦИОННОГО ЭЛЕМЕНТА -->
   <xsl:template match="informationsystem_item">
      <!-- -->
      <div class="u-container-style u-effect-hover-zoom u-list-item u-repeater-item u-shading u-shape-rectangle"
         data-image-width="1280" data-image-height="841">
         <div class="u-background-effect u-expanded">
            <div class="u-background-effect-image u-expanded u-image u-shading u-image-1" style="background-image: linear-gradient(0deg, rgb(35 35 35 / 90%),rgb(35 35 35 / 70%),rgb(35 35 35 / 30%),rgb(35 35 35 /5%), rgb(35 35 35 / 0%)), url({dir}{image_small})"></div>
         </div>
         <div class="u-container-layout u-similar-container u-valign-bottom u-container-layout-4">
            <a href="{url}">
               <h5 class="u-text u-text-default u-text-1">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </h5>
            </a>
         </div>
      </div>
   </xsl:template>
   
</xsl:stylesheet>
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
Неужели, это невозможно? Или никто не знает ответа на вопрос?
Может можно как-то прикрутить такую фичу в  ТДС, например? Помогите, пожалуйста
Модератор
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
Выключите вывод всех элементов ->limit(0), отдельно выберите по N нужных элементов и добавьте их контроллеру, чтобы у вас были только нужные данные, а не 1000+ элементов.
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
hostcms, А можно поконкретнее, как  Цитата:
выберите по N нужных элементов и добавьте их контроллеру,
вот это сделать?
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
Как вариант можете использовать такой хук в ТДС:

class Informationsystem_Group_Observer
{
   static public function onBeforeGetXml($object, $args, $options)
   {
    
      $oInformationsystem_Items = $object->Informationsystem_Items;
      
      $oInformationsystem_Items
         ->queryBuilder()
         ->limit(4);
      
      $aInformationsystem_Items = $oInformationsystem_Items->findAll();
      
      $object->addEntities($aInformationsystem_Items);
      
   }
}


Core_Event::attach('informationsystem_group.onBeforeGetXml', array('Informationsystem_Group_Observer', 'onBeforeGetXml'));


При использовании такого хука изменится структура xml и элементы ИС будут лежать внутри Informationsystem_Group
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
llirik, я правильно понимаю, этот код надо положить в настройки ТДС? Или в modules/informationsystem/item/observer.php? Куда именно, подскажите, пожалуйста
И еще интересует вопрос, как его потом применять?
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
Скопировать в любую часть ТДС до выполнения ->show().  Применяется автоматически.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
llirik, спасибо, сделала, как Вы сказали. Теперь ставлю Число элементов на странице 9 в настройках ИС. Выводится 9 только в первой группе. в остальных - по нулям
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
В настройках ИС должно быть 0 указано, как и говорилось раннее.  Количество выводимых из каждой группы указывается в строке   ->limit(4);
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Вывод элементов ИС по n штук в группе +постраничная навигация
llirik, теперь вообще ничего не выводит, только группы, элементов в них нет
UPD прошу прощения, про xsl забыла=)
Авторизация