Разделы в структуре "Ссылка на другой файл"

#
Разделы в структуре "Ссылка на другой файл"
Вопрос такой.
Имеется меню, часть пунктов которого - ссылки на некоторые группы информационных систем. Поскольку другая его часть - обычные пункты структуры, и группы выводятся в меню тоже не все и не у всех ИС, реализовано через добавление разделов структуры типа "Ссылка на другой файл". Недостаток такой реализации - раздел не определяется как активный при нахождении в нем, т.к., по-видимому, определение активности идет по пути. Вопрос: можно ли добавить определение активности еще и по пути редиректа? Примерно таким образом: сначала проверили по пути, и если раздел неактивен - то проверили еще и по редиректу. Если это возможно - подскажите способ реализации, плиз.
http://superweb.pro/ — сайты на HostCMS под ключ
Модератор
#
Re: Разделы в структуре "Ссылка на другой файл"
plasmamedia,
к сожалению не могу сказать - не очень понял структуру, можно передавать через внешние параметры путь, а потом просто путь узла сравнивать с переданным, если совпадает - выделять.
#
Re: Разделы в структуре "Ссылка на другой файл"
Все сделано стандартными средствами.
Скажем, есть ИС, в которой пять групп. И есть узел структуры, в который мне надо добавить три из этих групп и еще пару статичных страниц. Я статичные страницы привязываю к отдельным подузлам, а для групп создаю подузлы, в которых прописываю редиректы (последняя строчка при создании узла структуры типа "Страница". Это же стандартный функционал структуры, наверное, можно как-то этот путь получить в XML?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Разделы в структуре "Ссылка на другой файл"
HostCMS писал(а):
можно передавать через внешние параметры путь, а потом просто путь узла сравнивать с переданным, если совпадает — выделять


Решение работает. Подробности для тех, кому интересно:

В макете при вызове меню через внешний параметр передаем текущий путь:


        $Structure = & singleton('Structure');
   $param = array();
   $param['parent_id'] = 0;
   $external_propertys = array();
   $external_propertys['currentPath'] = $_SERVER['REQUEST_URI'];
   $Structure->ShowStructure(2,'MenuLeft',$param,$external_propertys);


В XSL-шаблоне добавляем проверку - содержит ли текущий путь XML из external_link:


<!-- Запишем в переменную текущий путь -->
<xsl:variable name="current_path">
   <xsl:value-of disable-output-escaping="yes" select="/document/currentPath"/>
</xsl:variable>


...


<xsl:choose>
<!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей, либо текущий путь содержит путь из external_link) -->
   <xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1 or contains($current_path,$link)">
       <a href="{$link}" class="act">
          <xsl:value-of disable-output-escaping="yes" select="name"/>
       </a>
   </xsl:when>
   <!-- Иначе обычный вывод с пустым стилем -->
    <xsl:otherwise>
       <a href="{$link}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
       </a>
    </xsl:otherwise>
</xsl:choose>
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Разделы в структуре "Ссылка на другой файл"
Кстати, этой проверки достаточно и для обычных, не перенаправляющих на другую страницу, узлов структуры. И для их "детей".
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Разделы в структуре "Ссылка на другой файл"
А то же самое, но для 6-ки как сделать?
У меня все несколько проще. В топ-меню разделы магазина, корень магазина (список групп) вообще не нужен, я его не отображаю.
Всего 4 раздела и соответственно 4 ссылки в структуре.
Пытался прописывать полный путь в поле "путь", но результата нет.
Модератор
#
Re: Разделы в структуре "Ссылка на другой файл"
PSin,
выделить текущую группу? Покажите код, которым вы отображаете меню.
Авторизация