UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 13 Декабря 2013, 17:40:44

Название: Пагинация при выводе данных через usel
Отправлено: Axiomateria от 13 Декабря 2013, 17:40:44
Здравствуйте!

Через вызов <xsl:apply-templates select="document('usel://ConfHotels/')/udata" mode="table-view-groups-conf" />  на странице с типом данных "Страница контента" (назовём её условно "Мажорные отели") выводятся превью объектов каталога по таком уже шаблону, что и превью этих же объектов на странице раздела каталога с типом данных "Раздел каталога".
На странице "Мажорные отели" выводятся превью объектов через usel все сразу, то есть полное количество (102 штуки) с длинной прокруткой на одной странице.
Вот этот самый файл:
<?xml version="1.0" encoding="utf-8"?>
<selection>
   <target expected-result="pages">
 <type module="catalog" method="object" />
 <type id="145"/>
   </target>
   <property name="detailed_description_hotel">
   </property>
   <extended>
      <properties>h1,title-hotel-photo,stars,location,detailed_description_hotel,price_special_offers</properties>
   </extended>
<sort>rand()</sort>
<limit page="0">{limit}</limit>    
</selection>
В настройках модуля "Каталог" указано значение "10" для количества выводимых объектов на одной странице и в разделе каталога на сайте пагинация выводиться успешно.
Что сделать надо, что бы и на странице, где объекты каталога выводятся через usel тоже выводилась пагинация ?
 
Название: Re:Пагинация при выводе данных через usel
Отправлено: NOIRMAN от 13 Декабря 2013, 18:56:01
<limit page="0">{limit}</limit>
Вот тут вот задается все по пагинации в самом запросе. Соответственно параметр нужно вызывать в запросе. Ну и прикрутить путешествие по нумерации страниц.
http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/#limit
Название: Re:Пагинация при выводе данных через usel
Отправлено: Axiomateria от 13 Декабря 2013, 19:47:16
<limit page="0">{limit}</limit>
http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/#limit
Конечно я читал инструкцию и вот это место в ней даже пробовал:
(цитирую)
Именованные параметры
Именованные параметры передаются как параметры запроса наподобие GET-параметров:
usel://someSelection/?limit=10&page=3
Для подстановки их в шаблон выборки нужно писать {limit}, {page}. Например:
<limit page="{page}">{limit}</limit>
(конец цитаты)

Но вот не задача - на практике если применять такой вариант вызова, как:
<xsl:apply-templates select="document('usel://ConfHotels/?limit=10&page=3')/udata" mode="table-view-groups-conf" />
- то сайт сразу ложиться...
А такой вариант вызова, как
<xsl:apply-templates select="document('usel://ConfHotels/10/?limit=10')/udata" mode="table-view-groups-conf" />
не срабатывает - пагинации нет, но хотя уже срабатывает ограничение, на вывод десяти превью объектов...

И снова здравствуйте!   :)
Название: Re:Пагинация при выводе данных через usel
Отправлено: NOIRMAN от 14 Декабря 2013, 15:00:10
1. Запрос в чистом виде usel://ConfHotels/?limit=10&page=3 выдает результаты ?
Еще мне очень не нравится (самому то еще на практике не приходилось использовать такого вида запросы) использование "&" в чистом виде в коде шаблона. Может попробовать "&amp;" ?
2. Для usel://ConfHotels/10/?limit=10 - что в тексте самого usel отвечает за параметр {1}? В верхнем примере не увидел этого параметра.
Название: Re:Пагинация при выводе данных через usel
Отправлено: Axiomateria от 17 Декабря 2013, 16:32:20
1. Запрос в чистом виде usel://ConfHotels/?limit=10&page=3 выдает результаты ?
Может попробовать "&amp;" ?
Если вопрос про вывод через адресную строку, то да (если включаем usel.http.allow = "1") - выводиться xml-документ, то есть все 10 объектов, как и установлено, НО без пагинации...

Может попробовать "&amp;" ?
Попробовал <xsl:apply-templates select="document('usel://ConfHotels/?limit=10&amp;page=3')/udata" mode="table-view-groups-conf" />
Но нет пагианции опять-таки...

Для usel://ConfHotels/10/?limit=10 - что в тексте самого usel отвечает за параметр {1}? В верхнем примере не увидел этого параметра.
Не очень понял про какой пример... Уточните, пожалуйста, что вы хотели сказать?

Вот сейчас на странице выводятся 10 объектов:
http://www.glavtouroperator.ru/main/services/conference_halls.html
по выводу:
<xsl:apply-templates select="document('usel://ConfHotels/?limit=10&amp;page=3')/udata" mode="table-view-groups-conf" />
Есть такое подозрение, что пагинация не работает из-за не настроенного вызова в шаблоне
    <xsl:template match="udata[@method = 'getObjectsList'][total]" mode="table-view-groups-conf-conf">      
         <xsl:apply-templates select="lines/item" mode="table-view-groups-conf" />
         <xsl:apply-templates select="total" />                      
    </xsl:template>

И именно по этому циферка "102" выводится на странице (справа под табло с бронированием) - это как раз значение общего количества объектов.
Название: Re:Пагинация при выводе данных через usel
Отправлено: NOIRMAN от 17 Декабря 2013, 22:18:50
<xsl:template match="udata[@method = 'getObjectsList'][total]" mode="table-view-groups-conf-conf">     

Вот тут вот, вроде как, идет обработка макроса getObjectsList. И не имеет никакого отношения к Вашему usel. Попробуйте изменить значение @method на Ваш ConfHotels
Название: Re:Пагинация при выводе данных через usel
Отправлено: Axiomateria от 18 Декабря 2013, 14:16:39
<xsl:template match="udata[@method = 'getObjectsList'][total]" mode="table-view-groups-conf-conf">      
Вот тут вот, вроде как, идет обработка макроса getObjectsList. И не имеет никакого отношения к Вашему usel. Попробуйте изменить значение @method на Ваш ConfHotels
Вы имеете ввиду такой вариант:
    <xsl:template match="udata[@method = 'usel://ConfHotels/'][total]" mode="table-view-groups-conf">      
         <xsl:apply-templates select="lines/item" mode="table-view-groups-conf" />
         <xsl:apply-templates select="total" />                      
    </xsl:template>

Но он не работает, если я правильно всё понял, то есть по прежнему ситуация такая же - пагинация не появилась...
Название: Re:Пагинация при выводе данных через usel
Отправлено: Axiomateria от 18 Декабря 2013, 14:26:28
Попробовал даже ещё и вот так:
	
<xsl:template match="/result[@method = 'category' and page/@type-id=145]">
        <xsl:apply-templates select="document(concat('usel://ConfHotels/', page/@id, '////0/?extProps=h1,title-hotel-photo,stars,location,detailed_description_hotel,price_special_offers'))/udata" mode="table-view-groups-conf" />
</xsl:template>
    <xsl:template match="udata[@method = 'ConfHotels'][total]" mode="table-view-groups-conf">     
         <xsl:apply-templates select="lines/item" mode="table-view-groups-conf" />
         <xsl:apply-templates select="total" />                       
    </xsl:template>
Но при таком раскладе вообще объекты не выводятся... А ведь как-то ж просто оно всё должно здесь решаться...
Название: Re:Пагинация при выводе данных через usel
Отправлено: NOIRMAN от 18 Декабря 2013, 14:38:32
Последний пример больше похож на правду. С массой оговорок ))

1. usel запрос скорее всего собирает для Вас page. Вы же пытаетесь вызвать lines/item.
2. Что такое select='total' для меня лично остается загадкой. В лучшем случае оно выведет общее количество записей (120 вроде в Вашем случае).
3. Где запрос макроса  %system numpages()%, который собственно и отвечает за пагинацию объектов?

http://dev.docs.umi-cms.ru/prakticheskie_primery/postranichnyj_vyvod_pejdzhing_stredstvami_xslt-shablonizatora/verstka_shablonov/ очень подробно тут про пагинацию.

P.S. личное )) Смотрю в скайпе Вы не частый гость ;)
Название: Re:Пагинация при выводе данных через usel
Отправлено: Axiomateria от 18 Декабря 2013, 23:48:27
1. usel запрос скорее всего собирает для Вас page. Вы же пытаетесь вызвать lines/item.
Да, действительно - исправил эту часть и циферка "102" (общее количество объектов) перестала выводится..
    <xsl:template match="udata" mode="table-view-groups-conf">      
        <xsl:apply-templates select="page" mode="table-view-groups-conf" />
        <xsl:apply-templates select="total" />                   
    </xsl:template>
Но проблема думаю в другом месте - пагинация не выводится, как я думаю с самого начала, из-за типа страницы "Страница контента", так как например в разделе каталога с типом данных "Раздел каталога"
она (пагинация) выводится успешно: http://glavtouroperator.ru/main/services/booking_of_hotels/hotels_spb.html
2. Что такое select='total' для меня лично остается загадкой. В лучшем случае оно выведет общее количество записей...
Как показывает "метод научного тыка" этот самый  select='total' отвечает не только за вывод значения общего количества объектов каталога, но и за подключение пагинации (проверено в разделе каталога с типом данных страницы "Раздел каталога")., то есть отвечает за вывод макроса %system numpages()%..