Выдано 134538 лицензий

Все теже доп картинки

Все теже доп картинки
#
godgi
14
Извините в оченредной раз что поднимаю эту тему не могли бы вы помоч с доп картинками

<!-- Изображение для товара, если есть -->
         <xsl:if test="image_small != ''">
            <div class="gallery" style="width: 310px; height: 310px; background: #b5b5b5; vertical-align: middle; line-height: 310px;">
               <a title="{name}" href="{dir}{image_large}" target="_blank">
                  <img src="{dir}{image_small}" class="image" alt="{name}" style="vertical-align: middle;" />
               </a>
            </div>

            <div class="gallery" style="width: 150px; height: 100px; float: left; margin: 22px 0px; background: #b5b5b5;">

               
               <xsl:if test="/shop/item/property[@id = 31]/image_small/file_url != ''">

               <xsl:variable name="src-ext-1"><xsl:value-of select="/shop/item/property[@id = 31]/image_small/file_url"></xsl:value-of></xsl:variable>
               <xsl:variable name="src-ext-1"><xsl:value-of select="/shop/item/property[@id = 31]/file_url"></xsl:value-of></xsl:variable>
                  <a href="{$src-ext-1-big}"><img src="{$src-ext-1}"/></a>
                                      </xsl:if>
            </div>


вот код что я не так делаю не пойму , но отображает он только ссылку http://pol-dveri.ru/shop/laminat%20/laminate-ecoflooring/ecoflooring-castle/Ecoflooring-Castle-dub_tauehr-909.jpg/
Re: Все теже доп картинки
#
alexpimnev
640
godgi,
не стал вникать в Ваш код, но вот как у меня
Шаблон "МагазинТовар"
<xsl:template match="shop_item">
         <!-- Изображение для товара, если есть -->
         <xsl:if test="image_small != ''">
            <div id="gallery" style="float: left; width:250px; margin: 0px 10px 10px 0px;">
               <a href="{dir}{image_large}" target="_blank" rel="fancydop" title="{name}"><img src="{dir}{image_large}" width="250" alt="{name}" itemprop="image" /></a>
               <!-- Доп. изображения из свойств -->
               <ul class="dop-foto"><xsl:apply-templates select="property_value[tag_name = 'dop_foto']" mode="dop_foto"/></ul>
            </div>
         </xsl:if>
</xsl:template>

<!-- Вывод дополнительных фото из свойств -->
<xsl:template match="property_value" mode="dop_foto">
      <xsl:variable name="property_id" select="property_id" />
      <xsl:variable name="property" select="/shop/shop_item_properties//property[@id=$property_id]" />
      
      <xsl:if test="value/node() and value != '' or file/node() and file != ''">
      <li><a href="{../dir}{file}" target="_blank" title="увеличить" rel="fancydop"><img src="{../dir}{file_small}" align="middle" alt="" /></a></li>
      </xsl:if>
</xsl:template>
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов
Re: Все теже доп картинки
#
godgi
14
Сделал все как у Вас всеровно выдает ошибки


Предупреждение: XSLTProcessor::importStylesheet() [<a href='xsltprocessor.importstylesheet'>xsltprocessor.importstylesheet</a>]: compilation error: file /var/www/pol-dveri/data/www/pol-dveri.ru/ line 49 element template в файле /var/www/pol-dveri/data/www/pol-dveri.ru/modules/xsl/processor/xslt.php (строка 49)Предупреждение: XSLTProcessor::importStylesheet() [<a href='xsltprocessor.importstylesheet'>xsltprocessor.importstylesheet</a>]: element template only allowed as child of stylesheet в файле /var/www/pol-dveri/data/www/pol-dveri.ru/modules/xsl/processor/xslt.php (строка 49)Предупреждение: XSLTProcessor::transformToDoc() [<a href='xsltprocessor.transformtodoc'>xsltprocessor.transformtodoc</a>]: No stylesheet associated to this object в файле /var/www/pol-dveri/data/www/pol-dveri.ru/modules/xsl/processor/xslt.php (строка 53)





Может есть какое то готовое решение для этого, потомучто уж очень давно мучаюсь
Re: Все теже доп картинки
#
alexpimnev
640
что то где то намудрили в шаблоне, покажите его, только оформите в CODE
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов
Re: Все теже доп картинки
#
godgi
14
<?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:decimal-format name="my" decimal-separator="," grouping-separator=" "/>

   <xsl:template match="/shop">

      <link rel="stylesheet" href="//yandex.st/jquery/fancybox/2.1.4/jquery.fancybox.css" />
      <script src="//yandex.st/jquery/fancybox/2.1.4/jquery.fancybox.min.js"></script>
      <script>$('.gallery a').fancybox();</script>

      <xsl:apply-templates select="shop_item"/>
      <div style="height:1px; background-color:#c5af7e; margin-top:20px"></div>
      <div style="text-align:right; margin-bottom:20px; font-weight:bold; font-style:italic; font-size:15px">*Цена действительна при заказе от 40 м&#178;</div>

   <h2><a href="/aksessuary/">АКСЕССУАРЫ</a></h2>
      <h2>Звоните</h2>
      <ul>
         <li>По телефону:(499) 713-1245, (495) 77-821-77</li>
      </ul>
   </xsl:template>

   <xsl:template match="shop_item">
      <h1>
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </h1>

      <div style="float: left; width: 320px; text-align: center; padding: 3px;">
         <!-- Изображение для товара, если есть -->
         <xsl:if test="image_small != ''">
            <div class="gallery" style="width: 310px; height: 310px; background: #b5b5b5; vertical-align: middle; line-height: 310px;">
               <a title="{name}" href="{dir}{image_large}" target="_blank">
                  <img src="{dir}{image_small}" class="image" alt="{name}" style="vertical-align: middle;" />
               </a>
</div>
                                    </xsl:if>
                                     </div>
                                            <!-- Дополнительные фото товаров -->
                                <div class="gallery" style="width: 150px; height: 100px; margin: 22px 0px; background: #b5b5b5; margin-left: 160px;">
                              <ul class="'ext_img_1"><xsl:apply-templates select="property_value[tag_name = 'ext_img_1']" mode="ext_img_1"/></ul>
                              
<!-- Вывод дополнительных фото из свойств -->
<xsl:template match="property_value" mode="ext_img_1">
      <xsl:variable name="property_id" select="property_id" />
      <xsl:variable name="property" select="/shop/item/property[@id = 31]/" />
      
      <xsl:if test="value/node() and value != '' or file/node() and file != ''">
      <li><a href="{../dir}{file}" target="_blank" title="увеличить" rel="fancydop"><img src="{../dir}{file_small}" align="middle" alt="" /></a></li>
      </xsl:if>
</xsl:template>
            
         
      <div style="margin-left: 330px; padding-top: 22px;">
         <div>

            <!-- Цена товара -->
            <div style="padding-bottom: 22px;">
               <span style="font-size: 18pt; font-weight: bold; line-height: 22px; vertical-align: middle;">
                  <xsl:choose>
                     <xsl:when test="price != 0">
                        <xsl:value-of select="format-number(price, '### ##0,00', 'my')"/>&#xA0;<xsl:value-of select="currency" disable-output-escaping="yes"/>
                     </xsl:when>
                     <xsl:otherwise>договорная</xsl:otherwise>
                  </xsl:choose>
               </span>


               <!-- Если цена со скидкой - выводим ее -->
               <xsl:if test="price_tax != price">
                  <span style="color: gray; text-decoration: line-through;">
                     <xsl:variable name="price_tax" select="price_tax"/>
                     <span style="font-size: 11pt">
                        <xsl:value-of select="format-number($price_tax, '### ##0,00', 'my')"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></span>
                  </span>
                  <br/>
               </xsl:if>

               <!-- Ссылку на добавление в корзины выводим, если:
               type != 1 - простой тип товара или делимый (0 - простой, 2 - делимый)
               type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
               что означает неограниченное количество -->
               <xsl:if test="type != 1 or (type = 1 and (digitals > 0 or digitals = -1))">

                  <input type="text" size="5" value="1" id="count_{@id}" class="styled-select" style="width: 30px; padding: 7px; margin: 0px 10px;" />

                  <a href="{/shop/url}cart/?add={@id}" onclick="return $.addIntoCart('{/shop/url}cart/', {@id}, count_{@id}.value)">
                     <img src="/images/new-ver2/new-into-car.jpg" title="Купить" alt="Купить" style="line-height: 37px; vertical-align: middle;" />
                  </a>
               </xsl:if>
            </div>

            <xsl:if test="marking != ''">
            <p>Артикул: <b><xsl:value-of disable-output-escaping="yes" select="marking"/></b></p>
            </xsl:if>

            <xsl:if test="shop_producer/name != ''">
            <p>Производитель: <b><xsl:value-of disable-output-escaping="yes" select="shop_producer/name"/></b></p>
            </xsl:if>

            <!-- Если указан вес товара -->
            <xsl:if test="weight != 0">
               <p>Вес товара: <xsl:value-of select="weight"/>&#xA0;<xsl:value-of select="/shop/shop_measure/name"/></p>
            </xsl:if>

            <!-- Показываем количество на складе, если больше нуля -->
            <xsl:if test="rest &gt; 0">
               <p>В наличии: <xsl:value-of disable-output-escaping="yes" select="rest"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="mesure"/></p>
            </xsl:if>

            <!-- Описание товара -->
            <xsl:value-of disable-output-escaping="yes" select="description" />

            <!-- Если электронный товар, выведим доступное количество -->
            <xsl:if test="type = 1">
               <p>
                  <strong>
                     <xsl:choose>
                        <xsl:when test="digitals = 0">
                           Электронный товар закончился.
                        </xsl:when>
                        <xsl:when test="digitals = -1">
                           Электронный товар доступен для заказа.
                        </xsl:when>
                        <xsl:otherwise>
                        На складе осталось: <xsl:value-of select="digitals" /><xsl:text> </xsl:text><xsl:value-of select="mesure" />
                        </xsl:otherwise>
                     </xsl:choose>
                  </strong>
               </p>
            </xsl:if>

            <!-- Текст товара -->
            <p>
               <xsl:value-of disable-output-escaping="yes" select="text"/>
            </p>

            <div style="clear: both;"></div>

            <!-- Свойства в корневой группе -->
            <h2>Характеристики</h2>
            <xsl:if test="count(property_value) ">
               <table>
                  <xsl:apply-templates select="property_value"/>
               </table>
            </xsl:if>



            <div style="padding: 22px;">
               <div class='pluso pluso-theme-color pluso-round'>
                  <div class='pluso-more-container'>
                     <a class='pluso-more' href=''></a>
                  </div>
                  <a class='pluso-facebook'></a>
                  <a class='pluso-livejournal'></a>
                  <a class='pluso-twitter'></a>
                  <a class='pluso-vkontakte'></a>
                  <a class='pluso-google'></a>
               </div>
               <script type='text/javascript'>if(!window.pluso){pluso={version:'0.9.1',url:'http://share.pluso.ru/'};h=document.getElementsByTagName('head')[0];l=document.createElement('link');l.href=pluso.url+'pluso.css';l.type='text/css';l.rel='stylesheet';s=document.createElement('script');s.src=pluso.url+'pluso.js';s.charset='UTF-8';h.appendChild(l);h.appendChild(s)}</script>
            </div>
         </div>


      </div>






      <!-- Информация об ошибках -->
      <xsl:variable name="error_code" select="/shop/error"/>

      <xsl:if test="$error_code != 0">
         <div id="error">
         <b>Внимание!</b>Неправильно введен код подтвержения!</div>
      </xsl:if>

      <xsl:if test="not(/shop/error/node()) and /shop/comment_is_active/node()">
         <!-- Информация о выполненном действии -->
         <div id="message">
            <xsl:choose>
               <xsl:when test="/shop/comment_is_active = '0'">Комментарий успешно добавлен и будет опубликован после проверки модератором!</xsl:when>
               <xsl:otherwise>Комментарий успешно добавлен и опубликован!</xsl:otherwise>
            </xsl:choose>
         </div>
      </xsl:if>



      <!-- Тэги для информационного элемента -->
      <xsl:if test="count(tag) &gt; 0">
         <p>
            <img src="/hostcmsfiles/images/tags.gif" align="left" style="margin: 0px 5px -2px 0px"/>
            <xsl:apply-templates select="tag"/>
         </p>
      </xsl:if>

      <!-- Модификации -->
      <xsl:if test="count(modifications/shop_item) &gt; 0">
         <b>Модификации:</b>
         <table cellspacing="3" cellpadding="3" style="margin-left: -6px;">
            <tr>
               <td style="border-bottom: 1px solid #dadada;">Название</td>
               <td style="border-bottom: 1px solid #dadada;">Цена</td>
            </tr>
            <xsl:apply-templates select="modifications/shop_item"/>
         </table>
      </xsl:if>


      <xsl:if test="/shop/item/property[@id = 296]/value != ''">
         <div style="border-top: 1px solid #dfdfdf; margin-top: 22px;">
            <h2>Видео</h2>

            <xsl:value-of disable-output-escaping="yes" select="/shop/item/property[@id = 296]/value" />
         </div>
      </xsl:if>

      <xsl:if test="count(tying/shop_item) &gt; 0">
         <p>
            <b>Похожие товары этого производителя:</b>
         </p>
         <!-- Отображаем сопутствующие товары -->
         <xsl:apply-templates select="tying/shop_item"/>

         <div style="clear: both;"></div>
      </xsl:if>

   </xsl:template>


   <!-- Вывод строки со значением свойства -->
   <xsl:template match="property_value">
      <xsl:if test="value/node() and value != '' or file/node() and file != ''">
            <xsl:variable name="property_id" select="property_id" />
            <xsl:variable name="property" select="/shop/shop_item_properties//property[@id=$property_id]" />

            <tr>
               <td style="padding:5px; background:#eee"><xsl:value-of disable-output-escaping="yes" select="$property/name"/></td>
               <td style="padding:5px; background:#eee"><xsl:choose>
                     <xsl:when test="$property/type = 2">
                        <a href="{../dir}{file}" target="_blank"><xsl:value-of disable-output-escaping="yes" select="file_name"/></a>
                     </xsl:when>
                     <xsl:when test="$property/type = 7">
                        <input type="checkbox" disabled="disabled">
                           <xsl:if test="value = 1">
                              <xsl:attribute name="checked">checked</xsl:attribute>
                           </xsl:if>
                        </input>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="value"/>
                     </xsl:otherwise>
               </xsl:choose></td>
            </tr>
      </xsl:if>
   </xsl:template>

   <!-- Вывод строки со значением свойства -->
   <xsl:template match="property">
      <xsl:if test="@id!=296 and @id!=295 and @id!=294">
         <xsl:if test="value != '' or (type = 1 and file_url != '')">
            <tr>
               <td style="padding: 5px" bgcolor="#eeeeee">
                  <b><xsl:value-of select="name"/></b>
               </td>
               <td style="padding: 5px" bgcolor="#eeeeee">
                  <xsl:choose>
                     <xsl:when test="type = 1">
                        <a href="{file_url}">Скачать файл</a>
                     </xsl:when>
                     <xsl:when test="type = 7">
                        <xsl:choose>
                           <xsl:when test="value = 1">
                              <input type="checkbox" checked="" disabled="" />
                           </xsl:when>
                           <xsl:otherwise>
                              <input type="checkbox" disabled="" />
                           </xsl:otherwise>
                        </xsl:choose>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="value"/>
                     </xsl:otherwise>
                  </xsl:choose>
               </td>
            </tr>
         </xsl:if>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон для модификаций -->
   <xsl:template match="modifications/shop_item">
      <tr>
         <td>
            <!-- Название модификации -->
            <a href="{url}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </td>
         <td>
            <!-- Цена модификации -->
            <xsl:value-of disable-output-escaping="yes" select="price"/>&#xA0;
            <!-- Валюта -->
            <xsl:value-of disable-output-escaping="yes" select="currency"/>
         </td>
      </tr>
   </xsl:template>

   <xsl:template match="tying/shop_item">

      <div style="float:left; width:45%; margin-right:5%; margin-bottom:20px">

         <p>
            <a href="{url}">
               <xsl:value-of select="name"/>
            </a>
         </p>

         <!-- Изображение для товара, если есть -->
         <xsl:if test="image_small != ''">
            <a href="{url}">
               <img src="{dir}{image_small}" align="left" style="border: 1px solid #000000; margin: 0px 5px 5px 0px"/>
            </a>
         </xsl:if>

         <p>
            <xsl:value-of disable-output-escaping="yes" select="description"/>
         </p>

         <!-- Цена товара -->
         <strong>
            <xsl:choose>
               <xsl:when test="price != 0">
                  <xsl:value-of disable-output-escaping="yes" select="price"/>&#xA0;
                  <!-- Валюта товара -->
                  <xsl:value-of disable-output-escaping="yes" select="currency"/>
               </xsl:when>
               <xsl:otherwise>договорная</xsl:otherwise>
            </xsl:choose>
         </strong>

         <!-- Если цена со скидкой - выводим ее -->
         <xsl:if test="price_tax != price">
            <br/>
            <font color="gray">
               <strike>
                  <xsl:value-of disable-output-escaping="yes" select="price_tax"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/></strike>
            </font>
         </xsl:if>

         <!-- Если указан вес товара -->
         <xsl:if test="weight != 0">
            <br/>Вес товара: <xsl:value-of select="weight"/> <xsl:value-of select="/shop/shop_measure/name"/></xsl:if>

         <!-- Показываем скидки -->
         <xsl:if test="count(discount) &gt; 0">
            <xsl:apply-templates select="discount"/>
         </xsl:if>

         <!-- Показываем количество на складе, если больше нуля -->
         <xsl:if test="rest &gt; 0">
            <br/>В наличии: <xsl:value-of disable-output-escaping="yes" select="rest"/></xsl:if>

         <xsl:if test="shop_producer/name != ''">
            <br/>Производитель: <xsl:value-of disable-output-escaping="yes" select="shop_producer/name"/></xsl:if>
      </div>
   </xsl:template>


   <!-- Шаблон выводит хлебные крошки -->
   <xsl:template match="shop_group" mode="goup_url">
      <xsl:variable name="parent_id" select="parent_id"/>

      <!-- Выбираем рекурсивно вышестоящую группу -->
      <xsl:apply-templates select="//shop_group[@id=$parent_id]" mode="goup_url"/>

      <xsl:if test="parent_id=0">
         <a href="{/shop/url}">
            <xsl:value-of select="/shop/name"/>
         </a>
      </xsl:if>

      <span class="url_arrow">→</span>

      <a href="{url}">
         <xsl:value-of select="name"/>
      </a>
   </xsl:template>
</xsl:stylesheet>
Re: Все теже доп картинки
#
godgi
14
Вы уж извините я только начинаю со всем этим разбираться, так что если отправити учиться то не обижусь))))))))))))))
Re: Все теже доп картинки
#
alexpimnev
640
godgi,
из того что успел заметить у Вас шаблон в шаблоне xsl:template, посмотрите какой у меня пример

вставте
<!-- Вывод дополнительных фото из свойств -->
<xsl:template match="property_value" mode="dop_foto">
       <xsl:variable name="property_id" select="property_id" />
       <xsl:variable name="property" select="/shop/shop_item_properties//property[@id=$property_id]" />
      
       <xsl:if test="value/node() and value != '' or file/node() and file != ''">
       <li><a href="{../dir}{file}" target="_blank" title="увеличить" rel="fancydop"><img src="{../dir}{file_small}" align="middle" alt="" /></a></li>
       </xsl:if>
</xsl:template>


между
</xsl:template>
    
<!--//вот тут//-->

<!-- Вывод строки со значением свойства -->
<xsl:template match="property_value">
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов
Re: Все теже доп картинки
#
PSin
70
Отличный пример. Мне удалось даже слайдер засунуть под доп.картинки.
А возможен ли трюк, чтобы вызывать доп.картинки каждого товара в шаблоне списка товаров?
(чтобы выводить доп. картинки не только внутри товара, но и в списке товаров).

Если сделать аналогично, то в <xsl:template match="property_value" mode="dop_foto">
собираются все доп. фотографии со всех товаров сразу, а потом при вызове
<xsl:apply-templates select="property_value[tag_name = 'dop_foto']" mode="dop_foto"/>
в шаблоне shop_item у каждого товара выводятся все картинки товаров списка.
Re: Все теже доп картинки
#
hostcms
Модератор
16594
Если вы внутри шаблона shop_item выберите именно его property_value (просто property_value, без всяких там //), то получите требуемое.
Re: Все теже доп картинки
#
Dmitry K.
161
Отлично работает! Картинки выводятся.
Я применил это для доп.фото инфосистемы.
Применил шаблон в нужном месте:
<!-- Изображения, если есть -->
<div id="gallery" class="row">
<xsl:if test="count(property_value[tag_name!='foto']) &gt; 0">
<xsl:apply-templates select="property_value[file_small/node()]" mode="foto" />
</xsl:if>
</div>

Оформил всё это как надо:
<!-- Вывод дополнительных фото из свойств -->
<xsl:template match="property_value" mode="foto">
<xsl:variable name="property_id" select="property_id" />
<xsl:variable name="property" select="/informationsystem/informationsystem_item_properties//property[@id=$property_id]" />
<xsl:if test="value/node() and value != '' or file/node() and file != ''">
<figure class="col-6 col-sm-4 col-lg-3 col-xl-2">
<a rel="tag" href="{../dir}{file}" target="_blank">
<img class="img-thumbnail" src="{../dir}{file_small}" alt="{file_description}" /></a>
<figcaption>
<xsl:value-of select="/informationsystem/informationsystem_item//file_description/node()" mode="foto" />   
</figcaption></figure>
</xsl:if>
</xsl:template>

Но вот незадача! Подписи к фото берёт из "Описание файла" только первого фото и подставляет это значение для всех фото.
Вопрос - А как сделать так чтобы "Описание файла" проставлялось к своему фото соответственно?
Вот ссылка на казус - https://www.mebelib.ru/wood-tree/akaciya-belaya/
Авторизация