Добрый день!
Стандартный xsl-шаблон "МагазинГруппыТоваровНаГлавной" выводит группы товаров, а при клике по ним разворачиваются подгруппы. При повторном клике по родительской группе, подгруппы сворачиваются.
Необходимо сделать, чтобы подгруппы разворачивались не при клике, а при наведении мыши. А сворачивались при наведении на другую группу или выхода курсора мыши за пределы меню. Выглядеть должно аналогично верхнему меню на сайте hostcms.ru Только с группами и подгруппами магазина.
Код xsl шаблона:
<?xml version="1.0" encoding="utf-8"?>
<!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="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<!-- МагазинГруппыТоваровНаГлавной -->
<xsl:template match="/">
<xsl:apply-templates select="/shop"/>
</xsl:template>
<!-- Шаблон для магазина -->
<xsl:template match="/shop">
<SCRIPT>
<xsl:comment>
<xsl:text disable-output-escaping="yes">
<![CDATA[
function show_hide_menu(id)
{
if (obj = document.getElementById(id)) {
obj.style.display == 'none' ? obj.style.display = 'block' : obj.style.display = 'none';
return false; }
return true;
}
]]>
</xsl:text>
</xsl:comment>
</SCRIPT>
<h2><a href="{path}" title="Каталог">Каталог </a></h2>
<ul class="left_menu" id="shop_menu">
<xsl:apply-templates select="group"/>
</ul>
</xsl:template>
<!-- Шаблон для групп товара -->
<xsl:template match="group">
<li>
<!-- Если это подпункт (родитель не равен 0) - выводим слева от него тире -->
<xsl:if test="@parent != 0">
—
</xsl:if>
<a href="{/shop/path}{fullpath}" onClick="return show_hide_menu('{@id}');">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<!-- Если есть подгруппы -->
<xsl:if test="group">
<ul class="left_menu gray_link gray" id="{@id}" style="display: none;">
<xsl:apply-templates select="group"/>
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
Путем замены
onClick="return show_hide_menu('{@id}'

;"> на
onmouseover="return show_hide_menu('{@id}'

;"> удалось добиться раскрывания меню при наведении. Скрывается при повторном наведении. А вот как сделать, чтобы скрывалось, при наведении на другую группу или при выходе за рамки меню?
Подскажите, пожалуйста!