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

#
Re: ссылка в меню на текущей странице
barry2000, что сейчас выводится на месте меню и что должно выводиться?
Поясните по вопросу: с какой целью Вам это необходимо?
#
Re: ссылка в меню на текущей странице
natalya,
есть меню состоящее из одного пункта, ему прописано в качестве бэкграунда изображение, при клике на этот пункт попадаем в подраздел где этот пункт меню тоже отображается, но вместо этого изображения должно быть другое.
Код который Вы дали работает верно, а почему изображение не становится на место не знаю

Зато теперь я понял принцип работы дополнительного свойстваю Может дело в ID ссылки которая иммет жесткие параметры в ксс?
Относительно боди...
Суть такая, на каждой странице должен изменяться определенный элемент дизайна - это гриф гитары, который будет находится в левом верхнем углу страницы, для каждой страницы это свой цвет этого грифа (это разноцветные картинки). Можно ли сделать так чтобы на каждой странице был свой цвет этого грифа..Либо это прописывается ID body и на каждой странце выводится определенное изображение либо как-то по другому..Можно это сделать и так как мы пробуем изменить вариант ссылки но пока мне непонятно как это будет выглядеть в коде.

BarS
#
Re: ссылка в меню на текущей странице
barry2000, теперь ясно. В таком случае, мы с Вами шли не совсем тем путем. Уточните, как пункту меню в качестве бэкграунда прописывается изображение? Как фон для ячейки таблицы? А если пунктов меню будет много, то исходное изображение под каждым из них будет одинаковым? Или для каждого свое?

По поводу второго вопроса: посмотрите тему http://www.hostcms.ru/forums/22/951/
Вам не обязательно использовать непосредственно приведенный там код. Главное - сама идея.  
#
Re: ссылка в меню на текущей странице
таких пунктов меню 6 каждый расположен в своем месте на странице:
приведу все попорядку.
вот вырезка html 3 верхних меню:

<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>


теперь XSL для ВерхнееМенюГитары
<?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"/>
  
   <!-- Определяем адрес ссылки -->
         <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>

<td class="top_menu">
  
      <!-- Показывать ссылку, или нет -->
      <xsl:if test="show_link=1">

<!-- Определяем стиль вывода ссылки -->
         <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>

         <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>


и КСС для <a href="{$link}" id="TopMenuLink3">:



#TopMenuLink3 {
   background-image: url(/images/top_menu_3.jpg);
   background-repeat: no-repeat;
   height: 129px;
   width: 123px;
   top: 0px;
   left: 239px;
   display:block;
   position:absolute;

}

если бы была возможность показать кусок эскиза наверное было бы понятней, очень не простой дизайн, я верстал и интегрирую, так вот, вот таких меню 6 штук каждое меню состоит из одного пункта, в CMS я все организовал для всех меню все работает, загвоздка в том, что как я уже говорил выше, когда нажимаешь на пункт меню заходишь на страничку "бас гитары" в этом меню в качестве бэкграунда должен быть другой рисунок.. ни соответственно когда переходишь на другую страницу первый вариант должен вернуться.
И так для каждого из 6 менюшек, по аналогии может быть будет понятно если я сравню это с 6-ю выключателями, заходишь на одну страницу, один включен все остальные выключены, переходишь на другую этот включен вся остальные выключены и так далее..
не знаю на сколько понятно я объяснил.
BarS
#
Re: ссылка в меню на текущей странице
В таком случае, думаю, можно обойтись и без доп. свойства. Попробуйте так: создать стиль с соответствующей картиной фона в CSS для узла, являющегося текущим. Например:
#TopMenuLinkCurrent3 {
   background-image: url(/images/top_menu_current_3.jpg);/*изображение для текущего узла*/
   background-repeat: no-repeat;
   height: 129px;
   width: 123px;
   top: 0px;
   left: 239px;
   display:block;
   position:absolute;
}

А в XSL-шаблоне для меню исправьте:
<?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"/>
  
   <!-- Определяем адрес ссылки -->
         <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>

<td class="top_menu">
  
      <!-- Показывать ссылку, или нет -->
      <xsl:if test="show_link=1">

<!-- Определяем стиль вывода ссылки -->
         <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>

<xsl:choose>
         <xsl:when test="$current_structure_id=@id">
<a href="{$link}" id="TopMenuLinkCurrent3"><span style="{$link_style}"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
</xsl:when>
         <!-- Иначе обычный вывод с пустым стилем -->
         <xsl:otherwise>
<a href="{$link}" id="TopMenuLink3"><span style="{$link_style}"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
</xsl:otherwise>
         </xsl:choose>
      </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>
#
Re: ссылка в меню на текущей странице
natalya,
да уж,
Наталья Вам ГРОМАДНОЕ спасибо, уже работает, как оказалось все намного проще..почему-то так всегда
буду работать со всеми остальными меню...
И за идею на счет бэкграунда спасибо, пока я еще ничего не делал, но направление именно то, скоро к этой теме я еще вернусь..
BarS
#
Re: ссылка в меню на текущей странице
barry2000, пожалуйста
Авторизация