Доп.фотографии магазина в общем каталоге

ЕСТЬ РЕШЕНИЕ InstantCMS 1.X

Как вывести доп.фотографии товаров в общем списке каталога?

#1 26 января 2022 в 14:05

Всем привет. У меня стоит InstantShop, думала что плюс минус знаю все, но не тут то было. Задумала я такое: что-бы в общем списке товаров, помимо основной картинки были еще миниатюры дополнительных. По размерам, css настроить, это я все разобралась за пару лет моего магазина. А вот как вывести эти картинки, я не знаю. Нуждаюсь в вашей помощи :(

Пробовала из com_inshop_item вставлять код в com_inshop_items (со «старой» ценой например прокатывало), но безуспешно.

{if $item.images}

                    <div style=«white-space: nowrap;»>{foreach key=num item=file from=$item.images}
                        <a href="/images/photos/medium/{$file}" class=«lightbox-enabled»  style=«display: initial;» rel=«lightbox-galery» title="{$item.title|escape:'html'} ({$LANG.SHOP_PHOTO} {$num+1})"><img src="/images/photos/small/{$file}" width=«24%» class=«image2» style=«border-radius: 1px; 
    -moz-border-radius: 1px;border: 14px #fafff8 solid;»/></a>{/foreach}  </div>
                    {/if}  

#2 26 января 2022 в 14:43

А откуда вы хотите брать миниатюры?

И код нужно вставлять в редактор кода

Изображение

#3 26 января 2022 в 15:14

Так доп.изображения уже есть в com_inshop_item (внутри карточки товара, если я правильно поняла), за их отображение отвечает код сверху (но если его скопировать и перенести в com_inshop_items то не работает). Функционально в InstantShop есть возможность загрузки основного и дополнительных изображений. Вот хочу сделать, что бы в общем списке, помимо основной фотографии, отображались еще дополнительные.

#4 26 января 2022 в 15:21

com_inshop_item выводит одну запись?  com_inshop_items выводит список?

#5 26 января 2022 в 15:29

На сколько я разобралась (а я не программист), com_inshop_item — выводит карточку товара, com_inshop_items — выводит список товаров.

#6 26 января 2022 в 15:30
  1. {if $item.images}
  2.  
  3. <div style=&laquo;white-space: nowrap;&raquo;>{foreach key=num item=file from=$item.images}
  4. <a href="/images/photos/medium/{$file}" class=&laquo;lightbox-enabled&raquo; style=&laquo;display: initial;&raquo; rel=&laquo;lightbox-galery&raquo; title="{$item.title|escape:'html'} ({$LANG.SHOP_PHOTO} {$num+1})"><img src="/images/photos/small/{$file}" width=&laquo;24%&raquo; class=&laquo;image2&raquo; style=&laquo;border-radius: 1px; -moz-border-radius: 1px;border: 14px #fafff8 solid;&raquo; /></a>{/foreach}
  5. </div>
  6. {/if}

Этот код внутри цикла у вас?

#7 26 января 2022 в 17:12

Код вставляю после основного изображения

  1. {foreach key=num item=item from=$items}
  2.  
  3. <table cellpadding="0" cellspacing="0" border="0" class="shop_item">
  4. <tr>
  5. {if $cfg.show_thumb}
  6. <td valign="top" class="image_td">
  7. <div class="image">
  8. <a href="/shop/{$item.seolink}.html">
  9. <img src="/images/photos/small/{$item.filename}" border="0" />
  10. {if $cfg.show_hit_img && $item.is_hit}<div class="is_hit"></div>{/if}
  11. </a>
  12. {if $cfg.ratings}

т.е.

  1. {foreach key=num item=item from=$items}
  2.  
  3. <table cellpadding="0" cellspacing="0" border="0" class="shop_item">
  4. <tr>
  5. {if $cfg.show_thumb}
  6. <td valign="top" class="image_td">
  7. <div class="image">
  8. <a href="/shop/{$item.seolink}.html">
  9. <img src="/images/photos/small/{$item.filename}" border="0" />
  10.  
  11.  
  12. {if $item.images}
  13. <div class="images">
  14. {foreach key=num item=file from=$item.images}
  15. <a href="/images/photos/medium/{$file}" class="lightbox-enabled" rel="lightbox-galery" title="{$item.title|escape:'html'} ({$LANG.SHOP_PHOTO} {$num+1})"><img src="/images/photos/small/{$file}" border="0" width="80" height="80"/></a>
  16. {/foreach}
  17. </div>
  18. {/if}
  19.  
  20.  
  21. {if $cfg.show_hit_img && $item.is_hit}<div class="is_hit"></div>{/if}
  22. </a>
  23. {if $cfg.ratings}

Но почитав форум с аналогичными вопросами, я так поняла, что правду нужно искать где-то в файле components/shop/frontend.php и вставлять как-то и куда-то запрос в базу данных, что бы изображения начали показываться. Но на этом мои полномочия понимания всё )))))

#8 26 января 2022 в 17:46

Ну вот смотрите. Основное фото хранится в переменной $item.filename переменной $item.images может и не быть, как и может не быть переменной $file Это нужно проверить.

#9 26 января 2022 в 18:23

 Lora, а почему просто не создать новое поле «изображения», скрыть его, и вывести в элементе? Костыль конечно, но как вариант — думаю пойдёт. 

#10 26 января 2022 в 21:07

Lora, а почему просто не создать новое поле «изображения», скрыть его, и вывести в элементе? Костыль конечно, но как вариант — думаю пойдёт

Panda58dev

Потому, что это первая ветка)))

Добавлено спустя 1 минуту

 Полина Емелина, Скиньте все доступы в личку, я гляну, если сами не сделаете.

#11 26 января 2022 в 22:29

Там с одной стороны все не так просто — никакой переменной с картинками в шаблон не передается, т.е. надо править фронтенд, чтобы эти переменные в $item сохранить.

А с другой стороны можно прямо с шаблона зная $item.id проверить наличие дополнительных фото (ведь их юрл формируется из id товара) и вывести те которые найдены.

Полина Емелина, а как вы планируете вывести картинки, мне интересно чисто визуально как это будет выглядеть, будут ли дополнительные фото того же размера? Вы планируете у каждого товара карусельку/слайдер или просто на месте 1 фото будет несколько?

#12 26 января 2022 в 22:48

Нужно открыть базу данных phpadmins, таблицу с товарами и посмотреть, есть ли там столбец images и убедиться что в нем есть списки картинок 

Возможно images который работает в карточке товара (item) собрали после выборки из столбца, который вообще то называется в бд иначе, например more_images, для списков (items) такого переопределения не делали, и в списке стоит использовать оригинальное название столбца.

Например в первой ветке в доска объявлений поле для дополнительных изображений разработчик назвал more_images. Тогда возможно так {foreach key=num item=file from=$item.more_images}

При этом стоит убедиться, что в model.php где то в getRecords (запрос списка товаров) запрашивается этот столбец с изображениями. Возможно model.php закодирован, раз премиум компонент, но надеюсь в этом случае разработчик там выбирает из таблица *все столбцы и мы можем получить more_images или как там называется  столбец с дополнительными картинками непосредственно в базе. Если нет то да во fronted.php можно дополнить Select выборки, но думаю, до этого не дойдет

#13 26 января 2022 в 22:53

Нужно открыть php admins таблицу с товарами и посмотреть, есть ли там столбец images.

Нил™

Нету. Насколько я понял информация про эти дополнительные фото нигде не хранится.

#14 26 января 2022 в 22:59

Нету. Насколько я понял информация про эти дополнительные фото нигде не хранится.

Sonat

но в item.tpl, как я понял, предусмотрен их вывод, где то они хранятся? Может через конструктов форм как то, но тогда это выглядело бы не так

{if $item.images}

                    <div style=«white-space: nowrap;»>{foreach key=num item=file from=$item.images}
                        <a href="/images/photos/medium/{$file}" class=«lightbox-enabled»  style=«display: initial;» rel=«lightbox-galery» title="{$item.title|escape:'html'} ({$LANG.SHOP_PHOTO} {$num+1})"><img src="/images/photos/small/{$file}" width=«24%» class=«image2» style=«border-radius: 1px; 
    -moz-border-radius: 1px;border: 14px #fafff8 solid;»/></a>{/foreach}  </div>
                    {/if}  

Полина Емелина
#15 26 января 2022 в 23:24

 Полина Емелина, при просмотре списка товаров нет переменной $item.images, картинки появляются только в карточке товаров. Их можно добавить в файле модели components\shop\model.php. Строка примерно 353

  1. $item['filename'] = (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/photos/small/shop'.$item['id'].'.jpg')) ? 'shop'.$item['id'].'.jpg' : 'shop_default.jpg';

После нее или до нее прописать это

  1. $item['images'] = $this->getItemImages($item['id']);

Это поднапряжёт ваш сервачёк, но картинки выведет, как тут и говорили в переменной $item.images

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.