Информер Инормационный системы

#
Информер Инормационный системы
Как можно организовать вывод информера информационной системы на любую страницу сайта.
Пример: "Новые файлы" или "Популярные статьи"?
Модератор
#
Re: Информер Инормационный системы
вызов обычного метода показа инфосистемы, пример есть в шаблоне главной страницы демосайта:

      <?
      /* Вывод информационных систем */
      $InformationSystem = new InformationSystem();
      
      $external_propertys=array();
      $external_propertys['ОтображатьСсылкуНаАрхив']=1;
      $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;
      
      /* Количество выводимых элементов */
      $item_count = 2;
      
      $InformationSystemId = 1;
      
      $InformationGroupId = 0;  // false - из всех групп, 0 - из корневой группы
      
      $InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId,'СписокЭлементовИнфосистемы',$item_count,0,$external_propertys);  
      ?>
#
Re: Информер Инормационный системы

  1. Можно ли устанавливать сортировку в информере отличную от сортировки в информационной системе?
  2. Как убрать заголовок всей инфосистемы и ее описание?
  3. Можно ли вывести только заголовки элементов системы?
  4. Можно ли вывести в строку список каталогов информационной системы в информере?
#
Re: Информер Инормационный системы
1. да, можно. Для этого в метод $InformationSystem->ShowInformationSystem нужно передавать параметр $property['Order'] с нужным значением. Более подробно читайте в описании нашего API.

2. да. Вносите соответствующие исправления в XSL-шаблон, используемый для вывода информера.

3. да. Вносите соответствующие исправления в XSL-шаблон, используемый для вывода информера.

4. да. Вносите соответствующие исправления в XSL-шаблон, используемый для вывода информера.

В приведенном примере таким XSL-шаблоном является "СписокЭлементовИнфосистемы".
#
Re: Информер Инормационный системы
по 1 понятно, а 2,3,4 применительно информера выводимого на любой странице эти действия как реализовать не меняя параметры самой инфосистемы.
#
Re: Информер Инормационный системы
Параметры самой инфосистемы при выводе информера(т.е. блока из нескольких инфоэлементов) никак не изменяются и не изменятся. Для вывода информера на всех страницах сайта код, приведенный выше, необходимо поместить в макет сайта. А в используемый при выводе XSL-шаблон(Вы можете сделать его из стандартного "СписокЭлементовИнфосистемы" ) необходимо вносить соответствующие изменения для того, чтобы он:
- не выводил заголовок всей инфосистемы и ее описание;
- выводил только заголовки элементов системы без кратких описаний;
- выводил в строку список групп информационной системы.
#
Re: Информер Инормационный системы
Какие нужно устанавливать параметры для вывода списка каталогов информационной системы в строку.
Буду благодарен за показанный целиком код вывода.
#
Re: Информер Инормационный системы
Устанавливать какие-либо параметры не требуется. Для того, чтобы изменить способ отображения данных, к котором применяется XSL-шаблон, необходимы знания HTML(помимо знаний XSLT. Один из вариантов реализации вывода списка групп в строку:
1. заменить исходный подобный блок в XSL-шаблоне "СписокЭлементовИнфосистемы" на этот:
<!-- Отображение подгрупп данной группы -->
   <ul style="margin: 0px; padding: 0px">
      <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="groups" />
   </ul>
   <div style="clear: both"></div>

А также исправить тэмплейт вывода списка групп:
<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгруппы информационного элемента -->
<!-- ======================================================== -->
<xsl:template match="group" mode="groups">
   <li  class="inline_list">
...
   </li>
</xsl:template>
2. в css для макета сайта добавить стиль для li:
li.inline_list
{
float: left;
list-style-type:none;
margin-right: 10px;
}
#
Re: Информер Инормационный системы
Если целиком, то вот XSL-шаблон "СписокЭлементовИнфосистемы":
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
encoding="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="/document">

   <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
   <xsl:variable name="parent_group_id" select="blocks/parent_group_id" />
   
   <!-- Если в находимся корне - выводим название информационной системы -->
   <xsl:if test="blocks/parent_group_id=0">
      <h1><xsl:value-of disable-output-escaping="yes" select="blocks/name" /></h1>
      <xsl:value-of disable-output-escaping="yes" select="blocks/description" />
   </xsl:if>
   
   <!-- Если в находимся в группе - выводим название группы -->
   <xsl:if test="blocks/parent_group_id!=0">
      <h1><xsl:value-of disable-output-escaping="yes" select=".//group[@id=$parent_group_id]/name" /></h1>

      <!-- Путь к группе -->
      <p><xsl:apply-templates select=".//group[@id=$parent_group_id]" mode="goup_path" /></p>
   </xsl:if>

   <!-- Отображение подгрупп данной группы -->
   <ul style="margin: 0px; padding: 0px">
      <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="groups" />
   </ul>
   <div style="clear: both"></div>
   <!-- Отображение записи информационного блока -->
   <xsl:apply-templates select="blocks/items/item[item_status=1]" />
   
   <p>
   
   <!-- Строка ссылок на другие страницы информационного блока -->   
   <xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1">   
      <xsl:call-template name="for">
        <xsl:with-param name="items_on_page" select="blocks/items/items_on_page" />
        <xsl:with-param name="current_page" select="blocks/items/current_page" />
        <xsl:with-param name="count_items" select="blocks/items/count_items" />   
        <xsl:with-param name="visible_pages" select="6" />      
              
      </xsl:call-template>
   </xsl:if>
   </p>
   
   <div style="clear: both"></div>
   
   <div style="margin-right:10px">
      <table border="0" width="100%" cellpadding="0" cellspacing="0">
      <tr>
      <!-- Ссылка на архив -->
      <xsl:if test="ОтображатьСсылкуНаАрхив=1">
         <td><a href="{blocks/url}">Архив "<xsl:value-of disable-output-escaping="yes" select="blocks/name" />"</a></td>
      </xsl:if>
      <td align="right">
      <a href="{blocks/url}rss/"><img src="/images/rss/rss_2.0.gif" /></a>
      </td>
      </tr>
      </table>
   </div>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goup_path">
   <xsl:variable name="parent_id" select="@parent_id" />

   <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path" />

   <xsl:if test="@parent_id=0">
      <a href="{/document/blocks/url}"><xsl:value-of disable-output-escaping="yes" select="/document/blocks/name" /></a>
   </xsl:if>

   <span class="path_arrow">&#8594;</span>

   <a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name" /></a>
</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгруппы информационного элемента -->
<!-- ======================================================== -->
<xsl:template match="group" mode="groups">
   <li  class="inline_list">
      <xsl:if test="small_image!=''">
         <a href="{/document/blocks/url}{fullpath}" target="_blank"><img src="/upload/{small_image}" /></a>&#xA0;
      </xsl:if>
      <a href="{/document/blocks/url}{fullpath}"><b><xsl:value-of disable-output-escaping="yes" select="name" /></b></a>&#xA0;<span style="color: #dadada">(<xsl:value-of select="count_all_items" />) </span><br/>

   </li>
</xsl:template>

<!-- ======================== -->
<!-- Данные об инф. элементах -->
<!-- ======================== -->
<xsl:template match="blocks/items/item">

   <div style="margin-right:10px; margin-bottom: 5px;">

<p>
      <!-- Дата время -->
      <span class="news_date"><xsl:value-of disable-output-escaping="yes" select="item_datetime" /></span>
      <br />

      <!-- Название -->
      <a href="{item_path}" class="news_title"><xsl:value-of disable-output-escaping="yes" select="item_name" /></a>
      <br />

      <!-- Изображение для информационного элемента (если есть) -->
      <xsl:if test="item_small_image!=''">
         <a href="{item_path}" class="news_title"><img src="/{item_small_image}" class="partner_img" alt="" style="margin: 3px 10px 10px 0px" align="left" /></a>
      </xsl:if>
      
      <xsl:value-of disable-output-escaping="yes" select="item_description" />
      
<!--<img src="/{item_propertys/item_property[@xml_name='file']/property_file_path}"/>-->

      <div style="clear: both;"></div>
</p>
   </div>
</xsl:template>

<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
   <xsl:param name="i" select="0" />
   <xsl:param name="items_on_page" />
   <xsl:param name="current_page" />
   <xsl:param name="count_items" />
   <xsl:param name="visible_pages" />   
   
   <xsl:variable name="n" select="$count_items div $items_on_page" />
   
   <!-- Считаем количество выводимых ссылок перед текущим элементом -->      
      <xsl:variable name="pre_count_page">
         <xsl:choose>
            <xsl:when test="$current_page > ($n - (round($visible_pages div 2) - 1))">
               <xsl:value-of select="$visible_pages - ($n - $current_page)" />
            </xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="round($visible_pages div 2) - 1" />
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>
   
   <!-- Считаем количество выводимых ссылок после текущего элемента -->
      <xsl:variable name="post_count_page">      
         <xsl:choose>
            <xsl:when test="0 > $current_page - (round($visible_pages div 2) - 1)">
               <xsl:value-of select="$visible_pages - $current_page - 1" />
            </xsl:when>
            <xsl:otherwise>
               <xsl:choose>
                  <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)">
                     <xsl:value-of select="$visible_pages div 2" />
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:value-of select="round($visible_pages div 2) - 1" />
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:otherwise>
         </xsl:choose>         
      </xsl:variable>

      
      <xsl:if test="$count_items > $items_on_page and $n > $i">

      <!-- Ставим ссылку на страницу-->
      <xsl:if test="$i != $current_page">

         <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
         <xsl:variable name="parent_group_id" select="/document/blocks/parent_group_id" />

         <!-- Определяем группу для формирования адреса ссылки -->
         <xsl:variable name="group_link"><xsl:choose>
            <!-- Если группа не корневая (!=0) -->
            <xsl:when test="$parent_group_id != 0"><xsl:value-of select="/document/blocks//group[@id = $parent_group_id]/fullpath" /></xsl:when>
            <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
            <xsl:otherwise></xsl:otherwise>
         </xsl:choose></xsl:variable>

         <!-- Определяем адрес ссылки -->
         <xsl:variable name="number_link"><xsl:choose>
            <!-- Если не нулевой уровень -->
            <xsl:when test="$i != 0">page-<xsl:value-of select="$i + 1" />/</xsl:when>
            <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
            <xsl:otherwise></xsl:otherwise>
         </xsl:choose></xsl:variable>
            
         <!-- Выводим ссылку на первую страницу -->
         <xsl:if test="$current_page - $pre_count_page > 0 and $i = 0">
            <a href="{/document/blocks/url}{$group_link}" class="page_link" style="text-decoration: none;">&#8592;</a>
         </xsl:if>
                                          
         <xsl:choose>
            <xsl:when test="$i >= ($current_page - $pre_count_page) and ($current_page + $post_count_page) >= $i">
            
            <!-- Выводим ссылки на видимые страницы -->
               <a href="{/document/blocks/url}{$group_link}{$number_link}" class="page_link"><xsl:value-of select="$i + 1" /></a>
            </xsl:when>
            <xsl:otherwise>               
            </xsl:otherwise>
         </xsl:choose>
         
         <!-- Выводим ссылку на последнюю страницу -->         
         <xsl:if test="$i+1 >= $n and $n > ($current_page + 1 + $post_count_page)">      
            <xsl:choose>
               <xsl:when test="$n > round($n)">
               <!-- Выводим ссылку на последнюю страницу -->                  
                     <a href="{/document/blocks/url}{$group_link}page-{round($n+1)}/" class="page_link" style="text-decoration: none;">&#8594;</a>                  
               </xsl:when>
               <xsl:otherwise>   
                     <a href="{/document/blocks/url}{$group_link}page-{round($n)}/" class="page_link" style="text-decoration: none;">&#8594;</a>
               </xsl:otherwise>
            </xsl:choose>   
         </xsl:if>
         
      </xsl:if>
      
      <!-- Не ставим ссылку на страницу-->
      <xsl:if test="$i = $current_page">
         <span class="current"><xsl:value-of select="$i+1" /></span>
      </xsl:if>

      <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
      <xsl:call-template name="for">
         <xsl:with-param name="i" select="$i + 1" />
         <xsl:with-param name="items_on_page" select="$items_on_page" />
         <xsl:with-param name="current_page" select="$current_page" />
         <xsl:with-param name="count_items" select="$count_items" />
         <xsl:with-param name="visible_pages" select="$visible_pages" />      
      </xsl:call-template>

   </xsl:if>
</xsl:template>

</xsl:stylesheet>
#
Re: Информер Инормационный системы
natalya писал(а):
Более подробно читайте в описании нашего API.

скачал     HostCMS Infinity API для v. 4 2 апреля 2007 г., 353 Кб
там нарушена кодировка и прочесть ничего нельзя, 2 или 3 страницы только в нормальной кодировке, остальное так "&#209;&#239;&#232;&#241;&#238;&#234; &#227;&#235;&#238;&#225;&#224;&#235;&#252;&#237;&#251;&#245; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#245;"
Авторизация