Небольшой вопрос по постоению меню для информационной системы

#
Небольшой вопрос по постоению меню для информационной системы
Здравствуйте,

По одному из примеров с форума сделал небольшую менюшку для информационной системы:
Вывод:
<?php
$InformationSystem = & singleton('InformationSystem');
$item_count = 999;
$InformationSystemId = 15;
$InformationGroupId = false;  // false - из всех групп, 0 - из корневой группы
$InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId, 'МенюИнфосистемы', $item_count, 0);
?>

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 select="/document"/>
   </xsl:template>
   
   <xsl:template match="/document">   

   <xsl:variable name="parent_group_id" select="blocks/parent_group_id"/>
      
      <!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам -->
      <xsl:if test="count(blocks/selected_tags/tag) = 0 and count(.//group[@parent_id=$parent_group_id]) &gt; 0">

<xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="groups"/>

      </xsl:if>

   </xsl:template>
   
   <!-- Шаблон выводит ссылки подгруппы информационного элемента -->
   <xsl:template match="group" mode="groups">
      <li><a href="{/document/blocks/url}{fullpath}">
            <b>
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </b>
   </a>

<ul>
<xsl:apply-templates select="group" mode="groups"/>

   <xsl:variable name="group_id" select="@id"/>

   <xsl:apply-templates select="/document/blocks/items//item[@group_id=$group_id]"/>

</ul>
   </li>
   </xsl:template>
   
   <!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item">   
<xsl:value-of disable-output-escaping="yes" select="item_name"/><br/>
   </xsl:template>

</xsl:stylesheet>


Вывод работает, но проблема с ярлыками... ярлыки выводятся в той-же группе, где лежит его основной элемент, а должны быть в других группах где в общем они и лежат...

Например как должно быть:

группа 1
инфэлемент1
инфэлемент2
ярлык инфэлемента3
группа 2
инфэлемент3
инфэлемент4
ярлык инфэлемента1
ярлык инфэлемента2
...

Пример что получилось:

группа 1
инфэлемент1
ярлык инфэлемента1
инфэлемент2
ярлык инфэлемента2
группа 2
инфэлемент3
ярлык инфэлемента3
инфэлемент4

............

Подскажите, как модифицировать код, чтобы ярлыки попадали в нужную группу...???
#
Re: Небольшой вопрос по постоению меню для информационной системы
что-то я совсем уныл... неужели никто не встречался с подобным???
#
Re: Небольшой вопрос по постоению меню для информационной системы
Мда. ответа похоже не будет... подскажите хоть чем ярлыки элементов цепляются за группу??? сравнивал xml параметры элементов и ярлыков но никакой зацепки не нашел... очень нужно, выручайте!!!
#
Re: Небольшой вопрос по постоению меню для информационной системы
Дак посмотри структуру таблицы через phpMyadmin. Пожелание к разработчикам, чтобы они добавили вывод в xml инфы, о том что элемент ярлык, чтобы его можно было запросить через его собственный url. То есть, чтобы ярлыки можно было просматривать в тех разделах, где они лежат, а не там где основной элемент.
#
Re: Небольшой вопрос по постоению меню для информационной системы
serg2300 писал(а):
добавили вывод в xml инфы, о том что элемент ярлык, чтобы его можно было запросить через его собственный url
- ярлык собственного пути не имеет(также как и не имеет вообще никаких собственных данных кроме своего идентификатора, идентификатора группы и значения порядка сортировки), на то он и ярлык, чтобы ссылаться на другой элемент.
#
Re: Небольшой вопрос по постоению меню для информационной системы
неа, я проверял, в базе mysql url ярлыка его идентификатор. так вот если запросить ярлык по его url даже в окне браузера, то он выдает сам элемент. Это нигде не задокументировано, но это реализовано в в классе InformationSystem. То есть система проверяет, если элемент ярлык, то выдает содержимое реального элемента. То есть, идет запрос к элементу, если он ярлык, то идет запрос к другому элементу, который реальный. Но в xml мы видим реальный элемент и папку, где лежит ярлык. Путь же до реального элемента. Поэтому ссылки формируются до реального элемента и в ту группу, где он лежит. А мне надо, чтобы в xml была дополнительная информация, о том что элемент ярлык (что то вроде этого: <shortcut>true</shortcut><real_id>354234</real_id>. Таким образом мы можем через xsl отображать те ссылки, которые сами считаем нужным и просматривать ярлыки в тех раздела, где они реально лежат, либо оставить ссылку на реальный элемент. Технически в системе все это есть, нужно только добавить вывод в xml. но и можно добавить парамет (отображать в xml данные о ярлыках или нет) $param['show_shortcut']=true/false
#
Re: Небольшой вопрос по постоению меню для информационной системы
serg2300 писал(а):
неа, я проверял, в базе mysql url ярлыка его идентификатор
- это всего лишь следствие особенности работы метода вставки инфоэлемента в базу InsertInformationItem(он применяется и для вставки ярлыков). Данный метод проверяет, передано ли ему значение поля пути(через параметр $param['information_items_url']), и если не передано(что как раз и происходит при вставке ярлыка), то в качестве пути элемента запишется его идентификатор, т.к. названия у него нет.
serg2300 писал(а):
Таким образом мы можем через xsl отображать те ссылки, которые сами считаем нужным...
- это да, это вы сможете.
serg2300 писал(а):
...и просматривать ярлыки в тех раздела, где они реально лежат
- а это уже нет, не сможете. Из того факта, что у вас будет верная ссылка на ярлык, которую вы выведите на страницах сайта, никак не будет следовать, что система сразу начнет ее корректно обрабатывать и выдавать по этому пути информацию об инфоэлементе, а не 404-ую ошибку. Потребуется еще и программная реализация. Но на сегодняшний день это не принципиально, т.к. расширять XML информацией о самом ярлыке в любом случае мы не планируем.
#
Re: Небольшой вопрос по постоению меню для информационной системы
Да я инфосистему, где просматриваю ярлыки вывожу по другому (возможно в том варианте. что идет по default действительно нельзя видеть ярлыки). В моем случае можно, обработку 404 ошибки я переписал. Так вот в моей програмной реализации ярлыки по их id (=url) можно смотреть в тех папках, где они реально лежат.

В таком случае мне прийдется делать еще один mysql select на идентификацию ярлыков и через external propertys добавлять в xml, а там через xsl выводить реальные ссылки на сами ярлыки.
#
Re: Небольшой вопрос по постоению меню для информационной системы
serg2300 писал(а):
В таком случае мне прийдется делать еще один mysql select на идентификацию ярлыков и через external propertys добавлять в xml
- да, только так.
Авторизация