Вывод всех элементов инфо системы в элементе инфо системы

#
Вывод всех элементов инфо системы в элементе инфо системы
Здравствуйте коллеги и сочувствующие.
Появилась необходимость вывести список элементов инфо системы услуги в каждом элементе используя ТДС.

В ТДС Информационной системы, во вкладке "Код страницы"
перед контроллером
$Informationsystem_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   ->itemsProperties(TRUE)
   ->groupsProperties(TRUE)      
   ->show();

Мы вставляем вот это:

if ($Informationsystem_Controller_Show->item) {

   $oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', $Informationsystem_Controller_Show->item);
  

   // Текущая группа
   $cur_group = $oInformationsystem_Item->informationsystem_group_id;
// Текущая инфо система
   $cur_id = $oInformationsystem_Item->informationsystem_id;
  
   // SELECT * FROM informationsystem_Items WHERE informationsystem_Items.id = $cur_id ORDER BY informationsystem_Items.id
   $oCore_QueryBuilder_Select = Core_QueryBuilder::select()
      ->select('informationsystem_items.path','informationsystem_items.name','informationsystem_items.id')
      ->from('informationsystem_items')
      ->where('informationsystem_items.informationsystem_id', '=', $cur_id)
      ->where('informationsystem_items.informationsystem_group_id', '=', $cur_group)
      ->where('informationsystem_items.deleted', '=', '0')
      ->where('active', '=', 1)
      ->clearOrderBy()
      ->orderBy('id');
      $all_items = $oCore_QueryBuilder_Select->execute()->asAssoc()->result();

foreach ($all_items as $items)
{

       $Informationsystem_Controller_Show
       ->addEntity(Core::factory('Core_Xml_Entity')
      ->name('all_items')
       ->addEntity(Core::factory('Core_Xml_Entity')
               ->name('items_name')
               ->value($items['name']))
        ->addEntity(Core::factory('Core_Xml_Entity')
               ->name('items_path')
               ->value($items['path']))
      );
}
}


В шаблоне xsl мы вставляем вот такой код:
   
        <xsl:variable name="link_path" select="/informationsystem/url" />
<ul>
     <xsl:for-each select="/informationsystem/all_items">
         <li><a href="{$link_path}{items_path}"><xsl:value-of disable-output-escaping="yes" select="items_name"/></a></li>
     </xsl:for-each>
</ul>

И наслаждаемся отображением имен и ссылками на все информационные элементы.
Спасибо тех. поддержке Hostcms, без нее, я бы код не допилил.

PS
Работоспособность проверена только на элементах инфо системы в корне информационной системы. Для групп наверное надо будет допиливать php запрос.
В говно может вступить любой желающий. (с)
#
Re: Вывод всех элементов инфо системы в элементе инфо системы
хы, понадобилось реализовать тоже самое только в пределах групп.

Для того, чтобы работало в группах в xsl шаблоне в секции

<xsl:template match="informationsystem_item">
      <xsl:variable name="group" select="/informationsystem/group"/> <!-- Объявляем переменные -->
      <xsl:variable name="id" select="@id" />  <!-- Объявляем переменные -->
....
<xsl:value-of disable-output-escaping="yes" select="/informationsystem//informationsystem_group[@id = $group]/name"/> <!-- выводим имя группы -->
....
</xsl:template>

Если надо вывести путь до item указываем в <a freh="{/informationsystem//informationsystem_group[@id = $group]/url}{items_path}">Путь до item в пределах группы.

Если есть решение более изящное, пусть старшие товарищи поправят
В говно может вступить любой желающий. (с)
Авторизация