Хлебные крошки

#
почему такой большой код в странице?
Добрый день! В коде "хлебные крошки" выглядят так:
<span class="path_arrow">&#8594;</span>
УЕФА объявляет Canon официальным спонсором УЕФА ЕВРО 2008™
   <div class="hostcms_float_block" ><div class="hostcms_float_block_t"></div><div class="hostcms_float_block_tr"></div><div class="hostcms_float_block_r" name="hostcms_float_block_r"></div><div class="hostcms_float_block_br"></div><div class="hostcms_float_block_b"></div><div class="hostcms_float_block_bl"></div><div class="hostcms_float_block_l" name="hostcms_float_block_l"></div><div class="hostcms_float_block_tl"></div><div class="hostcms_float_block_content" ><a href="javascript:void(0)" onclick="ShowEditWindow('Редактирование информационного элемента', '/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=edit_group_item&check_1_47=1&information_groups_parent_id=0&information_system_id=5', 'information_system_item_47'); return false;" target="_blank"><img src="/hostcmsfiles/images/edit.gif" alt="Редактировать информационный элемент" title="Редактировать информационный элемент" width="16" height="16"></a><a href="javascript:void(0)" onclick="ShowEditWindow('Копирование информационного элемента', '/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=copy_item&check_1_47=1&information_groups_parent_id=0&information_system_id=5', 'copy_information_system_item_47'); return false;" target="_blank"><img src="/hostcmsfiles/images/copy.gif" alt="Копировать информационный элемент" title="Копировать информационный элемент" width="16" height="16"></a><a href="javascript:void(0)" onclick="if (confirm('Вы действительно хотите удалить опрос?') == true){ShowEditWindow('Удаление информационного элемента', '/admin/InformationSystems/InformationSystems.php?admin_forms_id=12&operation=delete_group_item&check_1_47=1&information_groups_parent_id=0&information_system_id=5', 'delete_information_system_item_47'); return false;} else {return false}" target="_blank"><img src="/hostcmsfiles/images/delete.gif" alt="Удалить информационный элемент" title="Удалить информационный элемент" width="16" height="16"></a></div><div class="hostcms_float_block_drag_block" name="hostcms_float_block_drag_block" onMouseDown="new Draggable(this.parentNode);"></div></div><SCRIPT><!--
               
               // массив для хранения регулярных выражений для проверки полей
               fieldType = new Array();
               fieldType['minlen'] = 3;
               fieldType['maxlen'] = 55;
               fieldType['reg'] = '^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,}\$';
               
               // Проверка ячейки
               // elementId - идентификатор проверяемого элемента
               function FieldCheckEmail(elementId)
               {
               var oField = document.getElementById(elementId);
               
               var message = '';
               if (oField != undefined)
               {
               var value = oField.value;
               
               if (value != '')
               {
               
               // Проверка на минимальную длину
               if (value.length < fieldType['minlen'])
                  {
                  var decl = declension(fieldType['minlen'], 'символ', 'символа', 'символов');
                  
                  // сообщение
                  message += 'Минимум ' + fieldType['minlen'] + ' ' + decl + '. Текущая длина &mdash; ' + value.length + '. ';
                  }
                  
                  // Проверка на максимальную длину
                  if (value.length > fieldType['maxlen'])
                  {
                  var decl = declension(fieldType['maxlen'], 'символ', 'символа', 'символов');
                  
                  // сообщение
                  message += 'Максимум ' + fieldType['maxlen'] + ' ' + decl + '. Текущая длина &mdash; ' + value.length + '. ';
                  }
                  var t = value.match(fieldType['reg']);
                  //alert(t);
                  // Проверка на регулярное выражение
                  if (value.length > 0 && fieldType['reg'] && !value.match(fieldType['reg']))
                  {
                  // Сообщение
                  message += 'Значение поля не соответствует формату. ';
                  }
                  }
                  
                  var oErrorDiv = document.getElementById('error_'+elementId);
                  
                  if (oErrorDiv != undefined)
                  {
                  oErrorDiv.innerHTML = message;
                  }
                  
                  var oSubmit = document.getElementById('submit_'+elementId);
                  
                  if (oSubmit != undefined)
                  {
                  if (message != '')
                  {
                  oSubmit.disabled = true;
                  }
                  else
                  {
                  oSubmit.disabled = false;
                  }
                  }
                  }
                  }
                  
                  /**
                  * Склонение после числительных
                  * int number числительное
                  * int nominative Именительный падеж
                  * int genitive_singular Родительный падеж, единственное число
                  * int genitive_plural Родительный падеж, множественное число
                  */
                  function declension(number, nominative, genitive_singular, genitive_plural)
                  {
                  var last_digit = number % 10;
                  var last_two_digits = number % 100;
                  
                  if (last_digit == 1 && last_two_digits != 11)
                  {
                  var result = nominative;
                  }
                  else
                  {
                  if ((last_digit == 2 && last_two_digits != 12) || (last_digit == 3 && last_two_digits != 13) || (last_digit == 4 && last_two_digits != 14))
                  {
                  var result = genitive_singular;
                  }
                  else
                  {
                  var result = genitive_plural;
                  }
                  }
                  
                  return result;
                  }
                  
                  // массив для хранения текущих рейтингов звезд
                  var curr_rate = new Array();
                  
                  // функция работы со звездами рейтинга
                  function set_rate(id, new_rate)
                  {
                  // устанавливаем атрибуты
                  curr_star = document.getElementById(id);
                  parent_id = parseInt(curr_star.parentNode.id);
                  
                  // при первом пересчете ставим рейтинг для группы звезд в 0
                  if (!curr_rate[parent_id])
                  {
                  curr_rate[parent_id] = 0;
                  }
                  
                  // устанавливаем новый рейтинг в массив рейтингов и значение скрытого поля
                  if (new_rate != curr_rate[parent_id] && parseInt(new_rate) > 0)
                  {
                  curr_rate[parent_id] = new_rate;
                  
                  curr_form = document.getElementById('comment_form_0' + (parent_id != 0 ? parent_id : ''));
                  curr_form.comment_grade.value = curr_rate[parent_id].charAt(curr_rate[parent_id].length - 1);
                  }
                  
                  // пересчет стилей для звезд
                  for (i = 1; i < 6; i++)
                     {
                     if (parent_id != 0)
                     {
                     j = parent_id + '' + i + '_star_' + i;
                     }
                     else
                     {
                     j = i + '_star_' + i;
                     }
                     
                     temp_obj = document.getElementById(j);
                     
                     if (new_rate == 0)
                     {
                     id = curr_rate[parent_id];
                     }
                     
                     if (parseInt(j) > parseInt(id))
                     {
                     temp_obj.className = '';
                     }
                     else
                     {
                     temp_obj.className = 'curr';
                     }
                     }
                     }
                     
                  --></SCRIPT>


я думала, что только у меня, но и на демо сайте также. http://demo.hostcms.ru/articles/47/. Как это можно исправить?
Модератор
#
Re: Хлебные крошки
ecumenism,
Это Вы видите после авторизации в ЦА и это код плавающих панелей для быстрого редактирования.
Модератор
#
Re: Хлебные крошки
А приведенный скрипт нужен при отображении подробной информации о статье.
#
Re: Хлебные крошки
спасибо, поняла
#
Re: Хлебные крошки
Поделюсь своим решением, того, как убрать "Главная" из хлебных крошек:
решения которые предлагались в теме не помогли, да и xslt поизучать полезно было

откроем шаблон хлебных крошек и первым делом закомментируем вывод ссылки на главную:

<xsl:if test="count(//structure[@id = $current_structure_id]) &gt; 0">
   <!-- <a href="/"><xsl:value-of disable-output-escaping="yes" select="structure[link = '/']/name"/></a> -->
   <xsl:apply-templates select="//structure[@id = $current_structure_id]">
      <xsl:with-param name="is_last_item" select="1"/>
   </xsl:apply-templates>
</xsl:if>


отлично, ссылка "Главная" больше не выводится. но осталась стрелка, поэтому сделаем проверку (в месте где выводилась стрелка):

<xsl:choose>
   <xsl:when test="level = 0">
           <span class="path_arrow"></span>
   </xsl:when>
   <xsl:otherwise>
      <span class="path_arrow">&#x2192;</span>
   </xsl:otherwise>
</xsl:choose>


всё отлично работает, пока не зайдём в группу ИС (у которой тоже level = 0) и не увидим что стелка предательски не отображается. что ж, у групп есть id в виде "group_n", почему бы нам не использовать его:

<xsl:variable name="is_first"><xsl:value-of disable-output-escaping="yes" select="@id"/></xsl:variable>
<xsl:choose>
   <xsl:when test="level = 0">
      <xsl:choose>
         <xsl:when test="contains($is_first, 'group')">
            <span class="path_arrow">&#x2192;</span>
         </xsl:when>
         <xsl:otherwise>
            <span class="path_arrow"></span>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:when>
   <xsl:otherwise>
      <span class="path_arrow">&#x2192;</span>
   </xsl:otherwise>
</xsl:choose>


теперь всё отлично работает (на магазине кстати не проверял)
#
Re: Хлебные крошки
Нужно добавить микроразметку. Скажите как обернуть сcылки <a> </a> . У меня какие то ошибки вылазят постоянно.

Вот так
<div class="breadcrumbs">
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a itemprop="url" href="/">
<span itemprop="title"> Главная </span>
</a> /
</div>

<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a itemprop="url" href="/products/dir1">
<span itemprop="title">Раздел</span>
</a> /
</div>

<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a itemprop="url" href="/products/dir1/dir2">
<span itemprop="title">Подраздел</span>
</a>
</div>
</div>


Код хлебных крошек
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <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="/document">
      
      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id">
         <xsl:choose>
            <xsl:when test="item/node()">item_<xsl:value-of select="item"/></xsl:when>
            <xsl:when test="group/node()">group_<xsl:value-of select="group"/></xsl:when>
            <xsl:otherwise>
               <xsl:value-of select="structure/current_structure_id"/>
            </xsl:otherwise>
         </xsl:choose>
      </xsl:variable>
      
      <xsl:if test="count(//structure[@id = $current_structure_id]) &gt; 0">
         <a class="breadcrumb" href="/"><xsl:value-of disable-output-escaping="yes" select="structure[link = '/']/name"/></a>
         <xsl:apply-templates select="//structure[@id = $current_structure_id]">
            <xsl:with-param name="is_last_item" select="1"/>
         </xsl:apply-templates>
      </xsl:if>
   </xsl:template>
   
   <xsl:template match="structure">
      
      <xsl:param name="is_last_item" select="0"/>
      
      <!-- Выбираем все узлы структуры всех уровней вложенности -->
      <xsl:apply-templates select="parent::structure"/>
      
      <!-- Определяем адрес ссылки -->
      <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:choose>
         <xsl:when test="show_link = 1 and $is_last_item = 0">
            <span class="path_arrow breadcrumb"> » </span>
            <a  class="breadcrumb" href="{$link}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </xsl:when>
         <!-- Если не показывать ссылку - выводим просто имя ссылки -->
         <xsl:otherwise>
            <!--span  class="breadcrumb">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </span-->
      </xsl:otherwise>
   </xsl:choose>
   
</xsl:template>

</xsl:stylesheet>

Модератор
#
Re: Хлебные крошки
#
Re: Хлебные крошки
HostCMS,
помогло спасибо
Авторизация