Отключение разделения запятой при импорте

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

Александр Б M
Александр Б M
Репутация: 3
Сообщения: 30
Зарегистрирован: 21.07.2016
С нами: 2 года 10 месяцев

Сообщение #1 Александр Б » 24.08.2016, 20:07

Здравствуйте, столкнулся с проблемой при импорте изображений товаров, так как в URL путей изображений есть запятые, которые служат разделителем для нескольких фотографий. В моем случае у всех товаров только 1 фото, подскажите пожалуйста какой файл и в каком месте подправить чтобы импорт обрабатывал запятые как часть пути к фото, а не разделитель.

Vitaly
Аватара
Vitaly
Репутация: 19
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 2 года 10 месяцев

Сообщение #2 Vitaly » 24.08.2016, 20:16

\backend\ajax\index.php
Есть такие строки:

Код: Выделить всё

    private $import_files_dir      = 'backend/files/import/'; // Временная папка
    private $import_file           = 'import.csv';           // Временный файл
    private $category_delimiter = ',,';                       // Разделитель каегорий в файле
    private $subcategory_delimiter = '/';                    // Разделитель подкаегорий в файле
    private $column_delimiter      = ';';
    private $products_count        = 10;
    private $columns               = array();

Можете попробоать сменить разделители

Александр Б M
Александр Б M
Репутация: 3
Сообщения: 30
Зарегистрирован: 21.07.2016
С нами: 2 года 10 месяцев

Сообщение #3 Александр Б » 24.08.2016, 20:48

Да нет, это разделители столбцов. Скорее всего подправить нужно здесь (в том же файле), только вырезка не помогает:

Код: Выделить всё

// Изображения товаров
            if(isset($item['images'])) {
                // Изображений может быть несколько, через запятую
                $images = explode(',', $item['images']);
                foreach($images as $image) {
                    $image = trim($image);
                    if(!empty($image)) {
                        // Имя файла
                        $image_filename = pathinfo($image, PATHINFO_BASENAME);
                       
                        // Добавляем изображение только если такого еще нет в этом товаре
                        $this->db->query('SELECT filename FROM __images WHERE product_id=? AND (filename=? OR filename=?) LIMIT 1', $product_id, $image_filename, $image);
                        if(!$this->db->result('filename')) {
                            $this->products->add_image($product_id, $image);
                        }
                    }
                }
            }


Кстати в комментах две опечатки подряд

Vitaly
Аватара
Vitaly
Репутация: 19
Сообщения: 109
Зарегистрирован: 15.08.2016
С нами: 2 года 10 месяцев

Сообщение #4 Vitaly » 24.08.2016, 21:09

Вы бы дали пример проблемной ссылки на изображение, а лучше всю строку из CSV, может оно бы легче было. А то в очередной раз телепатов будем искать.

korshunov
korshunov
Репутация: 98
Сообщения: 978
Зарегистрирован: 03.12.2015
С нами: 3 года 6 месяцев
Skype

Сообщение #5 korshunov » 25.08.2016, 09:12

Попробуйте вместо
$images = explode(',', $item['images']);
вставить
$images = array('$item['images']);

Александр Б M
Александр Б M
Репутация: 3
Сообщения: 30
Зарегистрирован: 21.07.2016
С нами: 2 года 10 месяцев

Сообщение #6 Александр Б » 25.08.2016, 15:07

korshunov писал(а):Попробуйте вместо
$images = explode(',', $item['images']);
вставить
$images = array('$item['images']);
Выдал ошибку.
Истина где-то рядом )) Кстати файл не тот же, а \backend\ajax\import.php
Вот пример проблемного изображения:
http://xn----7sbbagv9a0aajf4ag2p.xn--p1ai/compone ... alnoy zhidkosti 2,5ml 1sht.jpg

Добавлено спустя 8 минут 44 секунды:
Кажись заработало, убрал лишнюю кавычку после скобки перед $item
$images = array($item['images']);
Спасибо, korshunov!

korshunov
korshunov
Репутация: 98
Сообщения: 978
Зарегистрирован: 03.12.2015
С нами: 3 года 6 месяцев
Skype

Сообщение #7 korshunov » 25.08.2016, 16:07

Ага, кавычка действительно лишняя. Исправил.


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость