Данный эффект особенно часто встречается в зарубежных интернет магазинах, а значит совсем скоро будет широко применяться и в рунете. Суть очень проста - при наведении мыши на блок с товаром (в категории) изменяется изображение товара (показывается вторая картинка).
Реализуем данный функционал на стандартном шаблоне virtuemart. На измененных шаблонах суть будет та же, но, возможно, придется чуть больше повозиться.
В Virtuemart->Настройки->Шаблоны установим Товаров в строке - 3. Получим следующее.
Переместим картинку над названием, как в большинстве магазинов. В файле \components\com_virtuemart\views\category\tmpl\default.php заменим классы для блоков с картинкой и остальной информацией о товаре.
1 |
<div class="width30 floatleft center"> |
на
1 |
<div class="product-image"> |
и
1 |
<div class="width70 floatright"> |
на
1 |
<div class="product-info"> |
Класс .product-info необязателен и приведен только для примера. Можно вообще вывести блок без класса.
В итоге получим:
Теперь изменим код вывода изображения. В том же файле вместо стандартного кода вывода
1 2 3 4 5 |
<a title="<?php echo $product->product_name ?>" href="<?php echo $product->link; ?>"> <?php echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false); ?> </a> |
вставим
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<a title="<?php echo $product->product_name ?>" href="<?php echo $product->link; ?>"> <!-- Проверяем, есть ли у товара дополнительные изображения --> <?php if (!empty($product->images) and count ($product->images)>1) // Если есть, то выводим 2 блока с изображениями { ?> <!-- Блок с первым изображением --> <div class="image1"> <?php echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false); ?> </div> <!-- Блок со вторым изображением --> <div class="image2"> <?php echo $product->images[1]->displayMediaThumb('class="browseProductImage"', false); ?> </div> <?php } // Если дополнительных изображений нет, то выводим одно изображение else { echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false); } ?> </a> |
По аналогии с выводом всех дополнительных картинок (подробнее в этой статье) в файле \components\com_virtuemart\views\category\view.html.php заменим
1 |
$productModel->addImages($products,1); |
на
1 |
$productModel->addImages($products,2); |
В итоге у товаров с дополнительными изображениями будет выводиться 2 картинки.
Осталось добавить css стилей, чтобы все было красиво и происходила смена изображений. В файл \components\com_virtuemart\assets\css\vmsite-ltr.css добавим
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
.browse-view .product .spacer .product-image { height: 250px; padding: 20px; text-align: center; position: relative; box-sizing: border-box; } .browse-view .row .product .spacer img{ max-width: 100%; max-height: 100%; } .image1 { opacity: 1; box-sizing: border-box; transition: opacity 0.3s ease-out 0; } .browse-view .product .spacer:hover .image1 { opacity: 0; transition: opacity 0.3s ease-out 0; } .image2 { position: absolute; top: 20px; left: 20px; width: 100%; padding-right: 40px; opacity: 0; box-sizing: border-box; transition: opacity 0.3s ease-out 0; } .browse-view .product .spacer:hover .image2 { opacity: 1; transition: opacity 0.3s ease-out 0; } |
0.3s - скорость смены картинок. Можно изменить это значение. В итоге получим такой симпатичный эффект (кликните, чтобы посмотреть демо)
Вячеслав
Очень интересный эффект. Спасибо за очередную полезную и очень интересную статью
admin
Рад, что статья оказалась полезной )
Liova
Когда ждать патча для ШопЛайфа?
admin
В новой версии эта фишка будет
Через 1-1,5 месяца
Liova
И будет рассылка обновления?
admin
Да, конечно
Александр
А еще было бы неплохо сделать, чтобы при наведении картинки перелистывались автоматически, например если их больше двух. Можно на jquery сделать
admin
конечно это можно сделать, но на большинстве магазинов работает именно смена одного изображения на другое
Александр
Классная штучка. Проверил, все работает. Но есть одно большое НО. У меня на сайте при клике на товар http://masiv.by/mdf-dveri Изображение увеличивается. А при данной "штучке" изображение уже не увеличишь. Для меня это крайне важно, пришлось откатить назад. Может быть есть решение?
admin
решить конечно можно, но только какое изображение показывать при клике - 1-е или 2-е?
обычно при клике идет переход в карточку товара (в случае применения эффекта смены при наведении)
Александр
Мне нужно, чтобы увеличивалось 1 изображение. Вопрос ка это сделать.
admin
напишите код, который выводит у вас изображением с увеличением при клике
Павел_Б
Большое спасибо, все действительно хорошо работает. А то, когда у меня заказчик эту фичу попросил на сайт, я думал что придётся плагины докупать или отказаться от клиента...
Маленькие уточнения: код, который мы заменяем, в указанном вами виде прописан только в новых версиях VM. У меня есть "прошлогодние" файлы, там всё называется чуть по другому, но разобраться можно.
Файл view.html.php приходится сохранять в сам компонент, а значит при обновлении будет затёрт. Как бы его сохранить в шаблоне, как всё остальное? Кстати, все css стили я прописываю в конце template.css своего шаблона (тоже защита от стирания) а в настройках VM снимаем галочку "Использовать VirtueMart CSS".
admin
Да, приходится вносить часть изменений в ядро, но это даже хаком трудно назвать 🙂
Придется заменять одну цифру после каждого обновления. Если забудете заменить, но ничего не случится, просто будет выводится одна картинка.
Как разместить это в шаблон не знаю, скорее всего никак )
По стилям. Можно просто скопировать файл стилей virtuemart в папку шаблона в папку css и править их там.
Виталий
Отличная статья. Очень хотел такой эффект для своих проектов.
Огромная благодарность автору!
admin
Рад, что статья оказалась полезна
Александр
...А Я считаю, что эта фича не приживется. Пользователю неудобно (особенно новому) зайдя в незнакомый магазин увидеть такую неожиданность желая просто увеличить изо-е товара.
Рекомендую в категории товаров подключить слайдер без автоплей, но с панелькой количества изо-й и всплывающими стрелками . При клике всплывающий лайтбокс с увеличенным изо-ем и кратким описанием товара.
Желающим иметь такую связку у себя в сторе прошу стучаться в аску 215252872.
Но данному посту респект (за то, что дает возможность представить разнообразие всех возможных вариантов)
D@N
Добрый день.
После применения этого хака перестал срабатывать
«Переход в карточку товара при клике на его изображение»
Срабатывает на категориях и товарах, на под категориях не работает подскажите где копать.
Спасибо
Валера
Здравствуйте.
Есть возможность сделать:
Два товара. В каждом по несколько дополнительных изображений. В одном надо показывать второе изображение на странице категории, в другом нет.
Спасибо.
admin
Здравствуйте!
Автоматически можно сделать только если товары в разных категориях(создать 2 шаблона категорий и только в один вносить изменения из статьи)
Можно сделать и для одной категории, но придется для каждого товара, у которого не должно показываться дополнительное изображение, прописывать отдельно стили
Артем
Спасибо большое! Все работает отлично!
А Вы не знаете случайно, нет ли способа, чтобы эти картинки менялись автоматически, типа слайдшоу?
admin
Здравствуйте!
Рад, что статья оказалась полезной.
Со слайдшоу не сталкивался, но думаю, что это будет слишком для пользователей если все картинки в категории начнут автоматически меняться при заходе на сраницу.
D@N
Добрый день.
Обновил Вирт до 3 перестала работать смена изображений.
Подскажите пожалуйста в каком направлении копать.
P.S.Шаблоны использую те же что работали на Вирте 2.
D@N
Нашел причину, файл забыл перенести файл view.html.php
К стати куда его перенести в папке Шаблона Джумлы что бы сохранялось все при обновлении?
admin
Попробуйте поместить в папку /templates/шаблон/html/com_virtuemart/category/
Но скорее всего (нужно проверить) файл view.html.php не будет работать из папки с шаблоном и придется после каждого обновления вносить изменения.
DaN
Спасибо, первым делом попробовал положить по пути что вы написали, но не работает. Пока будем переписывать.
Руслан
Спасибо за труды.
Подскажите а как уменьшит расстояние между картинкой и названием товара?
У меня картинка 120х120, а место вокруг показывает около 250х250
http://bowlingstock.com/index.php/ua/magazyn/entry-performance
Руслан
Спасибо. Уже разобрался сам.
Может кому нужно будет: Админ-Virtuemart-Настройки-Шаблон в поле ширна и высота слада вписать нужное значение (например 200)
george007ua
Доброго времени суток, у меня ситуация немного иная. смена картинки при нажатии уже реализована, но каким образом понять не могу. Устанавливал шаблон не квикстартом, поэтому смена картинки работать не хочет. Скажите, если реализовать вышеописанное решение, не возникнет ли проблем, или, может кто-то сможет подсказать как реализвоано в этом шаблоне. Sj Papa http://demo.smartaddons.com/#sj-papa
admin
Здравствуйте!
Так трудно сказать, нужно пробовать.
Татьяна
Все сделала, как описали, только путь был дугой, файлы правила в папке шаблона.
В итоге описание - да, опустилось под фото, а вот 2 картинки так и не добавились. На всякий случай прописала и css, но, как видите http://handmode.ru/store/rasprodaga.html ничего не происходит с картинками, хотя в каждом товаре есть дополнительные фотографии.
admin
Скорее всего не внесены изменения в файл \components\com_virtuemart\views\category\view.html.php
Дмитрий
В последний версиях VM чуток код изменился во view.html.php
Строка 156 меняем
$productModel->addImages($this->products['0'], $imgAmount );
на
$productModel->addImages($this->products['0'], 2 );
admin
Спасибо за дополнение.
Денис
Здравствуйте! А как сделать тоже самое в третьем вирте?
Заранее признателен за ответ!
admin
Здравствуйте!
Алгоритм тот же, но в рамках комментария трудно подробно ответить.
Нужно писать отдельную статью.
Постараюсь выложить в ближайшее время.
Денис
Было бы замечательно! Спасибо!
Micel
Здравствуйте, в шаблоне категорий тоже интересно смену можно сделать я сделал так:
Все вроде ок но вот в css уже не прокатывает пропадает при наведении первая картинка а вторая не появляется
admin
Пришлите ссылку на сайт.
PRammer
А как сделать в Virtuemart3? Требуется делать для модуля VM - Featured products.
admin
Это стандартный модуль товаров virtuemart?
sprosikuda
Добрый день! А работает ли на VM3? Стандартный шаблон.
yuri
Здравствуйте. Как узнать путь ,где можно отредактировать это
browse-view .product .spacer .product-image {
height: 250px;
padding: 71px 0 0px 0;
border-bottom: 1px solid #f0f0f0;
text-align: center;
position: relative;
admin
Лучше добавлять все стили в отдельный файл стилей в самом шаблоне.