МЕНЮ / РАСКРЫВАЮЩЕЕСЯ ГОРИЗОНТАЛЬНОЕ МЕНЮ КАТАЛОГА ТОВАРОВ
Заметка создана: 14 января 2025 г.
PHP . Код вывода в макете
<?php
// Menu
// Разделы магазина
$Shop_Controller_Show = new Shop_Controller_Show(
Core_Entity::factory('Shop', 3)
);
$Shop_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName('МагазинГруппыТоваровМенюСайт2')
)
->groupsMode('all')
//->group(0)
->groupsForbiddenTags(array('seo_title', 'seo_description', 'seo_keywords', 'description'))
->associatedItems(FALSE)
->bonuses(FALSE)
->cart(FALSE)
->comments(FALSE)
->comparing(FALSE)
->favorite(FALSE)
->filterShortcuts(FALSE)
->groupsProperties(FALSE)
->groupsPropertiesList(FALSE)
->itemsProperties(FALSE)
->itemsPropertiesList(FALSE)
->modifications(FALSE)
->modificationsList(FALSE)
->siteuser(FALSE)
->siteuserProperties(FALSE)
->specialprices(FALSE)
->tags(FALSE)
->taxes(FALSE)
->viewed(FALSE)
->votes(FALSE)
->warehousesItems(FALSE)
->limit(0)
->show();
?>
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"
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"/>
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/site/current_structure_id"/>
<xsl:template match="/site">
<div class="mbr-navbar__column mbr-navbar__menu">
<nav class="mbr-navbar__menu-box mbr-navbar__menu-box--inline-right">
<div class="mbr-navbar__column">
<div class="container">
<ul class="nav nav-pills mbr-navbar__items mbr-buttons--freeze btn-decorator mbr-buttons--active">
<li class="mbr-navbar__item">
<a href="/" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href"><i class="fa fa-home"></i></a>
<i class="fa fa-circle"></i>
</li>
<!-- Выбираем узлы структуры первого уровня -->
<xsl:apply-templates select="structure[show=1]" />
</ul>
</div>
</div>
</nav>
</div>
</xsl:template>
<xsl:template match="structure">
<li class="mbr-navbar__item">
<xsl:if test="structure[show=1] or informationsystem_group[show=1] or shop_group[show=1]">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:if>
<xsl:if test="structure[show=1] and position() = 1">
<xsl:attribute name="class">dropdown first</xsl:attribute>
</xsl:if>
<xsl:if test="structure[show=1] and position() = last()">
<xsl:attribute name="class">dropdown last</xsl:attribute>
</xsl:if>
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внешняя ссылка -->
<xsl:when test="url != ''">
<xsl:value-of disable-output-escaping="yes" select="url"/>
</xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}" id="slide{@id}" class="mbr-buttons__link" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<xsl:if test="position() != last()">
<i class="fa fa-circle"></i>
</xsl:if>
<xsl:if test="structure[show=1]">
<ul class="dropdown-menu" id="menu1">
<xsl:apply-templates select="structure[show=1]" mode="submenu" />
</ul>
</xsl:if>
<xsl:if test="shop_group[show=1]">
<ul class="dropdown-menu">
<xsl:apply-templates select="shop_group" mode="group"/>
</ul>
</xsl:if>
<xsl:if test="informationsystem_group[show=1]">
<ul class="dropdown-menu">
<xsl:apply-templates select="informationsystem_group" mode="infogroup"/>
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="structure" mode="submenu">
<li>
<xsl:if test="structure[show=1]">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:if>
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внешняя ссылка -->
<xsl:when test="url != ''">
<xsl:value-of disable-output-escaping="yes" select="url"/>
</xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<xsl:choose>
<xsl:when test="structure[show=1]">
<i class="fa fa-angle-double-right"></i>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
<xsl:if test="structure[show=1]">
<ul class="dropdown-menu sub-menu">
<xsl:apply-templates select="structure[show=1]" mode="sub-submenu" />
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="shop_group" mode="group">
<li>
<xsl:if test="shop_group">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:if>
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внешняя ссылка -->
<xsl:when test="url != ''">
<xsl:value-of disable-output-escaping="yes" select="url"/>
</xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
<xsl:choose>
<xsl:when test="shop_group">
<i class="fa fa-angle-double-right"></i>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</a>
<xsl:if test="shop_group">
<ul class="dropdown-menu sub-menu">
<xsl:apply-templates select="shop_group" mode="sub-group"/>
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="shop_group" mode="sub-group">
<li>
<!-- Ссылка на пункт меню -->
<a href="{url}" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</li>
</xsl:template>
<xsl:template match="informationsystem_group" mode="infogroup">
<li>
<xsl:if test="informationsystem_group">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:if>
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внешняя ссылка -->
<xsl:when test="url != ''">
<xsl:value-of disable-output-escaping="yes" select="url"/>
</xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Ссылка на пункт меню -->
<a href="{$link}" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
<xsl:choose>
<xsl:when test="informationsystem_group">
<i class="fa fa-angle-double-right"></i>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</a>
<xsl:if test="informationsystem_group">
<ul class="dropdown-menu sub-menu">
<xsl:apply-templates select="informationsystem_group" mode="sub-infogroup"/>
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="informationsystem_group" mode="sub-infogroup">
<li>
<!-- Ссылка на пункт меню -->
<a href="{url}" title="{name}" data-toggle="dropdown" class="dropdown-toggle" onclick="location.href = this.href">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</li>
</xsl:template>
</xsl:stylesheet>