UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: tkalyugina от 02 Августа 2016, 09:16:34

Название: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 02 Августа 2016, 09:16:34
 >:(Подскажите пож-ста как это сделать?
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 02 Августа 2016, 11:14:11
Двух блогов - это видимо двух разделов, содержащих разные записи типа пост блога?

Тут либо http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/proizvolnye_vyborki/selector/ либо http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/

И в том и в другом случае можно указать тип. И в том и в другом случае можно указать родителя.
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 02 Августа 2016, 15:48:54
есть стр контента, на которую надо выбросить посты двух блогов в хронологическом порядке.
И есть другая стр контента на которую надо выкладывать все посты всех оставшихся блогов.

через usel  сделала, но как прикрутить постраничную навигацию?
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 02 Августа 2016, 16:00:55
http://umicms.me/paginacija-i-usel/
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 03 Августа 2016, 11:08:17
<?xml version="1.0" encoding="utf-8"?>
         <selection>
         <target expected-result="pages count">
         <type module="blogs20" method="post" />            
         <category depth="{1}">{2}</category>
      <category depth="{1}">{3}</category>
      <category depth="{1}">{4}</category>
      <category depth="{1}">{5}</category>
      <category depth="{1}">{6}</category>
      <category depth="{1}">{7}</category>
   </target>
<extended>
    <properties>content,publish_time,name,post_link,cut,anons_pic,problem,kolichestvo_prosmotrov</properties>   
</extended>
   <limit page="0">{8}</limit>   
</selection>


странно, что не правильно?  при попытке перейти на вторую, третью  страницу..../?p=1  отображаются только первые десять публикаций и если xml посмотреть, то per_page нет
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 03 Августа 2016, 13:14:00
per_page из статьи - это какая-то переменная. Если вы её не создали - её нет.
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 03 Августа 2016, 14:08:07
да это я поняла, просто думала, что в xml тоже можно увидеть, ведь total формируется..
Не в этом дело, сам навигатор формируется... но при попытке перейти на вторую, третью  страницу..../?p=1  отображаются только первые десять публикаций на всех и на /?p=1 и на /?p=2  и т. д.
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 03 Августа 2016, 14:25:30
Ну так у вас и написано <limit page="0">{8}</limit>   То есть брать с нулевого элемента {8} элементов. Хотите не с нулевого - укажите с какого хотите
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 03 Августа 2016, 15:01:27
<limit page="{p}">{8}</limit>

а как сделать, чтобы по нажатию на ссылку "пагинатора"  вместо {p} подставлялось нужное
выборку делаю так:
<xsl:for-each  select="document('usel://posts_blogUselCount/1/6137/6165/6179/6193///3/?p=0')/udata/page">
      <xsl:value-of select="@id" />
</xsl:foreach>

<xsl:variable name='total'  select="document('usel://posts_blogUselCount/1/6137/6165/6179/6193///')//total"/>            
<xsl:apply-templates select="document(concat('udata://system/numpages/', $total, '/', 3))" />   
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 03 Августа 2016, 15:15:44
{p} - берет параметр p из get-запроса (то есть ?p=0 подставит 0 в <limit page="0">{8}</limit>, а ?p=1 подставит 1 в <limit page="1">{8}</limit>)
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 03 Августа 2016, 15:17:12
Я бы спросил - а зачем такие извращения?

Вы делаете 2 запроса вместо одного. Зачем?
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 03 Августа 2016, 15:26:42
 ???  я и спрашиваю как это сделать... простите учимся только...какие два вместо одного?

и все равно ... почему-то НЕ БЕРЕТ
Цитировать
из get-запроса (то есть ?p=0 подставит 0 в <limit page="0">{8}</limit>, а ?p=1 подставит 1 в <limit page="1">{8}</limit>)
сам линк правильный, нажимаешь ... в адресной строке все ок, ?p=1, а стр-ы  начиная с нулевой
где еще что порыть... :'(
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: aghigay от 03 Августа 2016, 16:03:50
Вот это извращение
<xsl:for-each select="document('usel://posts_blogUselCount/1/6137/6165/6179/6193///3/?p=0')/udata/page">
      <xsl:value-of select="@id" />
</xsl:foreach>

<xsl:variable name='total' select="document('usel://posts_blogUselCount/1/6137/6165/6179/6193///')//total"/>           
<xsl:apply-templates select="document(concat('udata://system/numpages/', $total, '/', 3))" />   
и очевидно, что никто ничего не берет.

1. вы дважды обращаетесь к USEL по адресу usel://posts_blogUselCount/1/6137/6165/6179/6193///3/?p=0 и usel://posts_blogUselCount/1/6137/6165/6179/6193///
Это 2 раза выполнения запроса
Все это вместо одного обращения и закидывания результата в переменную
<xsl:variable name='usel_res' select="document('usel://posts_blogUselCount/1/6137/6165/6179/6193///')"/>            
и обращения в дальнейшем к $usel_res
2. вы вызываете usel posts_blogUselCount, который в качестве параметра номер 8 принимает количество отображаемых на странице элементов (<limit page="0">{8}</limit>)
При этом 8-1 параметр вы не передаете
3. В качестве генерации numpages вы используете конкретное число 3 - то есть (предположительно) должно быть 3 элемента на странице. Видимо этот параметр и должен фигурировать в предыдущих всех выражениях?

Итого, ваш код должен был бы выглядеть примерно так:
<xsl:variable name='usel_per_page' select="3"/>            
<xsl:variable name='usel_res' select="document(concat('usel://posts_blogUselCount/1/6137/6165/6179/6193///', $usel_per_page, '/?p=', $p))"/>           

<xsl:for-each select="$usel_res/udata/page">
      <xsl:value-of select="@id" />
</xsl:foreach>

<xsl:apply-templates select="document(concat('udata://system/numpages/', $usel_res//total, '/', $usel_per_page))" />   
Название: Re: umi как выбрать посты только двух блогов в хронологическом порядке
Отправлено: tkalyugina от 03 Августа 2016, 17:03:46
Все ок, спасибо большое за помощь!