CSS menu

#
CSS menu
Есть вот такое меню:
http://beholder-eye.info/2006/03/30/dropdown-menu-css (как сделано)
Вот так выглядит в конечном итоге:
http://beholder-eye.info/example/dropdown/4.htm (пример)

Интересует такой вопрос, каким образом именно к такому меню можно прикрутить систему чтобы при удалении (добавлении) разделов в меню также происходили изменения? Если кто-нибудь поможет - буду очень благодарен.
Модератор
#
Re: CSS menu
aNt1,
Что именно вызывает трудности?
#
Re: CSS menu
<?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">
      <!-- Выбираем узлы структуры -->
      <xsl:apply-templates select="structure[show=1]"/>
   </xsl:template>
   
   <xsl:template match="structure">
      
      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
      
      <!--div class="item_menu_div" id="menu_id_{@id}" onmouseover="MenuOver('menu_id_{@id}', 'child_menu_id_{@id}');" onmouseout="MenuOut('menu_id_{@id}', 'child_menu_id_{@id}');"-->
      <li>
         <!-- Показывать ссылку, или нет -->
         <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}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </xsl:if>
         
         <!-- Выводим подуровни меню -->
         <xsl:if test="count(structure[show = 1]) &gt; 0">
            
            <ul>
               <xsl:apply-templates select="structure[show=1]" mode="pool"/>
            </ul>
            <!--/div-->
         </xsl:if>
         
         <!-- Если не показывать ссылку - выводим просто имя ссылки -->
         <xsl:if test="show_link=0">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </xsl:if>
         <!--/div-->
      </li>
   </xsl:template>
   
   <xsl:template match="structure" mode="pool">
      <li>
         <!-- Показывать ссылку, или нет -->
         <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:if test = "not(position()=last())" >
               <a href="{$link}">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </a>
            </xsl:if><xsl:if test = "(position()=last())" >
               <a href="{$link}" class="last">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </a>
            </xsl:if>
            
         </xsl:if>
         
         <!-- Если не показывать ссылку - выводим просто имя ссылки -->
         <xsl:if test="show_link=0">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </xsl:if>
      </li>
   </xsl:template>
</xsl:stylesheet>

Вот XSL шаблон, CSS думаю не стоит сюда кидать, родительские категории отображаются, но мне нужно чтобы из 2ого уровня показывались разделы 3его, например

О КОМПАНИИ
- сотрудники
- ещё что-то
- история > создание компании
            директор компании
            адрес компании
Модератор
#
Re: CSS menu
в
<xsl:template match="structure" mode="pool">
перед
</li>
добавляем:
         <!-- Выводим подуровни меню -->
         <xsl:if test="count(structure[show = 1]) &gt; 0">
            <ul>
               <xsl:apply-templates select="structure[show=1]" mode="pool"/>
            </ul>
         </xsl:if>
#
Re: CSS menu
Спасибо, а есть вариант выводить подуровни только до 2ого уровня, как я показал?
#
Re: Re: CSS menu
Вернее есть ли вариант, чтобы 3й уровень меню открывался тоже только при наведении, а то я навожу на главный пункт меню, затем на вторичный и уже из него мне открывается и 3й и 4й сразу...
Модератор
#
Re: CSS menu
aNt1,
Вначале решите Ваш вопрос просто в HTML, а потом для него уже "накручивайте" XSL.

По вопросу определения уровня, чтобы выводить только нужного уровня - см. http://www.hostcms.ru/forums/22/111/ (в середине страницы есть пример).
Авторизация