Древовидный вывод меню магазина

#
Re: Древовидный вывод меню магазина
HostCMS писал(а):
compaq,
а самих товаров в XML нет! Т.е. можно указать сколько их выбирать из всех групп. Или нужно вывести только из текущей группы?


не совсем понял.. есть необходимость на всем сайте отобразить блок со списком товаров и если есть группы то и их отобразить с товарами

пример:


товар
товар
товар
товар
товар
группа товаров
товар
товар
товар
товар
группа товаров
товар
товар
товар
товар


ку
Модератор
#
Re: Древовидный вывод меню магазина
compaq,
Т.е. Вам нужны все группы и подгруппы товаров вместе с товарами? И они должны выводиться всегда?
Тогда проще показать через карту сайта, указав в качестве родительского узла структуры идентификатор узла структуры с магазином.
#
Re: Древовидный вывод меню магазина
HostCMS писал(а):
compaq,
Т.е. Вам нужны все группы и подгруппы товаров вместе с товарами? И они должны выводиться всегда?


ага

<?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="/document">

      <h1>Карта сайта</h1>

      <ul>
         <!-- Выбираем узлы структуры -->
         <xsl:apply-templates select="structure[show=1]"/>
      </ul>
   </xsl:template>

   <xsl:template match="structure">
      <li>
         <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
         <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>

         <!-- Расчитываем размер отступа -->
         <xsl:variable name="padding" select="level * 10"/>

         <!-- Показывать ссылку, или нет -->
         <xsl:if test="show_link = 1">

            <!-- Определяем адрес ссылки -->
            <xsl:variable name="link">
               <xsl:choose>
                  <!-- Если внешняя ссылка -->
                  <xsl:when test="is_external_link=1">
                     <xsl:value-of disable-output-escaping="yes" select="external_link"/>
                  </xsl:when>
                  <!-- Иначе если внутренняя ссылка -->
                  <xsl:otherwise>
                     <xsl:value-of disable-output-escaping="yes" select="link"/>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:variable>

            <!-- Определяем стиль вывода ссылки -->
            <xsl:variable name="link_style">
               <xsl:choose>
                  <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
                  <xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">font-weight: bold</xsl:when>
                  <!-- Иначе обычный вывод с пустым стилем -->
                  <xsl:otherwise></xsl:otherwise>
               </xsl:choose>
            </xsl:variable>

            <a href="{$link}">
               <span style="{$link_style}">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </span>
            </a>
         </xsl:if>

         <!-- Если не показывать ссылку - выводим просто имя ссылки -->
         <xsl:if test="show_link=0">
            <!-- <img border="0" src="/images/menu_point.gif" class="menu_point" width="4" height="7" /> -->
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </xsl:if>


         <!-- ЕСЛИ ДОШЛИ ДО СЕРЕДИНЫ СПИСКА -->

         <!-- Если не надо разравать колонку на вторых уровнях, то указать: -->
         <!-- <xsl:if test="position() = round(count(/document/structure) div 2)"> -->
         <!--
   <xsl:if test="level = 0 and position() = round(count(/document//structure) div 2)">
      <xsl:text disable-output-escaping="yes">
         &lt;/td&gt;
         &lt;td valign="top" style="padding-left: 20px"&gt;
      </xsl:text>
   </xsl:if>
   -->

         <!-- Выбираем подузлы структуры -->
         <xsl:if test="count(structure[show=1]) &gt; 0">
            <ul>
               <!-- Выбираем узлы структуры -->
               <xsl:apply-templates select="structure[show=1]"/>
            </ul>
         </xsl:if>
      </li>
   </xsl:template>
</xsl:stylesheet>


вот карта сайта - какие изменения надо внести?
а вызов в макете каков будет так же

честно говоря я запутался уже..
ку
Модератор
#
Re: Древовидный вывод меню магазина
compaq,
А изменения только при вызове метода нужно внести, указав родительскую группу.
Как - см API, метод ShowStructure()
А сам код показа посмотрите в типовой динамической странице карты, адаптировав его для себя (явно указав значения нужных параметров). Там все очень просто.
#
Re: Древовидный вывод меню магазина
все я сдаюсь это мне времени еще на месяц понимать что происходить - помогите пожалуйста в который за молю в этом топике...


<?php
$Structure = & singleton('Structure');

$xsl = to_str($GLOBALS['LA']['xsl']);

$param = array();

/* Показывать группы информационных систем в карте сайта */
$param['show_groups'] = to_bool($GLOBALS['LA']['show_groups']);

/* Показывать элементы информационных систем в карте сайта */
$param['show_items'] = to_bool($GLOBALS['LA']['show_items']);

/* Показывать группы магазина в карте сайта */
$param['show_shop_groups'] = to_bool($GLOBALS['LA']['show_shop_groups']);

/* Показывать товары магазина в карте сайта */
$param['show_shop_items'] = to_bool($GLOBALS['LA']['show_shop_items']);

$structure_parent_id = to_int($GLOBALS['LA']['structure_parent_id']);

if ($structure_parent_id != 0)
{
   $param['parent_id'] = $structure_parent_id;
}

$Structure->ShowStructure(false, $xsl, $param);
?>


не понимаю.. точней понимаю малость что происходит но не решу этот вопрос точно сам сейчас
ку
Модератор
#
Re: Древовидный вывод меню магазина
<?php
$Structure = & singleton('Structure');

$xsl = "ИмяXSLШаблонаКартыСайта";

$param = array();

/* Показывать группы информационных систем в карте сайта */
$param['show_groups'] = false;

/* Показывать элементы информационных систем в карте сайта */
$param['show_items'] = false;

/* Показывать группы магазина в карте сайта */
$param['show_shop_groups'] = true;

/* Показывать товары магазина в карте сайта */
$param['show_shop_items'] = true;

$structure_parent_id = 123; // Здесь идентификатор узла структуры магазина

$param['parent_id'] = $structure_parent_id;

$Structure->ShowStructure(false, $xsl, $param);
?>
#
Re: Древовидный вывод меню магазина
HostCMS писал(а):
<?php
$Structure = & singleton('Structure';

$xsl = "ИмяXSLШаблонаКартыСайта";

$param = array();

/* Показывать группы информационных систем в карте сайта */
$param['show_groups'] = false;

/* Показывать элементы информационных систем в карте сайта */
$param['show_items'] = false;

/* Показывать группы магазина в карте сайта */
$param['show_shop_groups'] = true;

/* Показывать товары магазина в карте сайта */
$param['show_shop_items'] = true;

$structure_parent_id = 123; // Здесь идентификатор узла структуры магазина

$param['parent_id'] = $structure_parent_id;

$Structure->ShowStructure(false, $xsl, $param);
?>


написал сгоряча и позже стало ясно после нескольких ошибок - спасибо,но проблема остается и вопрос

проблема - как убрать прайслист в получившемся меню тк он в структуре есть и активен

и как сделать сортировку - допустим у меня получилось сейчас

прайслист
группа
группа
группа
товар
товар
товар
товар
товар
товар

группы ниже товаров расположить нужно например

- в админке у меня тоже самое расположение сейчас групп и товаров и сортировка почему-то не помогает (я про поле Сортировка где числа указывать можно)
ку
#
Re: Древовидный вывод меню магазина
эни хелп?
........................

честно говоря хотелось получить помощи как реализовать задачу собственно заданную в первом сообщении топикстартера

задачу на примере уже имеющегося варианта от Varkolak http://hostcms.ru/forums/22/1997/

только добавить вывод еще и товаров!
тк хотелось далее поэкспериментировать именно с тем вариантом шаблона а не с картой

а сейчас только лишние проблемы возникают 8(
ку
Модератор
#
Re: Древовидный вывод меню магазина
compaq,
я еще раз повторяю, при выводе всех групп там нет товар, иначе пришлось бы выбирать все товары, а это будет большая нагрузка. Я выше показал пример решения вопроса, compaq писал(а):
— в админке у меня тоже самое расположение сейчас групп и товаров и сортировка почему-то не помогает (я про поле Сортировка где числа указывать можно)

Порядки сортировки у групп и элементов НЕ СВЯЗАНЫ друг с другом.
#
Re: Древовидный вывод меню магазина
апну тему клиент достал менять решения а я не могу сразу решить задачу поставленную

итого надо - вывести в макете всю структуру магазина
вида

название магазина
товар
товар

группа
товар
товар

группа
товар
товар


я не совсем понимаю как сделать так
подскажите решение
ку
Авторизация