UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: niakriss от 21 Сентября 2012, 11:42:17

Название: количество элекментов
Отправлено: niakriss от 21 Сентября 2012, 11:42:17
Здравствуйте. Возникла такая проблема... надо посчитать сколько дочерних страниц имеет страница. И при их количестве меньше 4 вывести код №1, в ином случае код №2...
так вот.. как составить условие того, что страниц в узле меньше 4?
Название: Re:количество элекментов
Отправлено: BaceH от 21 Сентября 2012, 16:42:47
count(//item) количество узлов
<xsl:choose>
          <xsl:when test="count(//item) &gt; 4">
            <xsl:text>код №1</xsl:text>
          </xsl:when>
          <xsl:otherwise>
             <xsl:text>код №2</xsl:text>
          </xsl:otherwise>
     </xsl:choose>
Название: Re:количество элекментов
Отправлено: niakriss от 21 Сентября 2012, 20:41:28
ну то что каунт итем я поняла... а как указать на определенную страницу... мне надо чтоб на главной выводилось видео, только если видеороликов больше 4х...
Название: Re:количество элекментов
Отправлено: BaceH от 26 Сентября 2012, 17:16:52
опишите подробно задачу. какая структура хранения этих видеороликов?
Название: Re:количество элекментов
Отправлено: admin от 29 Сентября 2012, 00:42:41
можете воспользоваться возможностями usel запросов

например:
создать файл /usels/test.xml , с  содержимым
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages count">
<category depth="1">{1}</category>
</target>

<!-- <limit page="0">5</limit> -->
<!-- можно раскомментировать строчку выше и задать сколько страниц вам нужно вывести -->
</selection>

и вызвав данный usel запрос http://ваш_сайт/usel/test/9
, где 9 это id страницы внутри которой будет производится выборка дочерних элементов.

в итоге вы получите xml

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="usel" method="test" generation-time="0.013000">
  <page id="25" parentId="9" link="/shop/dvd_tehnika/dvd_pleery/akai_apa206c/" is-active="1" object-id="429" type-id="117" update-time="1336197540" alt-name="akai_apa206c" xlink:href="upage://25">
    <basetype id="49" module="catalog" method="object">Объекты каталога</basetype>
    <name>Akai AP-A206C</name>
  </page>
  <page id="8" parentId="9" link="/shop/dvd_tehnika/dvd_pleery/sony_ps6750/" is-active="1" object-id="392" type-id="117" update-time="1329782003" alt-name="sony_ps6750" xlink:href="upage://8">
    <basetype id="49" module="catalog" method="object">Объекты каталога</basetype>

    <name>Sony PS-6750</name>
  </page>
  <page id="28" parentId="9" link="/shop/dvd_tehnika/dvd_pleery/toshiba_srq660/" is-active="1" object-id="437" type-id="117" update-time="1329782012" alt-name="toshiba_srq660" xlink:href="upage://28">
    <basetype id="49" module="catalog" method="object">Объекты каталога</basetype>
    <name>Toshiba SR-Q660</name>
  </page>
  <total>3</total>

</udata>


обрабатывая который вы сможете учитывая тег total вывести или не  вывести результат usel запроса

с вызовом и написанием шаблонов для usel запроса справитесь?
Название: Re:количество элекментов
Отправлено: niakriss от 08 Октября 2012, 10:17:12
сделала через макрос.. посчитала количество детей с помощью getChildsCount()