Последние темы


catalogfill и изображения

  • Здравствуйте, такой вопрос.есть xls документ в котором имеется уникальный код товара,название книги и тд,а так же ссылка на изображения на стороннем ресурсе. я просто подставляю путь к img src на эти сторонние ресурсы.
    alt text
    Но дело в том что картинки весят по 1-2 мб.
    Подскажите пожалуйста ход действий как мне их от туда вытащить,а потом загрузить к себе на сайт и можно ли это сделать через catalogfill?

  • В конфиге в функции filter_import() написать код, который будет скачивать картинку и загружать на свой сервер.

    Пример кода:

    $imageUrl = ... // URL файла картинки на удаленном сервере
    $imageFilePath = ... // полный путь файла картинки на этом сервере
    file_put_contents($imageFilePath, file_get_contents($imageUrl));
    

    http://php.net/file-get-contents
    http://php.net/file-put-contents

  • Эта запись удалена!
  • Эта запись удалена!
  • @andchir Работает,если указывать имя фото,то скачивает одну фотографию,а у меня скопировано много строк url в файл bb.txt

    $imageUrl = './bb.txt';
    $imageFilePath = './img/'.foto.'.jpg';
    file_put_contents($imageFilePath, file_get_contents($imageUrl));
    
  • @andchir

    вот ,помогли .файл
    http://badja94f.beget.tech/bb.txt

    $url = 'http://badja94f.beget.tech/bb.txt';
    $photos = explode(PHP_EOL, file_get_contents($url));
    
    foreach ($photos as $photo) {
        $fname = './img' . substr($photo, strripos($photo, '/'));
        file_put_contents($fname, file_get_contents($photo));
    }```
     закачка на сервер происходит,но вес картинок 0 байт,а при попытке открыть  пишет:
    '{"message": "('Unsafe header value %r', b'/tmp/fm/everest4.beget:9443/badja94f/5dd2f6cedb8cf4b44d2f139c6ccf313c/ITD000000000291758_cover1.jpg\\r')"}'
  • У вас же вроде ссылка на картинку есть в XLS файле. Оттуда и надо её брать.

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

    $imageUrl = ... // URL файла картинки на удаленном сервере```
    
    я имею ввиду какой путь урл. если у меня ссылок тысячи, а скачивание работает, если указывать только одну ссылку.
  • Там по умолчанию в этой функции есть закомментированный пример как брать значение. На этом форуме много примеров можно найти. Вы просили "ход действий", а теперь получается, что вам нужно готовое решение.

    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr) {
        $imagesDirUrl = MODX_BASE_URL . 'assets/images/';
        $imagesDirPath = MODX_BASE_PATH . 'assets/images/';
    
        $output_arr = $value_arr;
        
        if(isset($output_arr['tv'][10])) {
            $imageFilePath = $imagesDirPath . basename($output_arr['tv'][10]);
            if (!isset($imageFilePath)) {
                file_put_contents($imageFilePath, file_get_contents(trim($output_arr['tv'][10])));
            }
            $output_arr['tv'][10] = $imagesDirUrl . basename(trim($output_arr['tv'][10]));
        }
        
        return $output_arr;
    }
    

    Не проверял. 10 - это ID TV параметра картинки, который вы указали в конфигурации.

 

Последние комментарии

  • @Yiliy

    то есть без имени

    Видимо потому что у вас отключено, а в XML алиаса я не увидел

    //автоматически генерировать псевдоним (alias) при импорте //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит. $cf_config['imp_autoalias'] = false;

    Читать далее
  • Y

    Проблема была оказывается в том, что оно не видело
    <Title>pagetitle</Title>
    Я поменял на
    <Title><item>pagetitle</item></Title>
    и все импортировалось успешно но теперь в каталогах вместо url ресурсов отображается /сайт/каталог/.html
    то есть без имени и после перехода на страницу товара появляется ошибка 403

    Читать далее
  • M

    Поменялся дизайн.
    Новая корзина, всплывающие окна и прочие фишки сверстаны. Нужно переподключить, разобраться с возможным конфликтом JS.
    Что, где и как лежит -- покажу.

    Скайп mas_hate

    Читать далее
  • В $cf_config['imp_xml_structure'] должен быть XML, который в файле повторяется. Также нужно настроить
    параметр $cf_config['imp_xml_itemsparent_path']. Покажите полный файл, который импортируете.

    Читать далее