adjuster

[РЕШЕНО] В категории при нажатии на картинку - увеличение картинки

15 сообщений в этой теме

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

Прошу помощи.

Нужно в категории при нажатии на саму картинку (не имя товара) сделать увеличение картинки, как это происходит в карточке товара.

Ковырял 2 файла: шаблон catalog.php и модель catalog.php

Смотрел, как это реализовано в product.php

Но там массивы, с которыми у меня не лады.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

ещё нужно смотреть product.tpl и category.tpl

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Само собой - их я тоже сравнивал.

Прошу помочь с массивом - не совсем понял, как реализован popup в продукте ((

Сам сделал:

редактируем всего 2 файла.

catalogcontrollerproductcategory.tpl

catalogviewthemedefaulttemplateproductcategory.php

catalogcontrollerproductcategory.tpl:

<?php if ($product['thumb']) { ?>
	  <div class="image" ><a href="<?php echo $product['image_popup']; ?>" title="<?php echo $product['name']; ?>" class="fancybox" rel="fancybox"> <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>"  alt="<?php echo $product['name']; ?>" /></a></div>
	  <?php } ?>

Добавляем строки $('.fancybox').fancybox({cyclic: true});

$('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a>');
  $('.fancybox').fancybox({cyclic: true});

и

$('.display').html('<b><?php echo $text_display; ?></b> <a onclick="display('list');"><?php echo $text_list; ?></a> <b>/</b> <?php echo $text_grid; ?>');
  $('.fancybox').fancybox({cyclic: true});

catalogcontrollerproductcategory.php:

Находим $this->data['products'][] = array

Примерно 204 строка

Добавляем

'image_popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'))

$this->data['products'][] = array(
'product_id'  => $result['product_id'],
'thumb'	   => $image,
'name'		=> $result['name'],
'description' => mb_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300,'UTF-8') . '..',
'price'	   => $price,
'special'	 => $special,
'tax'		 => $tax,
'rating'	  => $result['rating'],
'reviews'	 => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href'		=> $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id']),

'image_popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'))
);
-1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть свой минус в таком решении:

при переключении между витриной и списком при нажатии на картинку открывается картинка по ссылке.

Скрипт не подхватывается, пока не обновится страница.

Если у кого-то есть решения этого косяка - прошу ответить.

Решение вверху.

Изменено пользователем adjuster
0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмотрите на ссылку на изображение... возможно после переключения пропадает у ссылки класс class="fancybox"

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмотрите на ссылку на изображение... возможно после переключения пропадает у ссылки класс class="fancybox"

это полбеды..

при переключении сетка/список фактически удаляется каждый element <a class="fancybox" и создается такой же, но другой =)

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за поддержку )))

http://www.mnogosnov.ru/podushki

вот здесь это уже внедрено.

Проверяю Firebug - классы остаются на месте.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

$('.fancybox').fancybox({cyclic: true});

вот эту штуку нужно вызвать после display();

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо! catalogcontrollerproductcategory.tpl:

$('.display').html('<b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a>');
  $('.fancybox').fancybox({cyclic: true});

и

$('.display').html('<b><?php echo $text_display; ?></b> <a onclick="display('list');"><?php echo $text_list; ?></a> <b>/</b> <?php echo $text_grid; ?>');
  $('.fancybox').fancybox({cyclic: true});

Тогда внизу скрипт можно удалить

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

А у меня не получается. :( Появляется белая страница. Помогите мне, пожалуйста.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Файлы во вложении.

Шаблон стандартный.

Иначе темплейт помещаем в свой.

uvelichenie_foto_v_category.zip

2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отличное решение! Спасибо!

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как реализовать для 1.5.3.1? пишет ошибка fancybox

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решилось - везде "fancybox" заменил на "colorbox".

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как добавить на миниатюру слово "Увеличить"? Ведь человеку не понятно, что кликнув на картинку - картинка увеличится.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!


Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.


Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.