Массовое изменение записей - загрузка изображений. ВОПРОС по корректности

InstantCMS 2.X

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

#1 16 октября 2021 в 18:00

Обнаружил один недочет, но сильно осложняющий работу с контентом на сайте.

Если через админку с помощью опции массовой замены значения в поле изображения загрузить одно изображение, то потом при редактировании и замене изображения в одной из записей, изображение вообще удаляется с сервера, в связи с чем становится недоступно в других записях. 
Полагаю, тогда либо надо при массовой замене изображения предлагать «создать картинку для каждой записи» или не удалять изображение с сервера, если меняется в одной из записей.

Как можно решить этот недочет сейчас? 

#2 16 октября 2021 в 18:41

Это происходит и притом, что если вы не все записи выделяете, а только некоторые?

#3 17 октября 2021 в 22:21

Это происходит и притом, что если вы не все записи выделяете, а только некоторые?

frukt

замена идет у тех, которые выделены. Просто сейчас 150 записей с такой заменой. Если я заменю в одной записи через редактирование, в остальных 149 эта картинка также удалится и там будет пустота.

#4 17 октября 2021 в 22:40

Ну всё правильно. Всем записям записывается одинаковое значение в бд. А в бд не хранятся изображения, а только текст — путь к файлу, например. И он у всех одинаковый. Когда в одной записи удаляем, то изображение удаляется с сервера, поэтому оно пропадает и у других записей. Получается, если вы хотите массово заменить картинку у 150 записей, то чтобы ничего не сломалось, надо не только записать в бд одинаковые пути, а еще создать 150*n одинаковых изображений (n — это количество пресетов). 

#5 18 октября 2021 в 12:17

Ну всё правильно. Всем записям записывается одинаковое значение в бд. А в бд не хранятся изображения, а только текст — путь к файлу, например. И он у всех одинаковый. Когда в одной записи удаляем, то изображение удаляется с сервера, поэтому оно пропадает и у других записей. Получается, если вы хотите массово заменить картинку у 150 записей, то чтобы ничего не сломалось, надо не только записать в бд одинаковые пути, а еще создать 150*n одинаковых изображений (n — это количество пресетов). 

Нифигаccе о-го-гошеньки

Верно. Но как это сделать? Либо при замене изображения с сервера не удалять старое. В моем случае это более предпочтительно. 

#6 18 октября 2021 в 13:57

 Def, вы пытаетесь сделать «заглушку» для поля с картинкой у определённых записей?

Я б решал такую задачу на уровне шаблона (проверка поля на заполненность и вывод заглушки). Если заглушки у разных групп записей должны отличаться, понадобится дополнительное поле (его выводить, когда основное поле пустое).

#7 18 октября 2021 в 14:06

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

#8 18 октября 2021 в 14:16

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

Def

С дополнительным полем — запросто.

По сути самое простое — не удалять картинку с сервера.

Def

Если для вас это действительно  просто, то да, решайте так.

#9 18 октября 2021 в 14:23

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

Def

С дополнительным полем — запросто.

По сути самое простое — не удалять картинку с сервера.

Def

Если для вас это действительно  просто, то да, решайте так.

Олег Васильевич я

для меня конечно это не проще, мне просто кажется, что это наиболее простой вариант, но какая строка отвечает за удаление картинки с сервера при ее замене в записи я не знаю. Если кто знает, подскажите пожалуйста.

#10 18 октября 2021 в 14:33

Вот весёлый вариант. Берём массив с id всех изменяемых записей, перебираем его, где берём загружаемую картинку, создаём ее копии, включая все размеры, меняя ее название на имя_файла_id.jpg, раскладываем картинки по папкам, для каждой записи записываем пути с ее id. А перед этим удаляем с сервера все предыдущие картинки. Правда,неизвестно, сколько дней это всё будет выполняться. Но это не важно, потому что этот вариант самый правильный и весёлый. А ещё веселее было бы проделать то же самое с полем Набор изображений.

#11 20 октября 2021 в 00:03

Вот весёлый вариант. Берём массив с id всех изменяемых записей, перебираем его, где берём загружаемую картинку, создаём ее копии, включая все размеры, меняя ее название на имя_файла_id.jpg, раскладываем картинки по папкам, для каждой записи записываем пути с ее id. А перед этим удаляем с сервера все предыдущие картинки. Правда,неизвестно, сколько дней это всё будет выполняться. Но это не важно, потому что этот вариант самый правильный и весёлый. А ещё веселее было бы проделать то же самое с полем Набор изображений.

Нифигаccе о-го-гошеньки

да, можно и так, но это уже сложнее, чем на проекте где-то отключить опцию, которая при замене картинки удаляет изображение с сервера)
Может кто знает, как отключить эту опцию?)

#12 20 октября 2021 в 09:19

А что теперь нельзя отдельно у записи поменять, не через массовую замену?

Добавлено спустя 3 минуты

Просто интересно стало. Нужно глянуть, как это вообще происходит? Один путь к нескольким записям. Там отдельная таблица для этого что ли?

#13 20 октября 2021 в 20:28

А что теперь нельзя отдельно у записи поменять, не через массовую замену?

Просто интересно стало. Нужно глянуть, как это вообще происходит? Один путь к нескольким записям. Там отдельная таблица для этого что ли?

Lora

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

#14 21 октября 2021 в 08:13

Понятно. Надо как то решать это дело.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.