<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>
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
<xsl:variable name="class" select="propertys/property[@name = 'css']/value"/> <!-- Определяем стиль вывода ссылки -->
<xsl:variable name="active">
<xsl:choose>
<!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
<xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">active</xsl:when>
<!-- Иначе обычный вывод с пустым стилем -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<li class="{$class} {$active}">
<!-- Показывать ссылку, или нет -->
<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="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
Дело в том что мне нужно:
При нахождении в разделе показывать только ЕГО подразделы. Сейчас я, находясь в "Каминах" вижу список разделов, касающихся интерьеров. Использование $param['parent_id'] = CURRENT_STRUCTURE_ID; мне не подходит, так как это скрывает верхний уровень, а он должен отображаться всегда. Видимо нужно задавать ID подразделов через внешние параметры select?
Выделять стилем текущий подраздел. Как это сделать, ума не приложу. Проверка
current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1 не подходит, так как current_structure_id всегда равно коду информационной системы, то есть целого портфолио. Я просмотрел XML, там нет идентификатора текущего подраздела (что довольно странно)
alexmak,
универсального шаблона для вывода многоуровневого меню нет, у одного пользователя он должен выглядеть по одному, у другого — иначе и так далее.
Вначале берут скрипт с многоуровневым выпадающим меню и делают из него XSL, а не наоборот.
Столько вопросов, проблем из-за меню. Мне кажется можно сделать какое-то одно общее меню, которое подойдет под многие задачи, обсуждаемые тут.
В Битриксе такое меню есть: задается кол-во вложенностей, горизонтальность-вертикальность, вывод определенных групп или в определенных группах, остается только настроить стиль в CSS. Там это давно все решено и нет ни у кого с ним проблем.
Мне вот надо вывести отдельно вложенное меню как у вас тут: но для информационной системы. Получается вывести только второй уровень, все остальные уровни не выводятся. Пол дня курил форум, но все задачи обсуждаются только для структуры сайта, а для ИС не нашел.
www.dsaleks.ru - создание сайтов и интернет-магазинов
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»;
}
}
Подключаю файл:
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»;
}
}