Kors Опубликовано 1 октября, 2016 Жалоба Поделиться Опубликовано 1 октября, 2016 Встретился сайт с таким кодом в product.tpl {if category->id==65} {$product->image->filename|resize:1200:1200} {else} {$product->image->filename|resize:400:400} {/if} Задумка проста: захотелось показать в одной категории картинки большего размера 1200х1200, а в прочих - меньшего 400х400. В этой несложной ситуации предложенный метод будет разрешать каждый из ресайзов 1200х1200, 400х400 для ВСЕХ картинок... Выходит так: стандартный метод Simpla с использованием токенов работает точно и индивидуально с каждой картинкой. А предложенный здесь метод - глобально с размером, выставленным где-то хотя бы для одной картинки.Легко придумать и другие подобные ситуации, где предложенный метод даст подобные ошибки. Дополнительно ошибки могут возникать при использовании доработок для ресайза картинок, не относящихся к товарам... Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 2 октября, 2016 Жалоба Поделиться Опубликовано 2 октября, 2016 (изменено) Дополнительно ошибки могут возникать при использовании доработок для ресайза картинок, не относящихся к товарам... Это нужно уточнить в описании доработки. Kors, у меня вопрос -- дефолтно разве кроме изображений товаров еще что-то ресайзится? Изменено 2 октября, 2016 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 октября, 2016 Жалоба Поделиться Опубликовано 2 октября, 2016 В Simpla дефолтно, кроме изображений товаров, ничего не ресайзится. Цитата Ссылка на сообщение Поделиться на другие сайты
Igoresh Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Уважаемые Гуру, извините, что опять с глупыми вопросами, не очень силен в коде, но много чего уже сделал по Вашим доработкам.По этой есть вопрос, можно ли поподробнее указать после каких строк в файлах вставлять эти коды: в Design.php добавляем код $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":''); $image_sizes = array(); if($this->settings->image_sizes) $image_sizes = explode('|',$this->settings->image_sizes); if(!in_array($size, $image_sizes)){ $image_sizes[] = $size; $this->settings->image_sizes = implode('|',$image_sizes); } В Image.php добавляем код $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":''); $image_sizes = array(); if($this->settings->image_sizes) $image_sizes = explode('|',$this->settings->image_sizes); if(!in_array($size, $image_sizes)){ header("http/1.0 404 not found"); exit(); } Заранее спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 Design.php Image.php Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) Встретился сайт с таким кодом в product.tpl {if category->id==65} {$product->image->filename|resize:1200:1200} {else} {$product->image->filename|resize:400:400} {/if} Задумка проста: захотелось показать в одной категории картинки большего размера 1200х1200, а в прочих - меньшего 400х400. В этой несложной ситуации предложенный метод будет разрешать каждый из ресайзов 1200х1200, 400х400 для ВСЕХ картинок... Выходит так: стандартный метод Simpla с использованием токенов работает точно и индивидуально с каждой картинкой. А предложенный здесь метод - глобально с размером, выставленным где-то хотя бы для одной картинки.Легко придумать и другие подобные ситуации, где предложенный метод даст подобные ошибки. Дополнительно ошибки могут возникать при использовании доработок для ресайза картинок, не относящихся к товарам... для этого необходимо для каждой категории назначить доступные размеры, и при ресайзе проверять к какой категории относится товар, ничего сложного Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) для этого необходимо для каждой категории назначить доступные размеры, и при ресайзе проверять к какой категории относится товар, ничего сложного Если для Вас в этом "ничего сложного", попробуйте быстренько написать инструкцию.Думаю, потом будет забавная дискуссия об ошибках и исправлениях (подсказка - грубую логическую ошибку Вы допускаете даже в цитированной фразе)... Изменено 5 апреля, 2017 пользователем ahmed Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) "быстренько" могу теоретически разложить эту совсем не сложную задачу - суть ограничить ресайз картинок в определенных категориях Путем не сложного запроса к базе проверяем иды товаров к которым относится данный файл, далее берем категории в которых участвует товар, если в одной из категорий есть ограничения по размерам берем их и проверяем на соответствие в запрашиваемых размерах. ВСЕ! в первую очередь в настройки сайта поступают доступные размеры, если задан не доступный ресайза не будет, если задан размер которого нет в категории к которой относится товар, которому в свою очередь принадлежит файл, ресайза не будет. что тут сложного то? достаточно вывести в настройки категории все доступные размеры и отметить те которые доступны для конкретной категории, если же выбора нет значит доступны все. при смене размеров в категории чистим папку с ресайзами. дело 10 минут. если для вас это сложно или вы хотите усложнить эту задачу дело ваше... Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Путем не сложного запроса к базе проверяем иды товаров к которым относится данный файл, далее берем категории в которых участвует товар, если в одной из категорий есть ограничения по размерам берем их и проверяем на соответствие в запрашиваемых размерах. ВСЕ! "если в одной из категорий есть ограничения по размерам" - А что это такое, не очень понятно. Если Вы собираетесь УСТАНАВЛИВАТЬ возможность таких ограничений, то это можно делать очень по-разному. Если можно, конкретизируйте свое видение... Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) "если в одной из категорий есть ограничения по размерам" - А что это такое, не очень понятно. Если Вы собираетесь УСТАНАВЛИВАТЬ возможность таких ограничений, то это можно делать очень по-разному. Если можно, конкретизируйте свое видение... вы читаете не внимательно: достаточно вывести в настройки категории все доступные размеры и отметить те которые доступны для конкретной категории Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) "если в одной из категорий есть ограничения по размерам" - А что это такое, не очень понятно. Если Вы собираетесь УСТАНАВЛИВАТЬ возможность таких ограничений, то это можно делать очень по-разному. Если можно, конкретизируйте свое видение... Обратите внимание на название темы! Я прокомментировал возможность ограничить размеры для каждой категории но это не говорит о том что обсуждаемый вопрос относится к данной теме. Реализация ограничения крайне проста, я ответил как это можно реализовать и этого достаточно. Если у вас есть интерес ко всем возможным реализациям ограничения размеров ресайза - создайте соответствующую тему и ждите собеседников. Прошу вас вести дискуссию относящуюся к первому посту данной темы. Ранее Корс отметил Выходит так: стандартный метод Simpla с использованием токенов работает точно и индивидуально с каждой картинкой. А предложенный здесь метод - глобально с размером, выставленным где-то хотя бы для одной картинки. все именно так. Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 вы читаете не внимательно: достаточно вывести в настройки категории все доступные размеры и отметить те которые доступны для конкретной категории Не очень понятно. Имеете и виду, что в админке у категории создать поле, в которое вписывать размеры? Или что иное? Может, если это так несложно, выложите полный код вместо общих фраз? Быстрее было бы... А вопрос в чистом виде как раз по теме. Ибо в первом посте темы сказано "но при это запретить произвольную нарезку изображений". А пока выходит, что произвольная нарезка как раз и не запрещена - пример дан в #47... Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 Не очень понятно. Имеете и виду, что в админке у категории создать поле, в которое вписывать размеры? Или что иное? Может, если это так несложно, выложите полный код вместо общих фраз? Быстрее было бы... А вопрос в чистом виде как раз по теме. Ибо в первом посте темы сказано "но при это запретить произвольную нарезку изображений". А пока выходит, что произвольная нарезка как раз и не запрещена - пример дан в #47... хорошо, уточню – запретить произвольную нарезку изображений, тех размеров, которые не заданы в настройках сайта Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 хорошо, уточню – запретить произвольную нарезку изображений, тех размеров, которые не заданы в настройках сайта Это не "уточню". Это значит - запутаю еще дальше, написав явно бессмысленную фразу. Потому как в Simpla стандартно в настройках сайта не задается никаких размеров. Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) Это не "уточню". Это значит - запутаю еще дальше, написав явно бессмысленную фразу. Потому как в Simpla стандартно в настройках сайта не задается никаких размеров. запутываю? Функциональность и смысл дополнения с первой публикации не изменилась. При чем тут стандартная симпла и то чего в ней нет не понятно... если бы вы внимательней были то обратили бы внимание на то что размеры хранятся в переменной $this->settings->image_sizes, и смысл фразы заключался в том что если в этой переменной нет запрашиваемых размеров то ресайх не состоится ahmed, судя по всему вам просто не с кем пообщаться. надеюсь после прочтения данного поста пройдете мимо этой темы, потому как внести в обсуждение что то новое, кроме своей занудности, вы не в состоянии. Если вы думаете что мне не понятно с кем я общаюсь это не так, вам бы вместо того что бы заводить кучу левых аккаунтов на форме и писать всякую чушь просто прогуляться и подышит свежим воздухом. Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Это не "уточню". Это значит - запутаю еще дальше, написав явно бессмысленную фразу. Потому как в Simpla стандартно в настройках сайта не задается никаких размеров. ну е-мае, Ахмед, ну доработай, предложи... какого лешего критиковать БЕСПЛАТНУЮ доработку?Ты на Гитхабе также только в Issue строчишь с гневом? Или все же коммиты кидаешь для поддержки проекта? Решение из первого поста ставлю практически сразу после установки Симплы.... да -- Корс как всегда чутко нашел косяк, ну а разве его не может быть? Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 хорошо, уточню – запретить произвольную нарезку изображений, тех размеров, которые не заданы в настройках сайта А что Вы понимаете под "настройками сайта"? Добавленное разработкой значение $this->settings->image_sizes ?ИМХО, настройки, это то, что можно менять (настраивать). А в текущей доработке, кажется, нигде нет явной возможности менять этот этот список разрешенных размеров... Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) А что Вы понимаете под "настройками сайта"? Добавленное разработкой значение $this->settings->image_sizes ?ИМХО, настройки, это то, что можно менять (настраивать). А в текущей доработке, кажется, нигде нет явной возможности менять этот этот список разрешенных размеров... вы не правы - список доступных размеров дополняется автоматически. факт того что нет редактора доступных размеров не лишает эту переменную возможности хранить настроены размеры. ваше понимание настроек для меня не уместно. Изменено 5 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Давайте Корса вновь забаним? Кто за? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Он долго держался))Но натура берет свое... Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 вы не правы - список доступных размеров дополняется автоматически. факт того что нет редактора доступных размеров не лишает эту переменную возможности хранить настроены размеры. ваше понимание настроек для меня не уместно. Но это лишает админа настраивать эту переменную полностью как надо. Например, если в ней записан размер 850х650, который уже неактуален, то нет удобной возможности его удалить, но зато есть возможность недоброжелателям занимать дисковое пространство бесполезными изображениями... Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 5 апреля, 2017 Автор Жалоба Поделиться Опубликовано 5 апреля, 2017 Давайте Корса вновь забаним? Кто за? Я ЗА! Но это лишает админа настраивать эту переменную полностью как надо. Например, если в ней записан размер 850х650, который уже неактуален, то нет удобной возможности его удалить, но зато есть возможность недоброжелателям занимать дисковое пространство бесполезными изображениями... вы правы, это стоит учесть. чуть позже... Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 (изменено) Я ЗА! а я против, для бана не вижу причин, ведь спор по теме, без личных оскорблений в стиле Нокстера Изменено 5 апреля, 2017 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 5 апреля, 2017 Жалоба Поделиться Опубликовано 5 апреля, 2017 Он мозг всем выносит Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 6 апреля, 2017 Автор Жалоба Поделиться Опубликовано 6 апреля, 2017 (изменено) Еще один метод размеры изображений назначаются в макете, если файла не существует функция resize_modifier формирует название изображения с размерами и токеном для проверки. Смысл в том что бы отправить токет в сессию, после в resize.php проверить наличие этой сессии. если изображение вызвано напрямую с несуществующими размерами то сессии с данным токеном нет, а значит ресайз не состоится.в api/Design.php меняем функцию public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); $token = $this->config->token($resized_filename); if(empty($_SESSION['images_tokens']) || !in_array($token, $_SESSION['images_tokens'])) $_SESSION['images_tokens'][] = $token; return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded/*.'?'.$this->config->token($resized_filename)*/; }в resize/resize.php <?php session_start(); require_once('../api/Simpla.php'); $filename = $_GET['file']; $simpla = new Simpla(); $token = $simpla->config->token($filename); if(empty($_SESSION['images_tokens']) || !in_array($token, $_SESSION['images_tokens'])) exit('bad token'); $resized_filename = $simpla->image->resize($filename); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($resized_filename); }в index.php сразу после session_start(); unset($_SESSION['images_tokens']); Изменено 6 апреля, 2017 пользователем DaVinci Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.