Pagebreak для допсвойств. Разбивка на страницы.

#
Re: Pagebreak для допсвойств. Разбивка на страницы.
Какое значение страницы через get? Зачем? У меня была форма и описание к ней, часть описания надо было вывести над формой, а часть под.
Я вставил pagebreak и в XSL вывел части описания где мне надо, с помощью substring-before и substring-after.
Заказов не беру. Консультирую редко.
#
Re: Pagebreak для допсвойств. Разбивка на страницы.
А... ну это проще )
#
Re: Pagebreak для допсвойств. Разбивка на страницы.
Если кому интересно

Сначала нужно через 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="'&lt;!-- pagebreak --&gt;'"/>
<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 &gt; 1">
            <br/>
            <div class="pages fright">
               <xsl:if test="$curpage &gt; 1">
                  <a href="{url}?page=1" class="page_link">1</a>
                  <xsl:if test="$curpage &gt; 4">
                     <span class="page_link">…</span>
                  </xsl:if>
               </xsl:if>
               <xsl:if test="$curpage &gt; 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 &gt; 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) &gt; 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) &gt; 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) &gt; 2">
                  <xsl:if test="($count - $curpage) &gt; 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>
Авторизация