Логотип

Документация по макросам и шаблонам UMI.CMS

Итоговый набор шаблонов

В итоге мы можем расположить все шаблоны относящиеся к поиску в отдельном файле, например ~/imports/search.xsl, подключив его к основному шаблону разметки страниц при помощи <xsl:include>.

В этом случае основной шаблон может выглядеть примерно следущим образом:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="utf-8" />

  
  <xsl:param name="search_string"/>

  
  <xsl:include href="imports/paging.xsl"/>
  <xsl:include href="imports/search.xsl"/>

 <xsl:template match="/">
    <html>
      <head> ... </head>
      <body>

        
        <xsl:apply-templates select="document('udata://search/insert_form')/udata"/> 

        <div class="content">
          <xsl:apply-templates select="result"/>
        </div>

      </body>
    </html>
 </xsl:template>
</xsl:stylesheet>

Тогда как все остальные шаблоны для поиска будут в файле search.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 

 <xsl:template match="udata[@module = 'search'][@method = 'insert_form']">
   <div class="search_form">
     <form method="get" action="/search/search_do/">
       <input type="text" name="search_string" value="{last_search_string}"/>
       <input type="submit" value="Искать" />
     </form>
   </div>
 </xsl:template>

 

 <xsl:template match="result[@module = 'search'][@method = 'search_do']">

   <xsl:variable name="search-results" select="document('udata://search/search_do/')/udata" />

   <xsl:apply-templates select="$search-results"/>

   <xsl:apply-templates select="document(concat('udata://system/numpages/',
    $search-results/total, '/', $search-results/per_page, '/notemplate/p/3'))" mode="paging.numbers"/>

 </xsl:template>

 

 <xsl:template match="udata[@module = 'search'][@method = 'search_do'][not(items/item)]">
   <div class="search_message">
     <xsl:text>По запросу </xsl:text>
     <span>&#171;<xsl:value-of select="$search_string" />&#187;</span>
     <xsl:text> ничего не найдено.</xsl:text>
   </div>
 </xsl:template>

 

 <xsl:template match="udata[@module = 'search'][@method = 'search_do'][items/item]">
   <div class="search_message">
     <xsl:text>Найдено страниц: </xsl:text>
     <xsl:value-of select="total" />
   </div>

   <ul class="search_results">
     <xsl:apply-templates select="items/item" mode="search.results"/>
   </ul>
 </xsl:template>

 

 <xsl:template match="item" mode="search.results" >
   <li>
     <a href="{@link}">
       <xsl:value-of select="@name"/>
     </a>
     <xsl:value-of select="." disable-output-escaping="yes"/>
   </li>
 </xsl:template>

</xsl:stylesheet>