День добрый. Появилась такая надобность неожиданно.
Как пересоздать все картинки анонса в каталоге?
Как пересоздать все картинки анонса в каталоге?
|
День добрый. Появилась такая надобность неожиданно.
Как пересоздать все картинки анонса в каталоге? |
|
|
|
|
|
|
|
|
|
|
|
Уточню что подразумевал.
У всех элементов торгового каталога картинки анонса (уменьшенные) поменялись параметры отображения (новые размеры) и соответственно из детальной картинки надо их пересоздать. |
|
|
|
|
|
удалите папку или все в этой папке
upload/resize_cache/iblock/ |
|
|
|
|
|
удалю и в какой же момент битрикс пересоздаст анонс.картинки?
|
|
|
|
|
|
а как только обратится к компоненту, который их использует
|
|
|
|
|
|
|||
|
|
|
|
всем спасибо попробую
|
|
|
|
|
|
Ну что? Решилась задача?
У меня вот загвоздка небольшая... все картинки хранятся в каталоге: /upload/iblock/ и если я удалю здесь все папки, то потеряю вообще все картинки... Как быть? |
|
|
|
|
|
Влад Перминов, я бы в цикле удалил все картинки анонса используя CIBlockElement::Update пройдясь по каждому элементу.
|
|
|
|
|
я так понимаю мне нужно страничку создать в которой описать цикл, который пробежится по всем разделам инфоблока и удалит картинки? Или есть в битриксе какая то фишка куда я напишу кусочек кода и он его выполнит? |
|||
|
|
|
|
Настройки -> Инструменты -> Командная строка PHP.
Там нужно будет сперва получить полный список элементов каталога, для этого используй GetList() - Сформировав массив, на его основе, уже обновляешь элементы Update() - Но сперва на одним элементе попробуй ) |
|
|
|
|
|
|||
|
|
|
Вот только что-то не понимаю как правильно через командную строку выполнить скрипт... Жалуется что класса такого не знает: Fatal error: Class 'CIBlockSection' not found in /home/u23318/ : eval()'d code on line 1 по этому мануалу пробовал Всё работает а вот CIBlockSection не находит( |
|||
|
|
|
|
В первой строке нужно подключить служебные классы Битрикса:
Ну или так, может не особо и правильно, но проще, по крайне мере мне.
|
|||||
|
|
|
|
Немного сдвинулся с места, но пока ещё не до конца)
Получил список разделов из 13-го инфоблока и в цикле попытаюсь обновить картинку, CIBlockSection::Update($ar_result['ID'],,,true) тут в скобках правда не ясно правда что писать. Ещё нашёл, что можно через CFile::ResizeImageGet эту функцию изменить картинки (получить массив картинок нужных и все их уменьшить). Как правильнее? |
|||
|
|
|
|
Как вариант, в шаблоне где картинки нужны новых размеров, сделать result_modifier.php и в нем отресайзить оригиналы CFile::ResizeImageGet этим, результаты кешируются
про result_modifier.php |
|
|
|
|
Редактировал следующие строки: Было:
|
|||||||
|
|
|
1) Ошибка в твоих изменениях в резалт модифаере кроется в том, что ты пытаешься сделать ресайз из первью картинки, которая и так маленькая. Т.е. ты пытаешься из маленькой картинки сделать большую, что битрикс делать не умеет (да и вообще мало кто умеет). Замени "PICTURE" на "DETAIL_PICTURE" (или в какой там переменной у разделов хранится детальная картинка) 2) Вот код для апдейта превью картинок у элементов(нужно что бы в настройках * стояла галочка генерации превью из детальной в любом случае) :
|
|||||||||||
|
|
|
|
Доброго вечера.
Выражаю благодарность за помощь со скриптом. Все работает, картинки при тесте обновились. Единственное НО. У меня в каталоге 43000 товаров. За 7 минут он обновил 36 директорий картинок из 4000 и похоже что остановился. Через ftp уже не вижу изменений. Колесико загрузки еще крутится, подождем до утра. Ошибок никаких не вывел. |
|
|
|
|
|
Нашел способ быстрее и проще.
Из админки выгрузить в ексель: внешний код с путем детальной картинки. В настройках инфоблока у анонсовой картинки поставьте галку "Создавать картинку анонса из детальной даже если задана". Сохраните таблицу в csv и загрузите её обратно (При импорте поставьте галку "Использовать настройки инфоблока для обработки изображений") В настройках инфоблока у анонсовой картинки уберите галку "Создавать картинку анонса из детальной даже если задана". |
|
|
|
|
|
|||
|
|
|
|
|||
|
|
|
|
||||
|
|
|
|||