Фотогалерея. Как проскочить последнюю группу

#
Фотогалерея. Как проскочить последнюю группу
Здравствуйте!

Ситуация:
http://im-happy.ru/clubs/Panorama/#content здесь выводится список подгрупп. В данном случае одна последняя подгруппа, содержащая один элемент. Для вывода используется XLS "Список картинок".
Нужно, чтобы при нажатии на картинку подгруппы открывался не список элементов этой подгруппы, а сразу её первый элемент через XLS "Отражение подробной информации о фотографии".
Как я понимаю, для этого достаточно при выводе списка подгрупп, в случае, если подгруппа последняя, подставлять к её картинке вместо ссылки на подгруппу сразу ссылку на первый элемент подгруппы.

Вопрос, как получить адрес ссылки первого элемента подгруппы в момент вывода списка подгрупп в XLS "Список картинок"? Т.к. XML этой информации не содержит, то нужно получать как-то обращаясь к ИС?
Подскажите, как?
#
Re: Фотогалерея. Как проскочить последнюю группу
Кажется понял, что нужно в коде ТДС "Информационная система" что-то где-то поменять
В блоке:
   /* Вывод списка */
   if ($GLOBALS['INFSYS_result']['item'] == false)
   {
Нужно сделать доп проверку на наличие подгрупп, если их нет, то делать запрос по элементам текущей группы, чтобы получить первый элемент.

Но вот как сделат эту доппроверку и как правильно сформировать запрос...
Прошу помощи )
#
Re: Фотогалерея. Как проскочить последнюю группу
Апну вопросик. )
Может кто-нибудь подскажет, все-таки..
Модератор
#
Re: Фотогалерея. Как проскочить последнюю группу
VolT,
Вы знаете для какой именно подгруппы нужно получать ссылку?

Много ли всего элементов в галереи?
#
Re: Фотогалерея. Как проскочить последнюю группу
Подгрупп может быть много. Элементы размещаются только в последних подгруппах.
В каждой последней подгруппе может быть до 500 элементов.
В галерее - несколько тысяч.

Нужно проверять текущую подгруппу, и если у нее нет подгрупп - то при клике на нее, открывать не список элементов, а сразу первый элемент.
#
Re: Фотогалерея. Как проскочить последнюю группу
VolT писал(а):
Т.к. XML этой информации не содержит, то нужно получать как-то обращаясь к ИС?
Ну из XSL никуда обратиться уже не получится. Вы уверены,что в XML нет информации о подгруппах и элементах? Советую сам XML код в студию!
Тут 3 варинта:
1. Либо все необходимое в XML все-таки есть
2. Либо придется туда это "все" добавить
3. Либо обрабатывать полученный html код уже после вызова ShowInformationSystem
Создание сайтов в Хабаровске - http://web-alt.ru
#
Re: Фотогалерея. Как проскочить последнюю группу
В ТДС "Информационные системы" отображение вызывается этим кодом:
/* Отображаем информационную систему */
$GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $GLOBALS['INFSYS_result']['group'], $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);

В результате получается XML текст обрезанный до текущей группы:
________________
<?xml version="1.0" encoding="windows-1251"?>
<document>
   <site_user_id>0</site_user_id>
   <ОтображатьСсылкуНаАрхив>0</ОтображатьСсылкуНаАрхив>
   <ОтображатьСсылкиНаСледующиеСтраницы>1</ОтображатьСсылкиНаСледующиеСтраницы>
   <blocks id="15">
      <name>Клубы</name>
      <description></description>
      <url>/clubs/</url>
      <access>0</access>
      <parent_group_id>13</parent_group_id>
      <count_items>0</count_items>
      <count_items_on_page>0</count_items_on_page>
      <count_all_items>12</count_all_items>
      <count_groups>1</count_groups>
      <count_all_groups>2</count_all_groups>
      <group id="13" parent_id="0">
         <site_user>0</site_user>
         <name>Panorama</name>
         <description></description>
         <order>0</order>
         <path>Panorama</path>
         <fullpath>Panorama/</fullpath>
         <access>-1</access>
         <activity>1</activity>
         <count_items>0</count_items>
         <count_all_items>12</count_all_items>
         <count_groups>1</count_groups>
         <count_all_groups>1</count_all_groups>
         <big_image  width="421" height="137">/upload/information_system_15/0/1/3/group_13/information_groups_13.png</big_image>
         <small_image width="150" height="48">/upload/information_system_15/0/1/3/group_13/small_information_groups_13.png</small_image>
         <allow_indexation>1</allow_indexation>
         <propertys>
         </propertys>
         <group id="14" parent_id="13">
            <site_user>0</site_user>
            <name>Вечеринка №х</name>
            <description></description>
            <order>0</order>
            <path>14</path>
            <fullpath>Panorama/14/</fullpath>
            <access>-1</access>
            <activity>1</activity>
            <count_items>12</count_items>
            <count_all_items>12</count_all_items>
            <count_groups>0</count_groups>
            <count_all_groups>0</count_all_groups>
            <big_image  width="667" height="1000">/upload/information_system_15/0/1/4/group_14/information_groups_14.jpg</big_image>
            <small_image width="100" height="150">/upload/information_system_15/0/1/4/group_14/small_information_groups_14.jpg</small_image>
            <allow_indexation>1</allow_indexation>
            <propertys>
            </propertys>
         </group>
      </group>
      <tags>
      </tags>
      <items>
         <count_items>0</count_items>
         <current_page>0</current_page>
         <items_on_page>1</items_on_page>
      </items>
   </blocks>
</document>
______________________
#
Re: Фотогалерея. Как проскочить последнюю группу
Ну все таки думаю что все можно сделать через XSL. Вы точно завели сами информационные элементы в ИС?
То есть все группы и подруппы здесь есть судя по всему.

А вот этот блок
      <items>
         <count_items>0</count_items>
         <current_page>0</current_page>
         <items_on_page>1</items_on_page>
      </items>
как я понимаю говорит о том что и элементы он пытается вывести, просто они не заведены в самой ИС. Это так?

Итак нам нужно: перебирать все группы, и если у группы нет подгрупп но есть елементы, то нужно выводить элемент.

Пока так:
<xsl:template match="group">
   <!-- Если количество подгрупп > 0 то выводим инфо о группе и следующие подгруппы -->
   <xsl:when test="count(group) &gt; 0">
       <a href="{/document/blocks/url}{fullpath}">
              <xsl:value-of select="name" />
       </a>
       <xsl:apply-templates select="group" />
    </xsl:when>
    <xsl:otherwise>
       <xsl:variable name="myid" select="@id" />
        <!-- А вот тут мы возьмем ссылку на первый элемент , вот тут неуверен что правильно делаю -->
        <xsl:variable name="mylink" select=".//blocks/items/item[@parent_id=$myid and position()=1]" />
       <a href="{/document/blocks/url}{fullpath}{$mylink}">
              <xsl:value-of select="name" />
       </a>
    </xsl:otherwise>
</xsl:template>
Создание сайтов в Хабаровске - http://web-alt.ru
#
Re: Фотогалерея. Как проскочить последнюю группу
web-alt писал(а):
как я понимаю говорит о том что и элементы он пытается вывести, просто они не заведены в самой ИС. Это так?Вы точно завели сами информационные элементы в ИС?

Не так. Элементы заведены точно, 12 штук. О чем и говорит:
Цитата:

            <name>Вечеринка № х</name>
...
            <count_items>12</count_items>
            <count_all_items>12</count_all_items>

Т.е. всего в подгруппе 12 элементов. Но в XML они не попадают. Видимо так сформирован запрос:
Цитата:
/* Отображаем информационную систему */
$GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, $GLOBALS['INFSYS_result']['group'], $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);

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

Кстати, Вы навели меня на мысль, по поводу проверки на подгруппы:
Можно проще - если <count_groups>0</count_groups>, значит текущая группа не содержит подгрупп.

По поводу формирования ссылки на элемент - попробую, спасибо!
#
Re: Фотогалерея. Как проскочить последнюю группу
VolT писал(а):
Можно проще — если <count_groups>0</count_groups>, значит текущая группа не содержит подгрупп
Ну да,в принципе тоже самое, может даже работать будет чуть быстрее, только если честно не знаю какая разница между:
            <count_groups>0</count_groups>
            <count_all_groups>0</count_all_groups>



VolT писал(а):
Нужно как-то изменить запрос, чтобы в результат попадал еще и первый элемент текущей группы.
Нет, тут явно какое-то несоответствие в XML. Я смотрю она уже изменилась.Сейчас
<count_items>12</count_items>
<count_all_items>12</count_all_items>

А было
<count_items>0</count_items>
<count_all_items>12</count_all_items>



Ну теперь о грустном. Мы сможем увидеть только элементы текущей группы, а элементы подгрупп и других групп мы не увидим. Я уже с этой проблемой сталкивался, и по мне, так это несколько неправильная организация. Отвечает за это переменная $GLOBALS['INFSYS_result']['group']. В принципе логично что мы передаем родительскую группу, и отображаются только её элементы. Но так как нам нужны елементы подгрупп, делаем следующим образом:
-----------------------
/* Отображаем информационную систему */
$external_propertys['МойНовыйПапа'] = $GLOBALS['INFSYS_result']['group'];
$GLOBALS['LA_InformationSystem']->ShowInformationSystem($InformationSystem_id, false, $xsl_list, $InformationResult['items_on_page'], $InformationResult['items_begin'], $external_propertys, $property);


Таким образом родительский элемент у нас будет не в "/document/blocks/parent_group_id" , а в "/document/МойНовыйПапа". От него выбоку в XSL и будем делать.
Надеюсь понятно объяснил?


+
Обратите внимание на жирный false
Создание сайтов в Хабаровске - http://web-alt.ru
Авторизация