Ещё один вопрос...

#
Ещё один вопрос...

Здравствуйте ещё раз!
У меня появился вот такой вопрос.
Хочу организовать прайс-лист на сайте вот таким образом, допустим, для примера:
Каталог товаров:
   Комплектующие
         Модемы
                 Zyxel
                 Acorp
         HDD
               Seagate
               Samsung

и т.д.
Можно ли так сделать? Т.е. чтобы в подменю Каталога Товаров было ещё несколько подменю. Если да, то каким образом?
Ещё раз заранее спасибо!!!!
Модератор
#
Re: Ещё один вопрос...
Алексей,
Создаете сколько нужно групп в информационных системах а потом выводите их на страницу обычным методом показа информационной системы. В XSL шаблоне выводите не только подгруппы текущего уровня, но и все группы (в XSL хранится полное дерево групп).
#
Re: Ещё один вопрос...
Спасибо! С группами немного разобрался.
Теперь дальше такой вопрос, хотелось бы сделать, чтобы группы изображались, как подгруппы(т.е. там идёт xsl-шаблон табличкой "Название" "Изображение" и "Цена", а подгруппы изображались как группы. Вот не разберусь, как это сделать ибо в xsl я новичок.
Модератор
#
Re: Ещё один вопрос...
Родительская группа имет ID родителя = 0 (выведите XML, многое станет понятно), в соответствии с этим Вы можете приметь то или иное форматирование (проверяете, родительская - одно форматирование), дочерняя - другое.
#
Re: 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 method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="/document">

<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:param 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>
</xsl:if>

<!-- ============= -->
<!-- Путь к гурппе -->
<!-- ============= -->

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

<p/>

<!-- ========= -->
<!-- Подгруппы -->
<!-- ========= -->

<!-- Отображение подгрупп данной группы -->
<table border="0" cellspacing="0" cellpadding="2">
   <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="goups"/>
</table>

<p/>

<!-- ======================================================== -->
<!-- Отображение записи информационного блока -->
<!-- ======================================================== -->

<!-- если есть элементы для отображения -->
<xsl:if test="count(blocks/items/item[item_status=1]) > 0">

   <table border="0" cellspacing="0" cellpadding="5" class="news_table">
   <tr>
   <td style="background-color: #eeeeee;"><b>Название</b></td>
   <td style="background-color: #eeeeee;"><b>Изображение</b></td>
   </tr>
         <xsl:apply-templates select="blocks/items/item[item_status=1]" />
   </table>

</xsl:if>


<!-- ======================================================== -->
<!-- Строка ссылок на другие страницы архива -->
<!-- ======================================================== -->

<xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1">
<xsl:if test="blocks/items/count_items > blocks/items/items_on_page">
        <xsl:call-template name="for">
          <xsl:with-param name="n" select="blocks/items/count_items div blocks/items/items_on_page"/>
          <xsl:with-param name="current_page" select="blocks/items/current_page"/>
        </xsl:call-template>
</xsl:if>
</xsl:if>

<!-- ======================================================== -->
<!-- Ссылка на архив -->
<!-- ======================================================== -->

<xsl:if test="ОтображатьСсылкуНаАрхив=1">
        <p/><a href="{blocks/url}">Архив "<xsl:value-of
disable-output-escaping="yes" select="blocks/name"/>"</a>
</xsl:if>
</xsl:template>


<!-- ======================================================== -->
<!-- Шаблон вывода записей -->
<!-- ======================================================== -->
<xsl:template match="blocks/items/item">

<!-- определение стиля для черезстрочного выведения фона -->
<xsl:variable name="style">
   <xsl:choose>
   <xsl:when test="position() mod 2 = 0">background-color: #ffffff;</xsl:when>
   <xsl:otherwise></xsl:otherwise>
   </xsl:choose>
</xsl:variable>

<tr>

<!-- Первая ячейка - название и описание товара -->
<td style="{$style}">
   <strong><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></strong>

   <!-- описание товара -->
   <br />
   <xsl:value-of disable-output-escaping="yes" select="item_description"/><br/>
</td>

<!-- Вторая ячейка - изображение товара -->
<td style="{$style}">
   <xsl:if test="item_small_image!=''">
      <a href="{item_path}"><img style="padding-right:10px; padding-bottom:10px;" src="/{item_small_image}"/></a>
   </xsl:if>
</td>

<!-- Третья ячейка - цена товара -->
<td style="{$style}">
   <!-- Валюта (дополнительное свойство) -->
   <xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property/currency"/>

   <!-- Сама цена (дополнительное свойство) -->
   <xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property/price"/>
</td>

</tr>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goup_path">
   <xsl:param 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>

   ->

   <a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгурппы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goups">
<tr>
   <xsl:param name="parent_id" select="@parent_id"/>

   <td valign="bottom">
      <xsl:if test="small_image!=''">
         <a href="/upload/{big_image}" 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>
   </td>
</tr>
</xsl:template>

<!-- ======================================================== -->
<!-- Цикл для вывода строк ссылок -->
<!-- ======================================================== -->

<xsl:template name="for">
        <xsl:param name="i" select="0"/>
        <xsl:param name="n"/>
        <xsl:param name="current_page"/>

        <xsl:if test="$n > $i">
                <!-- Ставим ссылку на страницу-->
                <xsl:if test="$i != $current_page">
                        <a href="?page={$i}">
                        <xsl:value-of select="$i+1"/>
                        </a>
                </xsl:if>

                <!-- Не ставим ссылку на страницу-->
                <xsl:if test="$i = $current_page">
                        <xsl:value-of select="$i+1"/>
                </xsl:if>

                &#xA0;

                <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
                <xsl:call-template name="for">
                        <xsl:with-param name="i" select="$i + 1"/>
                        <xsl:with-param name="n" select="$n"/>
                        <xsl:with-param name="current_page" select="$current_page"/>
                </xsl:call-template>
        </xsl:if>
</xsl:template>

</xsl:stylesheet>

Вот XML-код, я в нём ничего не менял.....
Нужно, чтобы шаблон подгруппы применялся к родительской группе, вот.....и наоборот
Модератор
#
Re: Ещё один вопрос...
Алексей,
это XSL шаблон, XML код Вы можете получить добавлением к строке в браузере /?show_xml=1 и разрешении вывода XML в константах.
#
Re: Ещё один вопрос...
Мне сюда вам вывести XML код? И каким образом при помощи XML я могу поставить форматирование подгруппы за место родительского?
Модератор
#
Re: Ещё один вопрос...
Алексей писал(а):
Мне сюда вам вывести XML код?

или выслать в Support

Алексей писал(а):
И каким образом при помощи XML я могу поставить форматирование подгруппы за место родительского?

Это можно сделать с помощью XSL, посмотрев на те данные, которые имеются в XML.
Модератор
#
Re: Ещё один вопрос...
Алексей,
Вы разобрались?
Авторизация