Как отсекать корневую папку в хлебных крошках?

#
Как отсекать корневую папку в хлебных крошках?
Здравствуйте! Ситуация такая. Есть меню. Многие пункты не имеют конкретной ссылки т.к. они не должны вести куда-то, а просто выполняют функцию для выпадающего меню. Так вот. Все бы ничего,но корневой пункт отображается в хлебных крошках. Вопрос, как на уровне ТДС или XSL хлебных крошек, убрать корневой раздел?
Модератор
#
Re: Как отсекать корневую папку в хлебных крошках?
В XSL-шаблоне добавьте проверку на тот путь, что у документов, и если это они, то просто не выводите элемент, но выводите последующие.
#
Re: Как отсекать корневую папку в хлебных крошках?
HostCMS, Цитата:
добавьте проверку на тот путь
т.е. указывать url напрямую или как?

Сейчас 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"/>

   <!-- Хлебные крошки -->

   <xsl:template match="/site">
      <xsl:if test="count(*[@id]) &gt; 0">
         <a href="/">Главная</a>
         <xsl:apply-templates select="*[@id]" />
      </xsl:if>
   </xsl:template>

   <xsl:template match="*">

      <!-- Определяем адрес ссылки -->
      <xsl:variable name="link">
         <xsl:choose>
            <!-- Если внутренняя ссылка -->
            <xsl:when test="link != ''">
               <xsl:value-of disable-output-escaping="yes" select="link"/>
            </xsl:when>
            <!-- Если внешняя ссылка -->
            <xsl:otherwise>
               <xsl:value-of disable-output-escaping="yes" select="url"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>

      <span><xsl:text> → </xsl:text></span>

      <!-- Показывать ссылку? -->
      <xsl:choose>
         <xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id][link/node() or url/node()]) &gt; 0">
            <a href="{$link}">
               <xsl:value-of select="name"/>
            </a>
         </xsl:when>
         <xsl:otherwise>
            <xsl:value-of select="name"/>
         </xsl:otherwise>
      </xsl:choose>

      <xsl:apply-templates select="*[@id][link/node() or url/node()]" />

   </xsl:template>
</xsl:stylesheet>
Модератор
#
Re: Как отсекать корневую папку в хлебных крошках?
Вы хотите убрать некий конкретный путь, полагаю системе нужно сообщить об этом решении. Проверять можете на @id, можете на путь, можете хоть на название, решать вам.
#
Re: Как отсекать корневую папку в хлебных крошках?
HostCMS, суть в том,что я не могу понять вот что. Как проверить корень? Вот например тут идет проверка, типа если это еще не конечная точка, то выводим в виде ссылки, а если конец, то просто текст:
<xsl:choose>
         <xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id][link/node() or url/node()]) &gt; 0">
            <a href="{$link}">
               <xsl:value-of select="name"/>
            </a>
         </xsl:when>
         <xsl:otherwise>
            <xsl:value-of select="name"/>
         </xsl:otherwise>
      </xsl:choose>


Как к условию
<xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id][link/node() or url/node()]) &gt; 0">
  добавить,то что отсекаем первую ссылку?
#
Re: Как отсекать корневую папку в хлебных крошках?
HostCMS, в поиске по форуму наткнулся на это http://www.hostcms.ru/forums/2/10254/#62209 , но там идет последний путь
  
Модератор
#
Re: Как отсекать корневую папку в хлебных крошках?
а вам надо весь <xsl:choose> брать в отдельное условие!
#
Re: Как отсекать корневую папку в хлебных крошках?
HostCMS, так я <xsl:choose> и взял.


<xsl:if test="count(*[@id][link/node() or url/node()]) = 0">
         <span><xsl:text> → </xsl:text></span>

         <!-- Показывать ссылку? -->
         <xsl:choose>
            <xsl:when test="(show = 1 or active/node() and active = 1) and count(*[@id][link/node() or url/node()]) &gt; 0">
               <a href="{$link}">
                  <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>
Модератор
#
Re: Как отсекать корневую папку в хлебных крошках?
Я не понимаю, на что именно вы проверяете то?! Где уникальный признак того узла, который нужно скрывать? Из условия это не явствует.
#
Re: Как отсекать корневую папку в хлебных крошках?
HostCMS, id меню "Документы" - 141. Т.е. нужно сделать проверку по id. Сделал так и сработало <xsl:if test="@id != 141">
А как сделать перечисление id?
Авторизация