Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 7330
Последний ответ 06 Июня 2014, 12:06:35
от admin
Многоуровневое меню PHP + Модуль меню

Автор StanlyBSVРаздел Шаблоны PHP

Ответов: 0
Просмотров: 2471
Последний ответ 10 Августа 2017, 20:42:18
от StanlyBSV
Модуль "Пользователи" и Loginza

Автор chiken_bobРаздел Разработка модулей

Ответов: 11
Просмотров: 9248
Последний ответ 10 Октября 2011, 15:33:48
от admin
Модуль "Файловый менеджер"

Автор aizulРаздел Настройка системы и модулей

Ответов: 3
Просмотров: 3754
Последний ответ 24 Апреля 2012, 21:39:01
от admin
Модуль "Отложенные товары" для UMI.CMS

Автор e.ioffeРаздел Разработка модулей

Ответов: 5
Просмотров: 5636
Последний ответ 09 Мая 2014, 00:41:54
от e.ioffe

0 Пользователей и 1 Гость просматривают эту тему.

*

kinki

  • *
  • 4
  • +0/-0
    • Просмотр профиля
Модуль numpages.xsl
« : 30 Октября 2013, 11:50:45 »
Всем привет!
В новостях есть нумерация страниц 1 2 3 и т.д
Мне нужно добавить кнопки "В начало" и "В конец".
Нашла в документации такое
<xsl:template match="udata[not(tobegin_link) and toend_link]" mode="paging.words">
    <div class="paging-words">
      <a>«&nbsp;В начало</a>
      &nbsp;   
      <a>«&nbsp;Предыдущая</a>   
    &nbsp;&nbsp;|&nbsp;&nbsp;
      <a class="active" href="{tonext_link}">Следующая&nbsp;»</a>
    &nbsp;
    <a class="active" href="{toend_link}">В&nbsp;конец&nbsp;»</a>
    </div>
</xsl:template>

<xsl:template match="udata[tobegin_link and toend_link]" mode="paging.words">
    <div class="paging-words">
      <a class="active" href="{tobegin_link}">«&nbsp;В начало</a>
      &nbsp;
      <a class="active" href="{toprev_link}">«&nbsp;Предыдущая</a>
    &nbsp;&nbsp;|&nbsp;&nbsp;
      <a class="active" href="{tonext_link}">Следующая&nbsp;»</a>
      &nbsp;
    <a class="active" href="{toend_link}">В&nbsp;конец&nbsp;»</a>
    </div>
</xsl:template>
 
<xsl:template match="udata[tobegin_link and not(toend_link)]" mode="paging.words">
    <div class="paging-words">
      <a class="active" href="{tobegin_link}">«&nbsp;В начало</a>
      &nbsp;
      <a class="active" href="{toprev_link}">«&nbsp;Предыдущая</a>
    &nbsp;&nbsp;|&nbsp;&nbsp;
      <a>Следующая&nbsp;»</a>
      &nbsp;
    <a>В&nbsp;конец&nbsp;»</a>
    </div>
</xsl:template>

Но в своем шаблоне применить не получается(
Мой Модуль numpages.xsl


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="total" />
        <xsl:template match="total[. &gt; ../per_page]">
                <xsl:apply-templates select="document(concat('udata://system/numpages/', ., '/', ../per_page))" />
        </xsl:template>

        <xsl:template match="udata[@method = 'numpages']" />
        <xsl:template match="udata[@method = 'numpages'][count(items)]">
                <div class="paging">
                        <xsl:apply-templates select="items/item" mode="numpages" />
                         <xsl:templates select="items/item" mode="paging" />
                </div>
        </xsl:template>

        <xsl:template match="item" mode="numpages">
                <a href="{@link}">
                        <xsl:value-of select="." />
                </a>
        </xsl:template>

        <xsl:template match="item[@is-active = '1']" mode="numpages">
                <a href="{@link}" class="active"><xsl:value-of select="." /></a>
        </xsl:template>

        <xsl:template match="toprev_link">
                <a class="prev" href="{.}">
                        <xsl:text>&previous-page;</xsl:text>
                </a>
        </xsl:template>

        <xsl:template match="tonext_link">
                <span>
                        <xsl:text>|</xsl:text>
                </span>
                <a class="next" href="{.}">
                        <xsl:text>&next-page;</xsl:text>
                </a>
        </xsl:template>

<xsl:template match="udata[not(tobegin_link) and toend_link]" mode="paging">
    <a class="active" href="{toend_link}">В&nbsp;конец&nbsp;»</a>
</xsl:template>
    <xsl:template match="item" mode="slider">
                <xsl:apply-templates select="preceding-sibling::item[1]" mode="slider_back" />
                <xsl:apply-templates select="following-sibling::item[1]" mode="slider_next" />
        </xsl:template>

        <xsl:template match="item" mode="slider_back">
                <a href="{@link}" title="&previous-page;" class="back" />
        </xsl:template>

        <xsl:template match="item" mode="slider_next">
                <a href="{@link}" title="&next-page;" class="next" />
        </xsl:template>

</xsl:stylesheet>


*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #1 : 30 Октября 2013, 22:21:19 »
у вас уже все есть (хотя некоторые шаблоны немного смущает своей непонятнойстью или возможно избыточностью). Вам надо в шаблон

<xsl:template match="udata[@method = 'numpages'][count(items)]">
                <div class="paging">
                        <xsl:apply-templates select="items/item" mode="numpages" />
                         <xsl:templates select="items/item" mode="paging" />
                </div>
        </xsl:template>

вставить вызовы <xsl:apply-templates select="tobegin_link"  />
и <xsl:apply-templates select="toend_link" />

и добавить шаблоны для этих вызовов
        <xsl:template match="tobegin_link">
                <a class="begin" href="{.}">
                        <xsl:text>В начало</xsl:text>
                </a>
        </xsl:template>
        <xsl:template match="toend_link">
                <a class="end" href="{.}">
                        <xsl:text>В конец</xsl:text>
                </a>
        </xsl:template>

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #2 : 10 Ноября 2014, 23:49:19 »
И вот ещё такой вопрос: возможно ли вывести количество объектов каталога в разделе с пагинацией в этом же макросе или это по другому как-то надо выводить ?
Допустим, что страниц с объектами в разделе = 5 и общее количество объектов на всех этих пяти страницах в сумме = 45

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #3 : 11 Ноября 2014, 00:27:36 »
Обратите внимание на переменную total, в частности в результатах макроса getObjectsList()
« Последнее редактирование: 11 Ноября 2014, 00:51:04 от admin »

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #4 : 11 Ноября 2014, 01:02:46 »
Обратите внимание на переменную total, в частности в результатах макроса getObjectsList()
Это конечно да.

Я почему спрашивал про вставку значения total именно в этот файл numpages.xsl - подводя к такому вопросу:
а возможно ли, по мере перехода по страницам пользователем страниц показывать ему оставшееся количество объектов на ещё не просмотренных страницах ?
То есть по идее на первой странице ему показывается общее количество объектов = 45, а на второй уже = 35 ?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #5 : 11 Ноября 2014, 10:23:07 »
Обратите внимание на переменную total, в частности в результатах макроса getObjectsList()

и вот ещё такой момент - количество объектов в разделе выводится только в одном уровне вложенности, то есть Раздел/Объекты.
А что делать если уровни вложенности Раздел/Подраздел/Подподраздел/Объекты ?
Если мы находимся, к примеру, на верхнем уровне "Раздел", то выводится "0" и только, если мы погрузимся на уровень
"Подподраздел" то вот только тогда можно увидеть количество объектов вместо нуля.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #6 : 11 Ноября 2014, 11:57:58 »
обратите внимание на параметр i_need_deep

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #7 : 11 Ноября 2014, 12:32:11 »
обратите внимание на параметр i_need_deep

Вот вызов, в котором пятый по счёту параметр i_need_deep = 2
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', $cat_id, '//8//2/'))/udata" />

но если я его изменяю, например на = 0, то превью пропадают их раздела, при этом ноль как показатель количества объектов таки и остаётся нулём...

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #8 : 11 Ноября 2014, 12:50:31 »
но если я его изменяю, например на = 0, то превью пропадают их раздела

Превью чего? товаров?

Вот вызов, в котором пятый по счёту параметр i_need_deep = 2
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', $cat_id, '//8//2/'))/udata" />

Возможно дело в том, что вы передаете параметр  $cat_id первым, а по документации параметр с url или id интересующего вас раздела идет вторым. Скорее всего, этот ошибочный вызов является  копией из файлов demodizzy. Там есть такой момент, но в определенных обстоятельствах он ни на что не влияет, поэтому не сразу и заметишь.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #9 : 11 Ноября 2014, 13:13:20 »
но если я его изменяю, например на = 0, то превью пропадают их раздела
Превью чего? товаров?
Да, имелось ввиду превью товаров (объектов каталога).
Возможно дело в том, что вы передаете параметр  $cat_id первым, а по документации параметр с url или id интересующего вас раздела идет вторым. Скорее всего, этот ошибочный вызов является  копией из файлов demodizzy. Там есть такой момент, но в определенных обстоятельствах он ни на что не влияет, поэтому не сразу и заметишь.

переменная <xsl:variable name="cat_id" select="page/@id" /> если и не нужна, то тогда вызывая без неё  всё равно получается так же с нулём:
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//8//2/'))/udata"/>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #10 : 11 Ноября 2014, 13:27:46 »
попробуйте увечить цифру, только что проверил у себя на локале, все выводится, в том числе и total

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #11 : 11 Ноября 2014, 13:40:06 »
попробуйте увечить цифру, только что проверил у себя на локале, все выводится, в том числе и total

Увеличил в десять раз и в целом оно выглядит так:

    <xsl:template match="result[@method = 'category']">   
        <xsl:apply-templates select=".//property[@name = 'descr']" mode="seo_content" />
        <xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//8//20/'))/udata" mode="layout_0" />
        <xsl:apply-templates select="document('udata://catalog/getObjectsList/')/udata/total" mode="total_items" />
    </xsl:template>

    <xsl:template match="udata/total" mode="total_items">
        <b>
            <xsl:text>Всего:</xsl:text>
            <xsl:value-of select="." />
        </b>
    </xsl:template>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Модуль numpages.xsl
« Ответ #12 : 11 Ноября 2014, 13:42:00 »
Увеличил в десять раз и в целом оно выглядит так:

И, я так понимаю, результат тот же?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Модуль numpages.xsl
« Ответ #13 : 11 Ноября 2014, 14:08:45 »
Увеличил в десять раз и в целом оно выглядит так:

И, я так понимаю, результат тот же?

Да. тот же, то есть выводится значение total = 0 вместо количества = 45