фоновое изображжение для группы товаров

#
фоновое изображжение для группы товаров
на странице сайта magazin-sochi.com выводится список групп товаров. фоновое изображение у всех одинаково </td><td style='background: url("/images/group_img.jpg" no-repeat 0 0;width: 60px;'>
                  <td style='background: url("/images/group_back.jpg" no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;'>
.
Как сделать чтобы у конкретной группы выводилось свое фоное изображение. попробовал такой код для одной группы: <xsl:if  = "$parent_group_id = 836">
<td style='background: url("/logotyp/logo.jpg" no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;'>

</xsl:if>
не работает. Подскажите
#
Re: фоновое изображжение для группы товаров
И не будет работать - у вас, помимо некоторых синтаксических опечаток (например надо писать не
<xsl:if = "">
a
<xsl:if test="">
) еще и классическая ошибка структуры коды -  нарушение порядка вложенности тегов.
Если внутри xsl:if вы открыли тег td, то закрыть его вы должны тоже внутри этого же xsl:if

Но в вашем случае вкладывать td внутрь xsl:if это будет неудобно.
Поэтому тут два варианта:
через переменную, или через xsl:attribute

Переменная вычисляется ДО открывающего тега td, и ее значение подставляется в параметр style.
А в варианте с xsl:attribute значение определяется сразу после открывающего td.

пример 1го варианта:

<xsl:variable name="cell_image_url">
<xsl:choose>
<xsl:when test="$parent_group_id = 836">/logotyp/logo.jpg</xsl:when>
<xsl:otherwise>/images/group_back.jpg</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<td style="background: url('{$cell_image_url}') no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;">

здесь контент ячейки

</td>


пример второго варианта:

<td style='background: url("/images/group_back.jpg" no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;'>


<xsl:if test="$parent_group_id = 836">

<!-- несмотря на то, что выше для td указано другое значение параметра style, но тег xsl:attribute сотрет указанное выше значение style и заменит на то что написано в самом xsl:attribute  -->

<xsl:attribute name="style">background: url('/logotyp/logo.jpg') no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;</xsl:attribute>
</xsl:if>


здесь контент ячейки

</td>
Заказов не беру. Консультирую редко.
#
Re: фоновое изображжение для группы товаров
по парметру $parent_group_id = 836 не получается сделать.. нужно сюда вставить фоновое изображение в зависимости от группы.. <!-- Если есть подгруппы -->
         
         <div class='contest'>




            <xsl:if test="group">
            <!--<xsl:apply-templates select="group"/>-->
               <xsl:for-each select="group">
                  <div class='item'>
                  <a href="{/shop/path}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
                  </div>
               </xsl:for-each>
            </xsl:if>
          
              </div>   

</div>
Но не могу понять по какому параметру делать условие
#
Re: фоновое изображжение для группы товаров
вот полностью код где выводится список групп товаров.
<?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="/">
      
      <xsl:apply-templates select="/shop"/>
   </xsl:template>
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      
      <xsl:apply-templates select="group"/>
   </xsl:template>
   <!-- Шаблон для групп товара -->
   <xsl:template match="group">
      <div style= 'border: 1px solid white;clear:both;'>
         <!-- Если это подпункт (родитель не равен 0) - выводим слева от него тире -->
         <xsl:if test="@parent != 0">
            &#8212;
         </xsl:if>
         <div class='root'>
            <table border='0' cellspacing='0' cellpadding='0'><tr>
                  
                  <td style='background: url("/images/group_left.jpg") no-repeat 0 0;height:60px;width:32px;'></td>

<td style='background: url("/images/group_back.jpg") no-repeat 0 0;height:60px;width:159px;padding-bottom:5px;'>



                                                  <a href="{/shop/path}{fullpath}" on1Click="return show_hide_menu('{@id}');">
                        <xsl:value-of disable-output-escaping="yes" select="name"/>
                     </a>
                  </td><td style='background: url("/images/group_img.jpg") no-repeat 0 0;width: 60px;'>
                     <xsl:if test="small_image != ''">
                        <div style='background: url("{small_image}") no-repeat 0 -1px;width: 60px;height:60px;'>
                           
                           <!--<img src="{small_image}" alt="{name}" title="{name}"/>-->
                        </div>
                     </xsl:if>
                  </td>
            </tr></table>
         </div>
         <!-- Если есть подгруппы -->
         
         <div class='contest' >



            <xsl:if test="group">
            <!--<xsl:apply-templates select="group"/>-->
               <xsl:for-each select="group">
                  <div class='item'>
                  <a href="{/shop/path}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
                  </div>
               </xsl:for-each>
            </xsl:if>
          
              </div>   

</div>
   
</xsl:template>
</xsl:stylesheet>
Помогите
#
Re: фоновое изображжение для группы товаров
sergm.87 писал(а):
не могу понять по какому параметру делать условие
Этого я знать не могу. Никто не может кроме вас.
Расскажите хотя бы, какая планируется зависимость - просто словами опишите, как определить что вот у этой группы должен быть свой особый фоновый рисунок а вот у той своего собственного рисунка не должно быть.
Заказов не беру. Консультирую редко.
#
Re: фоновое изображжение для группы товаров
У нас идет вывод имени группы товара (select="name" и если name="Компьютерный мир" то фоное изображение другое (background: url('/logotyp/logo.jpg')
#
Re: фоновое изображжение для группы товаров
Соответственно в обоих приведенных мною примерах можно заменить
test="$parent_group_id = 836"

на
test="name = 'Компьютерный мир'"

(при этом подразумевается что код, приведенный в примерах, будет вставляться внутрь темплейта group)

Можно сделать условие более мягким: не равно 'Компьютерный мир' а содержит 'Компьютерный мир' -
test="contains(name, 'Компьютерный мир')"


Обращаю также ваше внимание, что оба варианта условия чувствительны к регистру букв.
Заказов не беру. Консультирую редко.
#
Re: фоновое изображжение для группы товаров
Спасибо большое. Всё работает!
Авторизация