Как вывести список элементов группы в списке групп ИС?

#
Как вывести список элементов группы в списке групп ИС?
Как изменить XML шаблон "СписокЭлементовИнфосистемы", чтобы после вывода ссылки на группу ИС, выводились элементы этой группы. (т.е. ссылки на элементы всех групп выводились на одной странице)?

Например:

           Эссе
                   Статья 1
                   Статья 2

           Заметки
                   Статья 1
                   Статья 2

Зрарнее благодарен.
#
Re: Как вывести список элементов группы в списке групп ИС?
курим маны в сторону класса Structure, метод Show Structure
#
Re: Как вывести список элементов группы в списке групп ИС?
NeX, уже не первый раз замечаю ваши ответы на вопросы посетителей, вы можете конткретно человеку помочь? По большей части вопросы тут задают люди далекие от программирования и то что вы написали NeX писал(а):
курим маны в сторону класса Structure, метод Show Structure

ничего не даст! Если можете дать полный ответ, то давайте, если не можете или лень, то думаю лучше промолчать, да бы не разводить флуд!
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Как вывести список элементов группы в списке групп ИС?
Коллеги!
Давайте жить дружно (с) Кот Леопольд.

Оффтоп: NeX, Varkolak,
следите сегодня-завтра за новостями в дилерском разделе, будет что обсудить.
#
Re: Как вывести список элементов группы в списке групп ИС?
lifeform, вот пример подобного 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>
      <xsl:apply-templates select="//group[@parent_id='0']" mode="groups" />
   </ul>

   
   
   <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">
<xsl:param name="cur_gr_id" select="@id"/>

<li>
      <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>

<ul>
<!-- Отображение записи информационного блока -->
   <xsl:apply-templates select="//item[item_status=1 and @group_id = $cur_gr_id]" />
</ul>

</xsl:template>

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

   <li>

      <!-- Название -->
      <a href="{item_path}" class="news_title"><xsl:value-of disable-output-escaping="yes" select="item_name" /></a>
      
   </li>
</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: Как вывести список элементов группы в списке групп ИС?
Я немного изменил данный шаблон:

<?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" />
  
   <!-- Отображение подгрупп данной группы -->
<table border="0" cellpadding="0" cellspacing="0">
      <xsl:apply-templates select="//group[@parent_id='0']" mode="groups" />
</table>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгруппы информационного элемента -->
<!-- ======================================================== -->
<xsl:template match="group" mode="groups">
<xsl:param name="cur_gr_id" select="@id"/>
   <xsl:if test="count(/document/blocks/items/item[@group_id=$cur_gr_id]) != 0">
      <tr>
         <td valign="top">
            <div class="level1Section"><b style="font-size:12px; padding-left:5px">
               <a href="{/document/blocks/url}{fullpath}" style="color:#C10417"><xsl:value-of disable-output-escaping="yes" select="name" /></a>
            </b></div>
         </td>
      </tr>
      <!-- Отображение записи информационного блока -->
      <xsl:apply-templates select="//item[item_status=1 and @group_id = $cur_gr_id]" />
   </xsl:if>
</xsl:template>

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

   <tr>
      <td valign="top" align="right">
         <div style="font-size:12px; text-decoration:none; padding-left:5px; border-bottom:thin; border-bottom-style:solid; border-bottom-color:#D9D9D9">
            <!-- Название -->
            <a href="{item_path}" class="level3Section" style="padding-left: 15px; padding-right: 10px;"><xsl:value-of disable-output-escaping="yes" select="item_name" /></a>
         </div>
      </td>
   </tr>
</xsl:template>

</xsl:stylesheet>

Итображение инф системы:
<?
/* Вывод информационных систем */
$InformationSystem = new InformationSystem();
$item_count = 999;
$InformationGroupId = false;  // false - из всех групп, 0 - из корневой группы
$InformationSystem->ShowInformationSystem(26, $InformationGroupId, 'СписокЭлементовИнфосистемыЛТ' ,$item_count);  
?>

Все отображается как надо, но в журнале вот такая ошибка высвечивается:
<strong>ПРЕДУПРЕЖЕДЕНИЕ:</strong> Missing argument 5 for informationsystem::showinformationsystem(), called in /home/u29959/images.lab-pribor.ru/www/data_templates/18.htm on line 34 and defined в файле /home/u29959/images.lab-pribor.ru/www/modules/InformationSystems/InformationSystems.class.php (строка 3241)

Что не так, помогите разобраться.
#
Re: Как вывести список элементов группы в списке групп ИС?
$InformationSystem->ShowInformationSystem(26, $InformationGroupId, 'СписокЭлементовИнфосистемыЛТ' ,$item_count, 0);  
#
Re: Как вывести список элементов группы в списке групп ИС?
Спасибо, теперь все норм
Авторизация