Автор Тема: Просмотр изображений с пропорциями оригинала (резиновое окно просмотра)  (Прочитано 1875 раз)

16 Июня 2013, 20:57:45
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Помогите, пожалуйста, решить проблему. Необходимо сделать так, чтобы окно просмотра Thickbox соответствовало размеру оригинального изображения. Поиск никаких вразумительных результатов не дает. Все изображения генерируются в тот размер, что указан в настройках (у меня стоит 800х800). Если загружаю картинку меньшего разрешения, Преста его, разумеется, растягивает. Предполагаю, что нужно запретить генерацию картинок для полноразмерного просмотра. Как это сделать?
Версия Prestashop 1.5.3.1
17 Июня 2013, 12:21:32
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22210
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Метод генерации назначается в админке в "Настройки > Изображения".
Можно выбрать автоматически, по ширине или высоте.
Отменить генерацию нельзя. Если генерация не нужна, то можно переделать класс ImageManager (/classes/ImageManager.php).
Найти строки (примерно 150) с определением генерации - "PS_IMAGE_GENERATION_METHOD" и подставить свои значения. (Этот способ отменит генерацию для всех изображений).

Можно ничего не переделывать. Просто заменять сгенерированные картинки для Thickbox по FTP на свои. В стилях указать размер окна.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
17 Июня 2013, 12:48:30
Ответ #2
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102473
  • Репутация: +34218/-0
    • Просмотр профиля
В файле jquery.thickbox.js заменить
imgPreloader=new Image();
imgPreloader.onload=function(){
  imgPreloader.onload=null;
  var pagesize=tb_getPageSize();
  var x=pagesize[0]-150;
  var y=pagesize[1]-150;
  var imageWidth=imgPreloader.width;
  var imageHeight=imgPreloader.height;
  if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;}}
  else if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;}}
на
imgPreloader=new Image();
imgPreloader.onload=function(){
  imgPreloader.onload=null;
  var imageWidth = imgPreloader.width;
  var imageHeight = imgPreloader.height;
Изменить стили в файле jquery.thickbox.css
18 Июня 2013, 00:57:03
Ответ #3
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответы. На данный момент в указанном файле заменил строку 20 на следующую:
imgPreloader=new Image();
imgPreloader.onload=function(){
imgPreloader.onload=null;
var pagesize=tb_getPageSize();
var x=pagesize[0]+500;
var y=pagesize[1]+500;
var imageWidth=imgPreloader.width;
var imageHeight=imgPreloader.height;
if(imageWidth>x)

При этом окно не стало "резиновым", но маленькие картинки перестали растягиваться, и в полноразмерном просмотре к ним стали добавляться пустые поля, увеличивающие до указанного в настройках размера. Не уверен, что это правильно. Информацию взял отсюда: http://sanikovich.com/rezinovyj-thickbox-v-prestashop-pri-prosmotre-izobrazhenij-produkcii.html.
Буду пробовать Ваш способ. А что нужно поправить в файле jquery.thickbox.css?