Добрый день. В настройках импорта есть пункт: "Формат импорта", где можно выбрать Файл или Ссылка. Правильно ли я понимаю, что Ссылка - это когда нужно импортировать с другого сайта и у меня есть ссылка, например, на прайс в формате YML? Спасибо.
Добрый день.
К сожалению, Ссылка - не работает. Этот функционал закладывался именно под это, но не был реализован, вероятно, из-за того, что в расширяющем процессоре совсем не сложно прописать импорт внешнего файла по ссылке. CURL в помощь.
Все ясно, спасибо!
Не за что!
Идет женщина, попарку, вдруг слышит голос из кустов. Инна, Инна!!!!
Подходит к кустам, а там лежит вжопу пьяный мужик и зовет кого-то. Инна,
Инна!!!! Женщина наклоняется, к мужику и говорит. Я не Инна, я Наташа. А
✅✅✅✅ 15 ООО рублей в день работая 15-20 минут за компьютером или ноутбуком!
✅✅✅✅ Pабoта для жeлaющих сaйт http://delocentr.ru
Николай, подскажите, пожалуйста, куда смотреть и в чем моя ошибка. Делаю импорт из yml. Категории создаются отлично, обновляются тоже. С товарами же такая беда: один товар создается и идет ошибка "Что-то пошло не так...". В консоли вижу такие ошибки:
Андрей, вам же четко пишет ошибку: Duplicate entry 'category' for key 'tmp_external_key'.
То есть вы пытаетесь в таблицу временных данных создать сразу несколько записей с одинаковым ключом. В данном случае у вас конфликтное значение - '', то есть пустая строка. Пустая строка - это тоже значение. Если этой блокировки по неуникальным данным не будет, у вас дубли наплодятся. Скорее всего это произошло в следствии того, что вы не указали при импорте уникальный ключ для категорий (то есть каждая запись должна иметь внешний ключ (1С-артикул или типа того)). Это необходимо не только для предотвращения появления дублей, но и для того, чтобы в дальнейшем при повторном импорте выполнялось обновление ранее существующих данных, а не создание каждый раз новых объектов.
А Attempt to set NOT NULL field parent to NULL - это MODX-ошибка. Вы пытаетесь создать документ без указания поля parent. Даже если родителя у документа нет, у него parent должен быть установлен 0.
Николай, странно, откуда у меня эта ошибка. Попробовал на чистом сайте импортировать - все залетело без проблем. А может быть из-за версии 2.6.0 ошибка? Или из-за того что в БД у меня уже много всего?
Так вы попробуйте теперь на ту чистую еще пару раз поверх прогнать. Но может на рабочем сайте структурные изменения каталога какие-то проводили.
Николай, нашел причину того, почему импорт не работал. Не работает он на новой версии 2.6.0 из-за нового события OnResourceCacheUpdate. Честно говоря, не знаю для чего это событие, но вот этот фикс проблему решил: https://github.com/modxcms/revolution/commit/719c29231279b44cd9a6f5cd5a49f181a44a63dd
Ну, это вообще проблема никак не связанная с модимпортером. Та ошибка в принципе фатальная и в случае ее возникновения php разваливаться будет.
Ну а может из-за это фатальной ошибки вываливаться импорт?
Конечно может, ведь весь php-процесс разваливался. Импортер создает документы. При сохранении документа вызывался несуществующий метод ($this->modx->invokeEvent вместо $this->xpdo->invokeEvent), из-за чего выполнение разваливалось.
Но это не имеет никакого отношения к Duplicate entry 'category' for key 'tmp_external_key'. Вот прям вообще никакого. Про это я написал в первом комментарии.
Так, с этим понял. А подскажите, как задать уникальный ключ, если например поле артикула у меня отсутствует? Использовать для этого ID документа в файле импорта? В коде это задается здесь?
Нет, этот метод используется уже непосредственно для обновления категорий, то есть когда временные данные уже записаны во временную таблицу и взяты для обновления категорий на сайте. Вам нужен метод StepWriteTmpCategories, то есть тот, в котором готовятся данные для записи во временную таблицу.
Какой вы ключ будете использовать для задания уникальности - это уже ваше дело. Вы сами что для себя логически там используете? Названия категорий? Если да, и если они уникальные, то да, можете их и использовать. Только имейте ввиду, что поле ключа ограничено по длине (смотрите системные настройки в modImporter, а лучше прям в базе данных смотрите структуру таблицы modx_site_content). Если так, то можете брать md5() заголовка. Тогда длина ключа будет фиксированное, а значение уникальное. Но в таком случае, если у вас заголовок в данных импорта хоть на символ изменится, будет создана новая категория.