Как под названием группы вывести элементы этой группы?

#
Как под названием группы вывести элементы этой группы?
Здравствуйте! Есть инфосистема и в ней есть группы,которые выходят в столбик. Я вывел просто название групп. Теперь мне нужно под каждой группой вывести элементы которые находятся в этой группе. Типа так:

Название Раздела 1
Элемент 1 раздела 1
Элемент 2 раздела 1
Название Раздела 2
Элемент 1 раздела 2
Элемент 2 раздела 2

Пробовал этот вариант http://www.hostcms.ru/forums/3/8751/#55949 ,но он мне вывел все элементы внизу,под всеми группами.
Еще делал так:
->group(false)
  ->groupsMode('all')
  ->groupsProperties(TRUE)
  ->itemsProperties(true)
  ->show();

Результат тот же. Я думаю нужно копать в сторону XSL. Есть у кого реализация такого вывода.
Модератор
#
Re: Как под названием группы вывести элементы этой группы?
pd-art писал(а):
Я думаю нужно копать в сторону XSL

Вы правы. Вам нужно в XSL-шаблоне в темплейте показа групп вызывать темплейт элементов  ограничением по группе. Т.е. будет примерно так:

<xsl:template match="informationsystem_group">
   <xsl:variable name="id" select="@id" />
   
   <h1><xsl:value-of select="name"/></h1>
   
   <xsl:apply-templates select="/informationsystem//informationsystem_item[informationsystem_group_id = $id]"/>
   
</xsl:template>

<xsl:template match="informationsystem_item">
   <xsl:value-of select="name"/>
</xsl:template>


Также обязательно в контроллере должны быть указаны:

->group(false)
->groupsMode('all')
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Как под названием группы вывести элементы этой группы?
alexander.egorov, то что нужно. Спасибо вам!
Модератор
#
Re: Как под названием группы вывести элементы этой группы?
pd-art,

Пожалуйста.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Как под названием группы вывести элементы этой группы?
alexander.egorov, еще один вопрос. Как сделать чтобы элементы были по 3 в ряд?
Знаю что можно сделать по аналогии с group,типа:

<xsl:apply-templates select="informationsystem_item[position() mod $n = 1]" mode="items"/>


А потом в шаблоне типа так:

<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="informationsystem_item" mode="items">
      <div class="cw-imgs">   
                        <xsl:for-each select=". | following-sibling::informationsystem_item[position() &lt; $n]">      
            <div class="cw-card">               
               <h4><xsl:value-of select="description"/></h4>
               <p><xsl:value-of select="name"/></p>
            </div>   
                        </xsl:for-each>      
      </div>
   </xsl:template>


Но т.к. наверху закомментировал
<!--<xsl:apply-templates select="informationsystem_item"/>-->
, то нужно работать с вашим примером
<xsl:apply-templates select="/informationsystem//informationsystem_item[informationsystem_group_id = $id]"/>


Как все таки организовать вывод элементов по три в ряд? Мой код на данный момент.

<!-- Шаблон выводит ссылки подгруппы информационного элемента -->
   <xsl:template match="informationsystem_group" mode="groups">
      <xsl:for-each select=". | following-sibling::informationsystem_group[position() &lt; $n]">
              <p><xsl:value-of select="name"/></p>
         <xsl:variable name="id" select="@id" />
         <xsl:apply-templates select="/informationsystem//informationsystem_item[informationsystem_group_id = $id]"/>
      </xsl:for-each>
   </xsl:template>
   
   <!-- Шаблон вывода информационного элемента -->
   <xsl:template match="informationsystem_item">
      <div class="cw-imgs">         
            <div class="cw-card">               
               <h4><xsl:value-of select="description"/></h4>
               <p><xsl:value-of select="name"/></p>
            </div>         
      </div>
   </xsl:template>


Заранее спасибо

Авторизация