Выделение текущего элемента в XSL

#
Выделение текущего элемента в XSL
Всем доброго дня!
Ситуация следующая у нас. Выводим список элементов некой ИнфоСистемы. Хотим, чтобы текущий пункт элементов выделял классом. Т.е. при нахождении на странице, указанной в ссылке одного из элемента, этот элемент должен иметь class = "current". Сама вывод элементов получился, но не смог выделить классом элемент.
Вот  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">
   <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="/">
      <xsl:apply-templates select="/document"/>      
   </xsl:template>
   
   <xsl:template match="/document">
      <xsl:if test="blocks/items/item[item_status=1]">
         <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
      </xsl:if>   
   </xsl:template>
   
   
   
   <xsl:template match="item">                  
      <xsl:variable name="current_page" select="blocks/items/current_page"/>
      <div class="obj_item">         
         <a href="{item_path}" title="{item_name}">
            <xsl:value-of disable-output-escaping="yes" select="item_name"/>            
            <xsl:if test = "$current_page = @id">
               <xsl:attribute name="class">active</xsl:attribute>
            </xsl:if>
         </a>         
      </div>      
   </xsl:template>
   
</xsl:stylesheet>



А вот php код в шаблоне, который выводит элементы ИнфоСистемы:
<?
   $InformationSystem = & singleton('InformationSystem');
   $InformationSystem->ShowInformationSystem(15, 0, "СписокУслуг", 10, 0);
?>



Помогите пожалуйста.
#
Re: Выделение текущего элемента в XSL
нужно передать текущий элемент
например так
<?
   $InformationSystem = & singleton('InformationSystem');
   $external_propertys = array();

   if (isset($GLOBALS['INFSYS_result']['item'])) {
      $external_propertys['currentitem'] = $GLOBALS['INFSYS_result']['item'];
   }

   $InformationSystem->ShowInformationSystem(15, 0, "СписокУслуг", 10, 0, $external_propertys);
?>

+
<?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="/">
      <xsl:apply-templates select="/document"/>      
   </xsl:template>
  
   <xsl:template match="/document">
      <xsl:if test="blocks/items/item[item_status=1]">
         <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
      </xsl:if>  
   </xsl:template>
  
  
  
   <xsl:template match="item">                  
      <xsl:variable name="current_page" select="blocks/items/current_page"/>
      <div class="obj_item">        
         <a href="{item_path}" title="{item_name}">
            <xsl:if test="@id = /document/currentitem">
               <xsl:attribute name="class">active</xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="item_name"/>            
            
         </a>        
      </div>      
   </xsl:template>
  
</xsl:stylesheet>


666 сообщений!
#
Re: Выделение текущего элемента в XSL
Буду знать.
Спасибо большое!
#
Re: Выделение текущего элемента в XSL
Рано я порадовался =)
У меня почему-то массив $GLOBALS['INFSYS_result'] пустой =) И само собой, поэтому в функцию не передается доп параметр. Как быть, кто знает? Гуглил - не помогло.
#
Re: Выделение текущего элемента в XSL
kazinaki писал(а):
У меня почему-то массив $GLOBALS['INFSYS_result'] пустой
- а вы на странице инфоэлемента(или инфогруппы) находитесь? Данный массив будет заполнен только в том случае, если посетитель находится на странице инфосистемы(т.е. на странице ее элемента или группы).
#
Re: Выделение текущего элемента в XSL
Ага, нахожусь на странице элементы ИнфоСистемы =)
#
Re: Выделение текущего элемента в XSL
можно так, хотя, если не меняли настройки типовой, странно это
<?
   $InformationSystem = & singleton('InformationSystem');
   $InformationSystem_id = $InformationSystem->GetInformationSystemByStructureId(CURRENT_STRUCTURE_ID);
   $external_propertys = array();

   if ($InformationSystem_id) {
      $result = $InformationSystem->GetInformationFromPath($InformationSystem_id, '', false);
      if ($result['item']) {
         $external_propertys['currentitem'] = $result['item'];
      }
   }

   $InformationSystem->ShowInformationSystem(15, 0, "СписокУслуг", 10, 0, $external_propertys);
?>
#
Re: Выделение текущего элемента в XSL
У меня типа узла - "Типовая динамическая страница", но у меня шаблоны страницы и раздела не проставлены. Может быть из-за этого?
#
Re: Выделение текущего элемента в XSL
шаблон страницы и раздела?
есть "шаблон страницы" - он может быть не указан если в макете напрямую вызывается $kernel->show_current_page() вместо show_current_template(), или вообще ничего из этого не вызывается
непонятно что за "шаблон раздела"
xsl шаблон элемента и группы? тогда вообще ничего не должно выводиться
#
Re: Выделение текущего элемента в XSL
У меня есть раздел "Услуги". Тип раздела - "Типовая динамическая страница". Но в настройках узла я не проставляю параметры "Раздел" и "Страница", т.к. у меня содержимое элементов строится на основе PHP кода. Т.е. мне нужны XSL шаблоны элементов и раздела элементов.
Мне нужно на тсраницах "Услуги" и "Элемент Услуги" сделать вывод элементов ИнфоСистемы - что-то врде меню-навигация по элементам. Сделал, работает. Но не понятно, почему у меня $GLOBALS['INFSYS_result'] пустой =) Я сделал пока, как Вы посоветовали - через выборку id элемента и передачи его в функцию показа элементов ИнфоСистемы. Но хочется, чтобы было верно и без этих лишних запрсов =)
Авторизация