Если кому интересно
Сначала нужно через php добавить в XML новый тег, в который заносится значение текущей страницы, полученное через GET
->addEntity(
Core::factory('Core_Xml_Entity')
->name('cpage')->value($currentpage)
)
Вызов template:
<xsl:variable name="curpage" select="/informationsystem/currentpage"/>
<xsl:variable name="pagebreak" select="'<!-- pagebreak -->'"/>
<xsl:variable name="curtxt" select="property_value[tag_name=name]/value"/> <!-- name → XML-тег допсвойства-->
<xsl:call-template name="pages">
<xsl:with-param name="curpage" select="$curpage"/>
<xsl:with-param name="curtxt" select="$curtxt"/>
<xsl:with-param name="pagebreak" select="$pagebreak"/>
<xsl:with-param name="count">1</xsl:with-param>
</xsl:call-template>
<xsl:template name="pages">
<xsl:param name="curpage"/> <!--Текущая страница -->
<xsl:param name="curtxt"/> <!--Текущий текст -->
<xsl:param name="pagebreak"/>
<xsl:param name="count"/> <!-- Счетчик страниц-->
<!-- Если счетчик равен текущей странице, значит её надо вывести-->
<xsl:if test="$curpage = $count">
<div class="txt" hostcms:id="{@id}" hostcms:field="text" hostcms:entity="informationsystem_item" hostcms:type="wysiwyg">
<xsl:choose>
<!-- Если есть разделитель, то выводим то, что перед ним-->
<xsl:when test="contains($curtxt,$pagebreak)">
<xsl:variable name="viewtxt" select="substring-before($curtxt,$pagebreak)"/>
<xsl:value-of disable-output-escaping="yes" select="$viewtxt"/>
</xsl:when>
<!-- Если нет, то выводим всё-->
<xsl:otherwise>
<xsl:variable name="viewtxt" select="$curtxt"/>
<xsl:value-of disable-output-escaping="yes" select="$viewtxt"/>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:if>
<!-- Отрезаем всё, что после разделителя-->
<xsl:variable name="curtxt" select="substring-after($curtxt,$pagebreak)"/>
<xsl:choose>
<!-- Если был разделитель и текст после него-->
<xsl:when test="$curtxt">
<!-- Уходим в рекурсию, т.е. повторяем предыдущие действия-->
<xsl:call-template name="pages">
<xsl:with-param name="curpage" select="$curpage"/>
<xsl:with-param name="curtxt" select="$curtxt"/>
<xsl:with-param name="pagebreak" select="$pagebreak"/>
<xsl:with-param name="count" select="number($count+1)"/> <!-- увеличиваем счетчик страниц-->
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- Когда разделители и текст закончились, то выводим ссылки на страницы, если страниц больше одной-->
<xsl:if test="$count > 1">
<br/>
<div class="pages fright">
<xsl:if test="$curpage > 1">
<a href="{url}?page=1" class="page_link">1</a>
<xsl:if test="$curpage > 4">
<span class="page_link">…</span>
</xsl:if>
</xsl:if>
<xsl:if test="$curpage > 3">
<a href="{url}?page={number($curpage)-number(2)}" class="page_link">
<xsl:value-of disable-output-escaping="yes" select="number($curpage)-number(2)"/>
</a>
</xsl:if>
<xsl:if test="$curpage > 2">
<a href="{url}?page={number($curpage)-number(1)}" class="page_link">
<xsl:value-of disable-output-escaping="yes" select="number($curpage)-number(1)"/>
</a>
</xsl:if>
<span class="current">
<xsl:value-of disable-output-escaping="yes" select="$curpage"/>
</span>
<xsl:if test="($count - $curpage) > 0">
<a href="{url}?page={number($curpage)+number(1)}" class="page_link">
<xsl:value-of disable-output-escaping="yes" select="number($curpage)+number(1)"/>
</a>
</xsl:if>
<xsl:if test="($count - $curpage) > 1">
<a href="{url}?page={number($curpage)+number(2)}" class="page_link">
<xsl:value-of disable-output-escaping="yes" select="number($curpage)+number(2)"/>
</a>
</xsl:if>
<xsl:if test="($count - $curpage) > 2">
<xsl:if test="($count - $curpage) > 3">
<span class="page_link">…</span>
</xsl:if>
<a href="{url}?page={$count}" class="page_link">
<xsl:value-of disable-output-escaping="yes" select="$count"/>
</a>
</xsl:if>
</div>
<div class="read_more fright">Читать дальше: </div>
<br/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>