Вывод в меню структуры второго уровня.

Модератор
#
Re: Вывод в меню структуры второго уровня.
Sibirskiy,
1. Нужно включить передачу таких данных в XML, см. код типовой дин. страницы карты сайта.
2. В XSL-шаблоне посмотрите пример карты сайта, там как раз аналогичная ситуация.
#
Re: Re: Вывод в меню структуры второго уровня.
как я понял нужно передать данные showInformationsystemItems, подскажите пожалуйста как это реализовать?
как-то по аналогии с узлами структуры?

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <xsl:template match="/site">
      <ul class="top_menu">
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="structure[show=1]" />
      </ul>
   </xsl:template>
   <xsl:template match="structure" mode="sub">
      <li>
         <a href="{link}" title="{name}" hostcms:id="{@id}" hostcms:field="name" hostcms:entity="structure">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
      </li>
   </xsl:template>
   <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
   <xsl:variable name="current_structure_id" select="/site/current_structure_id"/>
   <xsl:template match="structure">
      
      <li> <!--
         Выделяем текущую страницу добавлением к li класса current,
         если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей группе.
         -->
         <xsl:if test="$current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
            <xsl:attribute name="class">current</xsl:attribute>
         </xsl:if>
         
         <xsl:if test="position() = last()">
            <xsl:attribute name="style">background-image: none</xsl:attribute>
         </xsl:if>
         
         <!-- Определяем адрес ссылки -->
         <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>
         <xsl:choose>
            <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
            <xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">
            <a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></xsl:when>
            <!-- Иначе обычный вывод с пустым стилем -->
            <xsl:otherwise>
               <a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
            </xsl:otherwise>
         </xsl:choose>
         
         
         
         <!-- Если не показывать ссылку - выводим просто имя ссылки -->
         <xsl:if test="show_link=0">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </xsl:if>
         
         
         
         <!-- Выбираем подузлы структуры -->
         <xsl:if test="count(structure[show=1]) > 0">
            <ul>
               <!-- Выбираем узлы структуры -->
               <xsl:apply-templates select="structure[show=1]"/>
            </ul>            
         </xsl:if>


      </li>
   </xsl:template>
</xsl:stylesheet>
Модератор
#
Re: Вывод в меню структуры второго уровня.
Sibirskiy, какой showInformationsystemItems, если у Вас шестая версия?
Вы посмотрели типовую карты сайта, на которую я ссылался в предыдущем ответе?!
#
Re: Вывод в меню структуры второго уровня.
смотрел, а как тогда в XSL-шаблоне это вывести?
<?php

$Structure_Controller_Show = new Structure_Controller_Show(
      Core_Entity::factory('Site', CURRENT_SITE)
   );
$Structure_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName(Core_Page::instance()->libParams['xsl'])
   )
   ->parentId(Core_Page::instance()->libParams['structureParentId'])
   // Показывать группы информационных систем в карте сайта
   ->showInformationsystemGroups(Core_Page::instance()->libParams['showInformationsystemGroups'])
   // Показывать элементы информационных систем в карте сайта
   ->showInformationsystemItems(Core_Page::instance()->libParams['showInformationsystemItems'])
   // Показывать группы магазина в карте сайта
   ->showShopGroups(Core_Page::instance()->libParams['showShopGroups'])
   // Показывать товары магазина в карте сайта
   ->showShopItems(Core_Page::instance()->libParams['showShopItems'])
   ->show();
#
Re: Вывод в меню структуры второго уровня.
ну подскажите пожалуйста что нужно в xsl-шаблоне прописать
Модератор
#
Re: Вывод в меню структуры второго уровня.
Sibirskiy,
посмотреть в XSL-шаблоне карты сайта, пишу уже третий раз об этом!
#
Re: Вывод в меню структуры второго уровня.
я только узел структуры там вижу
<xsl:apply-templates select="child::*[show=1]"/>

если добавить, то в подменю все пункты структуры дублируются, но не Инф.Сис.
и причем здесь тогда тип. дин. страница???

я конечно глубоко понимаю что Вы мегаразработчики, наизусть всю HostCMS знаете, и не обязаны отвечать на форуме обычным смертным, но разве так трудно подсказать код?

з.ы. даже если скопировать весь XSL-шаблон из карты сайта, все равно структуру ИС не показывает
Модератор
#
Re: Вывод в меню структуры второго уровня.
Sibirskiy писал(а):
я только узел структуры там вижу

давайте уточним, Вы узел структуры видите в XML или XSL?
Начните с XML, в нем после передачи соответствующих параметров в типовой дин. странице Вы должны видеть узлы структуры + инфогруппы, инфоэлементы и аналогично для магазина.
Если нет, значит не переданы параметры показа в типовой, если есть, то XSL вносите код, аналогичный карте сайта и все должно заработать.
#
Re: Вывод в меню структуры второго уровня.
HostCMS писал(а):
Начните с XML

Почему-то не показывает XML.
У меня выводится один уровень структуры.
Кликаю на иконку, разворачивается окошко. Но окошко пустое и в нем ничего нет.
В чем может быть проблема?

Или может подскажете, как мне вывести ещё один уровень структуры (ниже) в виде дерева. А то без XML вообще не могу сориентироваться.
Модератор
#
Re: Вывод в меню структуры второго уровня.
Stepan0v,
по вопросу проблем с показом XML обратитесь в поддержку с данными доступа.
Авторизация