ссылка в меню на текущей странице

#
ссылка в меню на текущей странице
Есть меню состоящее из одного пункта, при клике на него попадаем на соответствующую страницу, как сделать чтобы на этой странице вместо ссылки на этом месте было заданое изображение?

в шаблоне за отображение ссылке на текущей странице отвечает следующая инструкция:
<!-- Если не показывать ссылку - выводим просто имя ссылки -->
      <xsl:if test="show_link=0">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </xsl:if>

как задать ей это изображение?
BarS
#
Re: ссылка в меню на текущей странице
barry2000, используйте механизм дополнительных свойств для узлов структуры(типа "файл".
#
Re: ссылка в меню на текущей странице
спасибо,   а можно все таки поподробнее...читаю документацию но мне всеж таки не понятно...
добавил дополнительные свойства указал изображение...
вместо <xsl:value-of disable-output-escaping="no" select="name"/> надо добавить код для ссылки на изображение...?
BarS
#
Re: ссылка в меню на текущей странице
Да, верно. Вот пример:
<xsl:if test="propertys/property[@name = 'izobr']/property_file_path !=''">
<a href="{$link}"><img src="/{propertys/property[@name = 'izobr']/property_file_path}" /></a>
</xsl:if>

Для случая, если xml-тэг для данного доп. свойства имеет имя izobr.
#
Re: ссылка в меню на текущей странице
Как я понял, картинка должна отображаться на месте ссылки, если мы перешли на соответствующую ей страницу.

Тогда это будет как.


<xsl:choose>
    <xsl:when test="propertys/property[@name = 'izobr']/property_file_path != '' and @id = current_structure_id">
        <a href="{$link}"><img src="/{propertys/property[@name = 'izobr']/property_file_path}" /></a>
    </xsl:when>
    <xsl:otherwise>
        <a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
    </xsl:otherwise>
</xsl:choose>
#
Re: Re: ссылка в меню на текущей странице
natalya,
спасибо,
по идее должно работать но не хочет, я все подставил, вот что есть:
<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml" />

<xsl:template match="/document">

   <table border="0" cellspacing="0" cellpadding="0">
   <tr>
      <!-- Выбираем узлы структуры -->
      <xsl:apply-templates select="structure[show=1]"/>
   </tr>
   </table>

</xsl:template>

<xsl:template match="structure">
   
   <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
   <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
   
   
   <td class="top_menu">
   
      <!-- Показывать ссылку, или нет -->
      <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>

         <a href="{$link}" id="TopMenuLink3"><span style="{$link_style}"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a> по ID из ксс выводится соответствующий стиль для линка
      </xsl:if>

      <!-- Если не показывать ссылку - выводим просто имя ссылки -->
      <xsl:if test="show_link=0">
         сюда подставил пример кода (для надежности назвал xml тоже "izobr")

<xsl:if test="propertys/property[@name = 'izobr']/property_file_path !=''">
<a href="{$link}"><img src="/{propertys/property[@name = 'izobr']/property_file_path}" /></a>
</xsl:if>

      </xsl:if>



      <!-- На строку - не более 2-х пунктов, если уже 2 выведено - начинаем новую строку -->
      <xsl:if test="position() mod 2 = 0">
         <xsl:text disable-output-escaping="yes">
            &lt;/tr&gt;
            &lt;tr&gt;
         </xsl:text>
      </xsl:if>
   
   </td>
</xsl:template>

</xsl:stylesheet>


все осталось по прежнему...может дело в ID ссылки, но даже если я задаю ссылке другой, все остается по прежнему.
BarS
#
Re: ссылка в меню на текущей странице
barry2000, приведите XML-код.
#
Re: ссылка в меню на текущей странице
спасибо за отклик.
Это из макета, если Вы это имели  в виду

<div id="GeneralTopMenuDiv"><div id="TopMenuDiv">

<!--  Верхнее меню -->
<?
$Structure = new Structure();
$Structure->ShowStructure(10,'ВерхнееМенюОнас');
?>
<!--  Верхнее меню -->
<?
$Structure = new Structure();
$Structure->ShowStructure(14,'ВерхнееМенюГитары');
?>

<!--  Верхнее меню -->
меню для бас гитар его привел выше
<?
$Structure = new Structure();
$Structure->ShowStructure(15,'ВерхнееМенюБасГитары');
?>
</div></div>


BarS
#
Re: ссылка в меню на текущей странице
Не совсем
XML-код можно посмотреть добавив ?show_xml к адресу страницы в браузере.
#
Re: ссылка в меню на текущей странице
ок понял, вроде так

<?xml version="1.0" encoding="windows-1251"?>
<document>
<structure id="71" menu_id="15">
<current_structure_id>1</current_structure_id>
<name>Бас Гитары</name>
<show>1</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link>/basguitar/</link>
<propertys>
<property type="File" id="25" name="izobr">
<property_name>izobr</property_name>
<value>top_menu_3_in-over.jpg</value>
<izobr>top_menu_3_in-over.jpg</izobr>
<property_file_path>download_file.php?download_propertys_values_id=25</property_file_path></property>
</propertys>
</structure>
</document>
BarS
Авторизация