Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением

Модератор
#
Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
В XSL-шаблон вывода товара вносим изменения
                  <!-- Изображение для товара, если есть -->
                  <xsl:if test="small_image != ''">
                     <div style="float: left; width: {small_image/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">
                        <a href="{image}" target="_blank" onclick="ShowImgWindow('{name}','{image}', {image/@width}, {image/@height}); return false;">
                           <img src="{small_image}" style="border: 1px solid #DADADA; margin: 0px 5px 5px 0px"/>
                        </a>
                        <br/>
                        <a href="{image}" target="_blank" onclick="ShowImgWindow('{name}','{image}', {image/@width}, {image/@height}); return false;">
                           <img src="/hostcmsfiles/images/zoom.gif" alt="Zoom in" />
                        </a>
                     </div>
                  </xsl:if>
                  
                  <xsl:if test="count(property[@dir_id = 0 and type = 1]) > 0">
                     <!-- Каротинки из доп. св-в -->
                     <xsl:apply-templates select="property[@dir_id = 0 and type = 1]" mode="img_property"/>
                     
                     <div style="clear: both"></div>
                  </xsl:if>

Теперь добавляем template:
            <!-- Вывод изображений из свойств -->
            <xsl:template match="property" mode="img_property">
               <xsl:if test="type = 1 and file_path != ''">
                  <div style="float: left; width: {small_image/file_path/@width}px; margin: 0px 10px 10px 0px; color: #aaaaaa;">
                     <a href="{file_path}" target="_blank" onclick="ShowImgWindow('{name}','{file_path}', {file_path/@width}, {file_path/@height}); return false;">
                        <img src="{small_image/file_path}" style="border: 1px solid #DADADA; margin: 0px 5px 5px 0px"/>
                     </a>
                     <br/>
                     <a href="{file_path}" target="_blank" onclick="ShowImgWindow('{name}','{file_path}', {file_path/@width}, {file_path/@height}); return false;">
                        <img src="/hostcmsfiles/images/zoom.gif" alt="Zoom in" />
                     </a>
                  </div>
               </xsl:if>
            </xsl:template>

При вызове доп. св-в запрещаем выводить доп. св-ва типа файл:
<xsl:apply-templates select="property[@dir_id != 0 or type != 1]"/>
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением

<xsl:if test="count(property[type=1]) &gt; 0">
<ul>
<xsl:apply-templates select="property[type=1]" mode="foto"/>
</ul>
<div id="imgHolder"/>
</xsl:if>



<xsl:template match="property" mode="foto">
<xsl:if test="small_image/file_path != '' ">
<li style="display: inline;">
<a href="{file_path}" title="{name}">
<img src="{small_image/file_path}" alt="{name}"/>
</a>
</li>
</xsl:if>
    </xsl:template>

Чуть-чуть стилей

#imgHolder { position:relative; overflow:hidden; }
#imgHolder em { position:absolute; bottom:5px; margin:2px 10px; padding:2px 10px; background-color:#6EA9C7; color:#FFF; }

И чуть чуть ява-скрипта в макет

<script type="text/javascript">
$(document).ready(function(){
$('ul img').click(function(){
var path = $(this).parent().attr('href');
var alt = $(this).attr('alt');
$('#imgHolder').animate({opacity: 0},1000,function(){
$(this).html('<img src=' + path + ' />').find('img').bind('load',function(){
$(this).parent().append('<em>' + alt + '<\/em>').animate({opacity: 1},1000);
});
});
return false;
});
// $('ul img:first').click();
});
</script>
Не стыдно что-либо не знать или не понимать. Стыдно бояться спросить.
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
народ, поделитесь, пожалуйста, целиковым работающим XSL-шаблоном с дополнительными изображениями
Vladimir-SEO.ru
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
seoigor,
А для чего? Он же полностью все равно в твою страничку не впишется.
Лучше уже в то что есть вставить приведенные выше куски.
Проверено сто раз. Все работает.
Не стыдно что-либо не знать или не понимать. Стыдно бояться спросить.
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
Вот ещё вариация: доп. фото стоят справа от основного и выводятся в лайтбоксе.

Шаг 1. В XSL-шаблоне МагазинТовар:

после кода


<!-- МагазинТовар -->
   
   <xsl:decimal-format name="my" decimal-separator="," grouping-separator=" "/>


дописываем наш код
   

   <xsl:template match="property" mode="foto">
      <xsl:if test="small_image/file_path != '' ">
         <div class="lb-gallery" style="float: left; margin-right: 10px;">
            <a href="{file_path}" title="{name}">
               <img src="{small_image/file_path}" alt="{name}"/>
            </a>
         </div>
      </xsl:if>
   </xsl:template>


далее ищем код


   <!-- Выбираем список групп свойств -->
   <xsl:apply-templates select="/shop/properties_items_dir"/>


и заменяем его на
   

   <!-- Выбираем список групп свойств -->
   <xsl:apply-templates select="/shop/properties_items_dir[type != 1]"/>


Шаг 2. В макете:

ищем кусок


   <script type="text/javascript">
   $(function() {
      $('#gallery a:has(img)').lightBox();
   });
   </script>


и заменяем его на


   <script type="text/javascript">
   $(function() {
      $('#gallery a:has(img), .lb-gallery a:has(img)').lightBox();
   });
   </script>


и ещё ищем кусок


   <!-- Изображение для товара, если есть -->
   <xsl:if test="small_image != ''">
      <div id="gallery" style="float: left; width: {small_image/@width}px; margin: 0px 10px 10px 0px;">
         <a href="{image}" target="_blank">
            <img src="{small_image}" class="image" />
         </a>
      </div>
   </xsl:if>
   
   <!-- Цена товара -->
   <p>Цена:


заменяем его на


   <!-- Изображение для товара, если есть -->
   <xsl:if test="small_image != ''">
      <div id="gallery" style="float: left; width: {small_image/@width}px; margin: 0px 10px 10px 0px;">
         <a href="{image}" target="_blank">
            <img src="{small_image}" class="image" />
         </a>
      </div>
   </xsl:if>
   
   <xsl:if test="count(property[type=1]) &gt; 0">
      <xsl:apply-templates select="property[type=1]" mode="foto"/>
   </xsl:if>
   
   <!-- Цена товара -->
   <p>Цена:
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
А как вывести изображения из модификаций????????
С уважением, Команда Isv7! тел-1: +38098-5520233 Viber тел-2: +38050-5765376 skyp: newudx icq: 460923525 email: info@isv7.com http://www.isv7.com
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
AndrewBo
благодарю очень помогло, но у меня небольшой ступор.
В Храктеристиках товара выводится допсвойство (отвечающее за изображение) со ссылкой "Скачать файл", подскажите как сделать чтоб данное допсвойство не выводилось?, а любые другие выводились
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
было:
   <!-- Вывод строки со значением свойства -->
   <xsl:template match="property">
      <xsl:if test="value != '' or (type = 1 and file_path != '')">
         <xsl:variable name="class_name"><xsl:choose>
      <xsl:when test="position() mod 2 !=0">grey</xsl:when><xsl:otherwise></xsl:otherwise></xsl:choose></xsl:variable>
         <dt><xsl:value-of select="name"/></dt>
         <dd class="{$class_name}">
            <xsl:choose>
               <xsl:when test="type = 1">
                  <a href="{file_path}">Скачать файл</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>
         </dd>
      </xsl:if>
   </xsl:template>

но т.к. не силен в xsl сделал так:
   <!-- Вывод строки со значением свойства -->
   <xsl:template match="property">
      <xsl:if test="value != '' or (type = 1 and file_path != '')">
         <xsl:variable name="class_name"><xsl:choose>
      <xsl:when test="position() mod 2 !=0">grey</xsl:when><xsl:otherwise></xsl:otherwise></xsl:choose></xsl:variable>
         <!--<dt><xsl:value-of select="name"/></dt>-->
         <!--<dd class="{$class_name}">-->
            <xsl:choose>
               <xsl:when test="type = 1">
                  <div style="display:none"> <dt><xsl:value-of select="name"/></dt> <dd><a href="{file_path}">Скачать файл</a></dd></div>
               </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>         
<dt><xsl:value-of select="name"/></dt>
<dd class="{$class_name}"><xsl:value-of disable-output-escaping="yes" select="value"/></dd>
               </xsl:otherwise>
            </xsl:choose>
         <!--</dd>-->
      </xsl:if>
   </xsl:template>

подскажите как правильнее?
я про вот эту часть кода:
<xsl:when test="type = 1">
<div style="display:none"> <dt><xsl:value-of select="name"/></dt> <dd><a href="{file_path}">Скачать файл</a></dd></div>
</xsl:when>
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
все супер, но перестала работать постраничная навигация
выходит http://host/shop/page-3/ вместо http://host/shop/-категория-/page-3/

при вручном вводе ссылки, переход на следующую страницу происходит правильно.
Вот кусок типовой. if вначале - чтобы не было ссылок на подкатегории если в главной

if($GLOBALS['shop_item_path']['group'] != 0)
{

$mas_group = array();
$mas_group = $shop->GetGroupsTree($GLOBALS['shop_item_path']['group'], $current_shop_id, $mas_group);
$set = array();
$set = SetGroups($mas_group, $set);

$param['current_group_id'] = array($GLOBALS['shop_item_path']['group']);
$external_propertys['ТекущаяГруппа'] = $GLOBALS['shop_item_path']['group'];

foreach ($set as $key => $value)
{
$param['current_group_id'][] = $value;
};
$param['xml_show_group_type'] = 'all';
}

      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
www.energoprofi23.ru
Модератор
#
Re: Вывод изображений товара в магазине из дополнительных свойств рядом с основным изображением
leousa,
примеры на этой странице не затрагивали постраничную навигацию.
Авторизация