Balya
@Balya
Люди и технологии

Как перенсти в Битрикс изображения по внешним ссылкам?

При редактировании сайта менеджеры часто копировали информацию с сайтов партнеров и вставляли как есть в визуальный редактор.
В итоге - многие фотографии встали с путями на другие внешние сайты.
Нужно какое-то решение, чтобы пройтись по всем записям, найти ссылки на внешние изображения, скачать их в uploads например и заменить пути.
Может кто-то сталкивался с подобной задачей?
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 2
@freekirill
Пишу под Битрикс
Вариант решения , если ссылки детальном описании элементов инфоблока, то
1) Получаем все элементы CIBlockElement::GetList
2) Ищем ссылки в блоке https://inverser.pro/123-poisk-i-zamena-ssylok-vnu... - вот что в сети можно найти как регулярку соченить
3) Грузим CFile::SaveFile
4) Меняем ссылку на файл
5) Обновляем элемент инфоблока
Ответ написан
Комментировать
@kudis
Bitrix developer
Если внутри инфоблока, то пробегаем GetList-ом
получаем ссылки регуляркой, что-то типа такой:
["'](((http[s]?:)?\/\/).*?\.(jp[e]?g|png|gif|tiff|bmp))['"]

если ссылки не полные, добиваем до http[s] и скармливаем скрипту:
// скачиваем файл
$file = CFile::MakeFileArray('http://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg');
// сохраняем в папку /uploads/saved/
$savedFileId = CFile::SaveFile($file, 'saved');
// получаем ссылку
$savedFileSrc = CFile::GetPath($savedFileId);

здесь $savedFileSrc новый относительный URL
на него заменяем внешние ссылки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы