Цитата |
---|
Серафима Тетерина написал: "Скорее взять то ее можно хоть откуда, только сохранит он картинку для элемента инфоблока в локальной файловой системе по своим правилам, " так вот не берет! если указать путь |
17.05.2017 22:04:45
|
|||
|
|
18.05.2017 09:03:05
делаете свойства- вставляете урл картинки в текстовое поле
в result_modifier инициализируете DISPLAY_PICTURE из свойства |
|
|
|
18.05.2017 11:26:39
Денис Сон, напишите поподробнее.
Как я понял, вы предлагаете сохранять для файлов картинок абсолютный адрес на другом ресурсе в detail_picture, а во время работы шаблона, благодаря обработке событий, получать эту картинку с удаленного сайта, сохранять ее во временный файл, а уже потом использовать в шаблоне эту временную копию. Как-то так? |
|
|
|
18.05.2017 11:33:25
Нет, не так.
Картинка сохраняется на API как обычно, как в документации:
А когда картинка извлекается любым способом - то срабатывает событие "OnGetFileSRC", и в результате получается, что возвращается SRC не такой как обычно (/upload/iblock/abc/image.jpg), а тот же самый http:// mysite.ru/image.jpg. Поэтому, теоретически, в шаблонах менять ничего не нужно. Но, повторю - это для сохранения через API. При добавлении картинки через админку она будет загружена как обычно. |
|||
|
|
18.05.2017 11:34:42
Т.е. получается, что на сайте хранится только URL картинки, и все. Лишний раз не загружается, а только когда будет выведена в шаблоне.
|
|
|
|
18.05.2017 11:43:04
Денис Сон, спасибо. Интересный опыт, какие задачи решает (кроме экономии места на собственном хостинге)?
|
|
|
|
18.05.2017 11:55:15
Сам пока не знаю какие он может решать задачи
Скрипт составил только сегодня, по мотивам данного топика. Вспомнил про указанные события и решил проверить как они работают. Оказалось, что работают не так, как хотелось бы, но данную задачу решить можно. В первом посте спрашивалось, как решить задачу без промежуточного сохранения - такое, в принципе, можно, но тогда не получится узнать размеры картинки, и чтобы картинку битрикс не превратил ее в application/octet-stream, нужно указать любую ширину и высоту отличные от нуля. Если совсем отказаться от хранения картинок у себя, и отказаться от получения размера, то кроме экономии места на хостинге можно еще и значительно ускорить процесс загрузки - т.к. загрузка картинок это самый длительный процесс при загрузке товаров. |
|
|
|
18.05.2017 14:32:08
Денис Сон, ну как бы...вы же понимаете, что браузеру лучше загрузить сто картинок на одном сайте с разных доменов, чем с одного.
Это связано с количеством одновременных соединений... Но это "улучшение" конечно имеет место быть, если все домены твои и ты можешь отслеживать скорость отдачи контента. Когда грузятся изображения с чужих сайтов, то это не очень. Во первых чужие картинки не хорошо тырить, во вторых не все сервера одинаково быстры, и какие то картинки могут и вовсе недозагрузиться. И есть один интересный способ, как мстить таким сайтам, которые тырят картинки, а вернее грузят с твоего сайта. Это на своем сайте меняем урл картинки, а по старому урлу отдаем какую нибудь левую картинку. |
|
|
|
18.05.2017 14:36:59
хорошо бы сделать поддомен и с него грузить все картинки на основной сайт. Но все остановилось именно на DETAIL_PICTURE. Думаю, в таком случае, если свой root сервер, то можно грузить картинки как обычно, а папку upload сделать символьной ссылкой для поддомена. Останется только в шаблоне вывода элементов - поправить вывод картинок. Наверное, так. |
||||
|
|
|||