Фото товара для варианта в карточке товара.

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

wisma
wisma
Репутация: 1
Сообщения: 18
Зарегистрирован: 12.12.2017
С нами: 6 лет 3 месяца

Сообщение #1 wisma » 23.02.2018, 02:22

Добавляем к общим скриптам в файле

design/ваш_шаблон/html/scripts.tpl в самый конец код

Код: Выделить всё

<script>
$('#pic-changer').change(function()
{
   var imageSource = $(this).find(':selected').data('picture');
   if(imageSource)
   {
      $('#image-location').html('<img src="/files/downloads/'+imageSource+'">');
   }
   else {
      $('#image-location').html('');
   }
})
</script>

Далее в карточке товара design/ваш_шаблон/html/product.tpl найти селект вариантов и добавить не достающее...
Смотрим где выводятся и добавляем у себя
в select варианта вставляем id="pic-changer"
в опции data-picture="{$v->attachment}"
ну и в место где нужно чтобы показывало фото <div id="image-location"></div> - сам вывод изображения.

Код: Выделить всё

<select name="variant" id="pic-changer"  class="fn_variant variant_select{if $product->variants|count < 2} hidden{/if}">
                                    {foreach $product->variants as $v}
                                        <option data-picture="{$v->attachment}"  data-cvet="{$v->attachment}" data-img_sm="{$v->attachment}"  value="{$v->id}"  data-price="{$v->price|convert}" data-stock="{$v->stock}"{if $v->compare_price > 0} data-cprice="{$v->compare_price|convert}"{/if}{if $v->sku} data-sku="{$v->sku|escape}"{/if} {if $v->units}data-units="{$v->units}"{/if}>{if $v->name}{$v->name|escape}{else}{$product->name|escape}{/if}</option>
                                    {/foreach}
                                </select>
<div class="{if !$product->variant->attachment} hidden{/if}">
</div>
         
<div id="image-location"></div>

Потом нужно закомментировать(или удалить..) код в design\ваш_шаблон\html\order.tpl (добавить {* *} )
40 строка примерно в дефолтном....

Код: Выделить всё

  {* {if $purchase->variant->stock == 0}<span class="preorder_label">{$lang->product_pre_order}</span>{/if}
                {if $order->paid && $purchase->variant->attachment}
                    <a class="button" href="{$lang_link}order/{$order->url}/{$purchase->variant->attachment}" data-language="order_download_file">{$lang->order_download_file}</a>
                {/if} *}



Для ширины и высоты используем (и подставляем свои значения) <div id="image-location" style="height:100px;width:100px;"></div>
Удаляем (или переименовываем..) файл .htaccess по адрессу /files/downloads/
И в админке добавляем к вариантам фото в цифровой товар и вуаля!

-------------
+\- от платного модуля который есть в каталоге:
+ | Бесплатная реализация
+ | Не нужно рыть много кода, все просто и понятно
+ | Выводит в корзине (реализация ниже)
- | Работает через цифровой товар (не всем подойдет)
- | Работает только в карточке товара, по тому-же принципу не выйдет вывести в каталоге
-------------
Последний раз редактировалось wisma 23.02.2018, 11:35, всего редактировалось 1 раз.

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #2 korshunov » 23.02.2018, 06:44

Вообще с цифровым товарам работать не рекомендую.
Его функционал - полная копия с Simpla, а там есть моменты довольно-таки критичные...

wisma
wisma
Репутация: 1
Сообщения: 18
Зарегистрирован: 12.12.2017
С нами: 6 лет 3 месяца

Сообщение #3 wisma » 23.02.2018, 10:26

UPD.
Для отображения фото в коризе этот код

wisma писал(а):Потом нужно закомментировать(или удалить..) код в design\ваш_шаблон\html\order.tpl (добавить {* *} )
40 строка примерно в дефолтном....



Код: Выделить всё

  {* {if $purchase->variant->stock == 0}<span class="preorder_label">{$lang->product_pre_order}</span>{/if}
                {if $order->paid && $purchase->variant->attachment}
                    <a class="button" href="{$lang_link}order/{$order->url}/{$purchase->variant->attachment}" data-language="order_download_file">{$lang->order_download_file}</a>
                {/if} *}

Нужно заменить на:

Код: Выделить всё

  <img src="/files/downloads/{$purchase->variant->attachment}" width="50px" height="50px"></img>



И добавить в файле
design\ваш_шаблон\html\cart_purchases.tpl
После

Код: Выделить всё

<i>{$purchase->variant->name|escape}</i>

добавить строчку...

Код: Выделить всё

<img src="/files/downloads/{$purchase->variant->attachment}" width="50px" height="50px"></img>


Должно выйти вот так

Код: Выделить всё

 {* Product name *}
            <td class="text_left">
                <a class="purchase_name" href="{$lang_link}products/{$purchase->product->url}">{$purchase->product->name|escape}</a>
                <i>{$purchase->variant->name|escape}</i>
            <img src="/files/downloads/{$purchase->variant->attachment}" width="50px" height="50px"></img>
                {if $purchase->variant->stock == 1}<span class="preorder_label">{$lang->product_pre_order}</span>{/if}
            </td>

wisma
wisma
Репутация: 1
Сообщения: 18
Зарегистрирован: 12.12.2017
С нами: 6 лет 3 месяца

Сообщение #4 wisma » 24.02.2018, 20:02

Заставил работать везде, немножко другой скрипт и выводы, выводится на главной, в каталогах, в корзине....

кому нужно, обращайтесь в личку.
Вложения
rabotaet.jpg

wisma
wisma
Репутация: 1
Сообщения: 18
Зарегистрирован: 12.12.2017
С нами: 6 лет 3 месяца

Сообщение #5 wisma » 10.04.2018, 14:01

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

Правильный яваскрипт
<script>
$(".fn_variant.variant_select").change(function() { //if the select value gets changed
var imageSource = $(this).find(':selected').data('picture'); //get the data from data-picture attribute
if (imageSource) { //if it has data
$(this).next().html('<img src="/files/downloads/'+imageSource+'">'); // insert image in div image-location
} else {
$(this).next().html(''); //remove content from div image-location, thus removing the image
}
})
</script>

А вот кусок кода вывода везде (product_list.tpl)
{*Сам селект*}
<select name="variant" id="pic-changer" class="fn_variant variant_select {if $product->variants|count == 1}hidden{/if}"> {foreach $product->variants as $v} <option value="{$v->id}" data-picture="{$v->attachment}" data-price="{$v->price|convert}" data-stock="{$v->stock}"{if $v->compare_price > 0} data-cprice="{$v->compare_price|convert}"{/if}{if $v->sku} data-sku="{$v->sku|escape}"{/if}>{if $v->name}{$v->name|escape}{else}{$product->name|escape}{/if}</option> {/foreach} </select>

<div id="image-location" data-id="{$v->id}" class="cvet"> {* вывод фото *}

Если не нужно в корзине то:
cart_purchases.tpl
Вырезать (или закоментировать)
{* Product name *}
<td class="text_left">
<a class="purchase_name" href="{$lang_link}products/{$purchase->product->url}">{$purchase->product->name|escape}</a>
<i>{$purchase->variant->name|escape}</i>
<img src="/files/downloads/{$purchase->variant->attachment}" width="50px" height="50px"></img>
{if $purchase->variant->stock == 1}<span class="preorder_label">{$lang->product_pre_order}</span>{/if}
</td>
за вывод фото в корзине отвечает
<img src="/files/downloads/{$purchase->variant->attachment}" width="50px" height="50px"></img>


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Полезные решения для OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 16 гостей