Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Puma писал(а):
как проверить срабатывает JS или нет?
- проверить можно с помощью такого расширения для браузера как Firebug для Mozilla Firefox. Puma писал(а):
ну может кто подскажет в чем может быть проблема?
- на вашем сайте JavaScript для меню работает корректно. А причина проблемы в классе стилей art-menu, используемом у вас для тега ul. Если вы временно уберете указание этого класса для вашего меню, то оно в итоге отобразится вертикально, но при этом при наведении на его пункты "Производители" и "Котята" из них будут выпадать подпункты. Что конкретно там не так с этими стилями, мне неизвестно, но причина проблемы в любом случае не в системе управления.
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Ребята, нужно сделать пункт подменю на сайте zvk-market.ru . Нужно, чтобы при наведении на пункт меню, вниз вылазило подменю. Пример: http://www.barberstudio.ru/ ICQ 599-360-699 Дмитрий
Создание сайтов под ключ, обслуживание и продвижение, доработка функционала
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
ребята перечитал весь форум попробывал так и сяк но ничего не выходит...Нужно выподающее меню как на сайте у разработчика www.hostcms.ru что я делаю не так? Помогите пожалуйста.... первый раз использую HOSTCMS
создал файл menu.js и поместил его в /images/
содержимое файла
function SlideLayer (Num)
{
var el = document.getElementById (Num);
if (el.style.display=='none')
{
el.style.display='block';
el.style.position='absolute';
}
}
function SlideLayerHide (Num)
{
var el = document.getElementById (Num);
if (el.style.display=='block')
{
el.style.display='none';
el.style.position='absolute';
}
}
<xsl:template match="/document">
<ul class="top_menu gray_link">
<!-- Выбираем узлы структуры первого уровня -->
<xsl:apply-templates select="structure[show=1]"/>
</ul>
</xsl:template>
<xsl:template match="structure">
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
<li>
<!--
Выделяем текущую страницу добавлением к li класса red_li,
если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей uheggt.
-->
<xsl:if test="current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
<xsl:attribute name="class">red_li</xsl:attribute>
</xsl:if>
<div>
<div>
<!-- Показывать ссылку, или нет -->
<xsl:choose>
<xsl:when 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>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:when>
<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:otherwise>
</xsl:choose>
</div>
</div>
</li>
</xsl:template>
</xsl:stylesheet>
Вроде все сделал как у вас тут написано но увы.. на страницы вываливает вот такую клаку:
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: input conversion failed due to input error, bytes 0x98 0xD0 0xBD 0xD0 в файле /home/................/Xsl.class.php (строка 267)
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: input conversion failed due to input error, bytes 0x98 0xD0 0xBD 0xD0 в файле /home/.................../public_html/modules/Xsl/Xsl.class.php (строка 267)
........................... и так далее
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Помогите пожалуйста усовершенствовать выпадающее меню.
Я сделал меню используя метод который предложила natalya. Все хорошо получилось. Но заказчик попросил меня изменить меню, чтобы было легче осуществлять навигацию по сайту.
На сайте очень сложная многоуровневая структура и много веток. Структура ветки следующая: Информационная система >> Информационная группа >> Информационная группа >> Информационный элемент
Мне нужно чтобы в меню отображалась многоуровневая структура вплоть до второй вложенной информационной группы. (Я выделил жирным шрифтом)
Далее я приведу два рисунка:
1 рис. - то что у меня получилось
2 рис. - то чего нужно добиться
Надеюсь на вашу помощь. И вообще этот вариант меню наверное не мне одному может понадобиться. Так что это полезно для всех.
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Зашел в тупик. Подскажите как выбраться.
Попытался реализовать выпадающее многоуровневое меню меню использовав xsl шаблон карты сайта.
Нашел сначала джава скрипт меню Вот его пример А это его файлы
Я начал изменять шаблон под данное меню. И до конца не могу довести, не могу сообразить как присвоить другой стиль подгруппе, так как в карте сайта происходит своего рода зацикливание и в результате все меню сваливается в кучу.
<!-- Выбираем узлы структуры -->
<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: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 class="top_link" href="{$link}">
<span class="down">
<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>
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Написал этот пост и через час нашел другое решение.
Просто взял другой скрипт
Там не требуется такого умопомрачения с css. Там достаточно назначить 2 стиля. Один на меню другой на субменю.
Так что вопрос снят. Извините за беспокойство
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Попробовал реализовать пример lozoffoy по инфосистемам, и не работает...
Непонятно, что делаю не так.
Создал шаблон со всеми оговорками вроде тега SCRIPT и т.п.
Назначаю элементу структуры сайта, связанному с инфосистемой, новую закладку, а в макете сайта вызываю ее с созданным макетом, например:
<!-- Показывать ссылку, или нет -->
<xsl:choose>
<xsl:when 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>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</xsl:when>
<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="count(structure) > 0">
<ul>
<!-- Выбираем узлы структуры -->
<xsl:apply-templates select="structure"/>
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
Все скрипты подключены, но увы не работает выпадающее меню, пунктам меню, где имеется подменю, должен присваиваться класс: pull-down, а при наведении еще класс: selected, но этого не происходит.
В чем загвоздка?
Re: Реализация выпадающего меню на базе структуры сайта с помощью xsl-шаблона
Вышеприведенный вопрос решен, кому интересно в icq...
Однако появилась еще 1-а проблема, как сделать в меню чтобы 1-ый пункт меню не был ссылкой, т.е.:
<ul>
<li>Дрова
<ul>
<li><a>Береза</a></li>
</ul>
</li>
</ul>
Вот мой код XSL: