Предлагаю вариант вывода меню магазина в виде раскрывающегося списка средствами JS+XSL
Приведенный метод будет полезен в рервую очередь тем, у кого длинный список категорий товаров и доступ к категориям необходим сквозной на всех страницах, но длииные списки портят общую картину.
Пример реализации можно посмотреть на сайте
Итак, приступим...
Вывод в макете сайта:
<?php
// находим локацию относительно каталога товаров
$current_shop_id = to_int($GLOBALS['LA']['shop_id']);
$shop = new shop();
$shop_item_path = $shop->GetItemPath($current_shop_id);
$external_propertys = array();
$external_propertys['shop_path']=array();
if($shop_item_path) {
$group_id=$shop_item_path['group'];
$parent_id=$group_id;
if($parent_id!=0) {
do {
$group_id=$parent_id;
$group=$shop->GetGroup($group_id);
$parent_id=$group['shop_groups_parent_id'];
} while($parent_id!=0);
$external_propertys['shop_path']['level']=1; // в подгруппе каталога
$external_propertys['shop_path']['group']=$group_id;
} else {
$external_propertys['shop_path']['level']=0; // в корне каталога
}
} else {
$external_propertys['shop_path']['level']=-1; // не в каталоге
}
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
<xsl:variable name="domen" select="/document/site/alias[@alias_current='1']/alias_name"/>
<tr>
<td width="100%">
<!-- Расчитываем размер отступа -->
<xsl:variable name="padding" select="level * 10"/>
<!-- Показывать ссылку, или нет -->
<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>
<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:if test="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
</div>
Это вывод данного меню через xsl-шаблон по имени "ЦентральноеМенюКаталог", код которого приведен выше, на основе структуры сайта. Возможно у вас немного другие входные данные. 1 - это ID сайта в системе (собственно структуру какого сайта выводить) а дальше все стандартно, как по мануалу.
Скрипт на яве взят как есть с гуглокода. править его особо резона небыло.
По поводу магазина - должен отображать. Там по сути JS - обертка для ветки магазина, взятой по принципу карты сайта, с добавлеными проверками. Смотрите XML, который отдается в меню. Если он там есть, значит надо смотркть XSL