Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Как вывести itemprop="position" content="" в XSLT?

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

Ответов: 0
Просмотров: 1565
Последний ответ 15 Ноября 2018, 09:30:06
от makarov2979
Как вывести для разных доменов разных адресатов

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

Ответов: 14
Просмотров: 3961
Последний ответ 17 Февраля 2017, 20:20:12
от Sumrakrnd
Вывести цену для группы "элитных" пользователей

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

Ответов: 3
Просмотров: 3128
Последний ответ 12 Ноября 2013, 23:27:00
от Seweryss
Вывести сумму заказа на странице "Заказ поступил в обработку"

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

Ответов: 2
Просмотров: 3797
Последний ответ 07 Ноября 2014, 23:46:49
от Axiomateria
Как вывести общее количество объектов в разделе, у которого есть подразделы

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

Ответов: 4
Просмотров: 3301
Последний ответ 06 Марта 2014, 00:56:05
от ilyar

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

*

aizul

  • **
  • 94
  • +0/-0
    • Просмотр профиля
Подскажите, пожалуйста, куда что добавить. Вот шаблон вывода самой новости:
	<xsl:template match="udata[@module = 'news' and @method = 'lastlist']">
<xsl:apply-templates select="items" mode="news_page">
<xsl:with-param name="list-class">
<xsl:text>news-lastlist</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<!-- список новостей -->
<xsl:template match="udata[@method = 'lastlist']//item" mode="news_page">
<xsl:param name="item-info" select="document(concat('upage://', @id))" />
<xsl:variable name="date" select="document(concat('udata://system/convertDate/', @publish_time, '/(d.m.Y)'))/udata" />

<div class="col">
<xsl:apply-templates select="document(concat('upage://', @id, '.anons_pic'))/udata">
<xsl:with-param name="page-id" select="@id" />
</xsl:apply-templates>

<p class="title"><a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
<xsl:value-of select="." />
</a></p>

<p umi:element-id="{@id}" umi:field-name="publish_time" umi:format="d.m.Y" class="date">
<xsl:value-of select="$date" />
</p>

<p class="decription">
<xsl:value-of select="$item-info//property[@name = 'anons']/value" disable-output-escaping="yes" />
</p>

<p class="more"><a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
» подробнее
</a></p>
<div class="bot_line"></div>
</div>
</xsl:template>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #1 : 22 Марта 2015, 18:37:23 »
Если вы создаете свой шаблон на основе Demodizzy, то вам достаточно написать так:
       <xsl:template match="udata[@module = 'news' and @method = 'lastlist']">
      <xsl:apply-templates select="items" mode="news_page">
         <xsl:with-param name="list-class">
            <xsl:text>news-lastlist</xsl:text>
         </xsl:with-param>
      </xsl:apply-templates>
                <xsl:apply-templates select="total" />
   </xsl:template>

Шаблон, который формирует вывод самой пагинации смотрите в файле /templates/demodizzy/xslt/library/numpages.xsl

*

aizul

  • **
  • 94
  • +0/-0
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #2 : 23 Марта 2015, 14:29:06 »
Шаблон numpages.xsl взял из файла demohunt.
Вот полный файл news.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="result[@module = 'news' and @method = 'item']">
<xsl:value-of select="page//property[@name = 'content']/value" disable-output-escaping="yes" />
</xsl:template>

<xsl:template match="result[@module = 'news' and @method = 'rubric']">
<xsl:apply-templates select="document('udata://news/lastlist')/udata" />
</xsl:template>

<xsl:template match="udata[@module = 'news' and @method = 'lastlist']">
<xsl:apply-templates select="items" mode="news_page">
<xsl:with-param name="list-class">
<xsl:text>news-lastlist</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<!-- список новостей -->
<xsl:template match="udata[@method = 'lastlist']//item" mode="news_page">
<xsl:param name="item-info" select="document(concat('upage://', @id))" />
<xsl:variable name="date" select="document(concat('udata://system/convertDate/', @publish_time, '/(d.m.Y)'))/udata" />

<div class="col">
<xsl:apply-templates select="document(concat('upage://', @id, '.anons_pic'))/udata">
<xsl:with-param name="page-id" select="@id" />
</xsl:apply-templates>

<p class="title"><a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
<xsl:value-of select="." />
</a></p>

<p umi:element-id="{@id}" umi:field-name="publish_time" umi:format="d.m.Y" class="date">
<xsl:value-of select="$date" />
</p>

<p class="decription">
<xsl:value-of select="$item-info//property[@name = 'anons']/value" disable-output-escaping="yes" />
</p>

<p class="more"><a href="{@link}" umi:element-id="{@id}" umi:field-name="name">
» подробнее
</a></p>
<div class="bot_line"></div>
</div>
</xsl:template>

<!-- /список новостей -->

<!-- новости в сайдбаре -->
<xsl:template match="udata[@module = 'news'][@method = 'lastlist']" mode="leftnews">
<xsl:apply-templates select="//item" mode="leftnews" />
</xsl:template>

<xsl:template match="item" mode="leftnews">
<p xmlns:umi="umi" umi:element-id="{@id}" umi:field-name="publish_time" class="date">
<xsl:apply-templates select="document(concat('udata://system/convertDate/',@publish_time,'/d.m.Y/'))/udata" />
</p>
<p class="news_text"><a href="{@link}" xmlns:umi="umi" umi:element-id="{@id}" umi:field-name="name">
<xsl:apply-templates />
</a></p>
</xsl:template>

<!-- /новости в сайдбаре -->

<!-- новости в сайдбаре2 -->
<xsl:template match="udata[@module = 'news'][@method = 'lastlist']" mode="leftnews2">
<xsl:apply-templates select="//item" mode="leftnews2" />
</xsl:template>

<xsl:template match="item" mode="leftnews2">
<p xmlns:umi="umi" umi:element-id="{@id}" umi:field-name="publish_time" class="date">
<xsl:apply-templates select="document(concat('udata://system/convertDate/',@publish_time,'/d.m.Y/'))/udata" />
</p>
<p class="news_text"><xsl:apply-templates /> <a href="{@link}" xmlns:umi="umi" umi:element-id="{@id}" umi:field-name="name"> >></a></p>
</xsl:template>

<!-- /новости в сайдбаре2 -->



<xsl:template match="property[@name = 'anons_pic']">
<xsl:param name="page-id" />
<img src="{value}" umi:element-id="{$page-id}" umi:field-name="{@name}" width="315" class="foto" />

</xsl:template>

<xsl:template match="udata[@module = 'system' and @method = 'makeThumbnail']">
<xsl:param name="page-id" />
<xsl:param name="object-id" />
<xsl:param name="field-name" />

<img src="{src}" umi:element-id="{$page-id}" umi:object-id="{$object-id}" umi:field-name="{$field-name}" />
</xsl:template>
</xsl:stylesheet>

Как подключить сюда пейджинг подскажите пожалуйста?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #3 : 23 Марта 2015, 18:33:16 »
Шаблон numpages.xsl взял из файла demohunt.
Вот полный файл news.xsl

...

Как подключить сюда пейджинг подскажите пожалуйста?

Зависит от того, что у вас в файле numpages.xsl

*

aizul

  • **
  • 94
  • +0/-0
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #4 : 24 Марта 2015, 09:27:23 »
Зависит от того, что у вас в файле numpages.xsl
Вот его содержимое:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE local [
<!ENTITY nbsp   "&#160;">
<!ENTITY copy   "&#169;">
<!ENTITY reg    "&#174;">
<!ENTITY trade  "&#8482;">
<!ENTITY mdash  "&#8212;">
<!ENTITY laquo  "&#171;">
<!ENTITY raquo  "&#187;">
<!ENTITY pound  "&#163;">
<!ENTITY yen    "&#165;">
<!ENTITY euro   "&#8364;">
]>

<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
xmlns:xlink="http://www.w3.org/TR/xlink"
extension-element-prefixes="php"
exclude-result-prefixes="xsl php date udt xlink">

<xsl:template match="udata[@module = 'system'][@method = 'numpages']">
<xsl:param name="numpages" />
<xsl:variable name="request">
<xsl:if test="$request-uri != ''">
<xsl:variable name="request_uri_amp" select="php:function('str_replace', 'amp;', '', string($request-uri))" />
<xsl:value-of select="concat('&amp;', $request_uri_amp)" />
</xsl:if>
</xsl:variable>
<xsl:variable name="first" select="items/item[position() = 1]" />
<xsl:variable name="last" select="items/item[position() = last()]" />
<xsl:if test="$numpages &gt; 1">
<div class="navigator">
Страницы:&#160;
<xsl:if test="$p &gt; 0">
<a id="toprev" href="?p={$p - 1}{$request}" style="font-size: 10px; text-decoration: none">← Ctrl</a>&#160;
</xsl:if>
<xsl:if test="$first &gt; 1">
<a href="?p=0{$request}">1</a>
<xsl:choose>
<xsl:when test="$first = 2">&#160;|&#160;</xsl:when>
<xsl:otherwise>&#160;...&#160;</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:apply-templates select="items/item" mode="_pages.num">
<xsl:with-param name="request" select="$request" />
</xsl:apply-templates>
<xsl:if test="$last &lt; $numpages">
<xsl:choose>
<xsl:when test="($last + 1) = $numpages">&#160;|&#160;</xsl:when>
<xsl:otherwise>&#160;...&#160;</xsl:otherwise>
</xsl:choose>
<a href="?p={$numpages - 1}{$request}"><xsl:value-of select="$numpages"/></a>
</xsl:if>
<xsl:if test="$p &lt; $numpages - 1">
&#160;<a id="tonext" href="?p={$p + 1}{$request}" style="font-size: 10px; text-decoration: none">Ctrl →</a>
</xsl:if>
</div>
</xsl:if>
</xsl:template>

<xsl:template match="item" mode="_pages.num">
<xsl:param name="request"/>
<xsl:choose>
<xsl:when test=". = $p + 1">
<b><xsl:value-of select="."/></b>
</xsl:when>
<xsl:otherwise>
<a href="?p={node() - 1}{$request}"><xsl:value-of select="."/></a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="position() != last()">&#160;|&#160;</xsl:if>
</xsl:template>

</xsl:stylesheet>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #5 : 25 Марта 2015, 09:02:50 »
тогда делаете так:
 <xsl:template match="udata[@module = 'news' and @method = 'lastlist']">
      <xsl:apply-templates select="items" mode="news_page">
         <xsl:with-param name="list-class">
            <xsl:text>news-lastlist</xsl:text>
         </xsl:with-param>
      </xsl:apply-templates>
      <xsl:if test="total &gt; per_page">
          <xsl:apply-templates select="document(concat('udata://system/numpages/',total,'/',per_page))/udata" />
      </xsl:if>

 </xsl:template>

*

aizul

  • **
  • 94
  • +0/-0
    • Просмотр профиля
Re:Помогите вывести пейджинг новостей
« Ответ #6 : 25 Марта 2015, 15:01:29 »
Огромное спасибо, работает как нужно.