adjuster

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

Рекомендуемые сообщения

adjuster    19

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

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

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

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

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

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

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


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

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

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


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

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

Прошу помочь с массивом - не совсем понял, как реализован 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'))
);

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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

http://www.mnogosnov.ru/podushki

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

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

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


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

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

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

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


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

Спасибо! 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});

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

    Ни одного зарегистрированного пользователя не просматривает данную страницу