Обновил свою давнюю поделку для перепозиционирования модулей в макетах и добавил поддержку opencart 2.
(далее…)Со времени последней заметки, в модуль была добавлена новая функция, позволяющая объединять несколько CSV колонок и выводить их в одно DB поле.
Работает это следующим образом:
Система шаблонизации очень простая — в вашем распоряжении два инструмента:
Интерполяция переменных — {{ variable }}
Циклы перебора — [@each (item,iter) <= variable] …. [@endeach]
В текущей реализации одно без другого не существует, поскольку переменные которые вы создаёте в интерфейсе подразумевают использование циклов, однако в будущем, вероятно, будут добавлены встроенные переменные.
Заменить значение — заменяет всё что было получено из CSV файла на результат рендеринга.
Добавить до/после — добавляет результат рендеринга либо в конец поля БД, либо в начало.
Довёл проект до более-менее стабильного состояния и выложил на гитхабчег.
Модуль распространяется под лицензией GPL v. 3, это означает, что вы свободно можете использовать его и распространять!
Если вы нашли ошибку, или хотите помочь — с удовольствием приму ваши Pull requests и постараюсь ответить на вопросы в Issue.
https://github.com/ikenfin/fo-csv
Вчера ночью очень плотно занимался субмодулем экспорта, и, кажется, оно работает!
Поля экспорта полностью настраиваются, ZIP с изображениями собирается, теперь нужно добавить утилиты управления состоянием экспортёра и несколько мелочей.
Самый острый вопрос на данный момент — очистка от временных файлов. Пока не уверен как именно и в какой момент буду её производить.
Прошла ровно неделя с последней записи, обновлений совсем немного, но они есть.
Во-первых убрал опцию «пропустить первую строку» и добавил возможность указывать количество пропускаемых строк.
Добавил возможность установки условий пропуска строк при отсутствии данных в определённых ячейках:
Смысл опции прост — если поле не заполнено или его нет, строка пропускается. Это может быть весьма полезно, если нужно импортировать товары, содержащие определённые поля.
В бэкенде тоже есть несколько мелких апдейтов — добавил автозаполнение отсутствующих полей профиля чтобы избежать падений модуля при обновлении формата профилей.
Удалил DB_PREFIX из всех полей, которые видит юзер — совершенно не понимаю — зачем я их туда добавил вообще:
Доработал режим «Удалить несовпавшие», теперь он вполне рабочий. В силу высокой вероятности потери данных при использовании этого режима, теперь при его выборе появляется предупреждение, а также дополнительное подтверждение при клике по кнопке импорта:
Пока что имеются только наброски UI, функционала за ними пока что никакого.
К сожалению, я так и не понял как мне сделать разбивку моделей и унаследовать модель импорта и экспорта от какой-либо базовой модели без костылей, поэтому есть вероятность, что модель экспорта изнутри будет многое копипастить из импорта.
Общая идея такая же как и в импорте — колонки будут полностью управляться пользователем, будут профили экспорта, будут кастомизируемые дамперы атрибутов и будет возможность запаковки и выкачивания изображений вместе с csv.
Подумываю также добавить сохранение истории экспорта, чтобы можно было скачать уже готовые дампы в случае необходимости.
В таком случае, если всё пройдёт гладко, то у модуля будет перспектива использования в качестве бэкап/рестор системы.
С момента начала проекта прошёл почти месяц. За это время проект немного подрос, были исправлены глупые ошибки, и реализовано немного нового функционала.
Добавил интерфейс для экспорта/импорта профилей импортёра, в будущем полагаю, если модуль зайдёт пиплу, можно будет обмениваться готовыми профилями в формате JSON и не парить себе голову с импортом любого CSVшника.
С атрибутами сложилась забавная история. Изначально я тестирую и подгоняю профиль импорта под формат обмена Advantshop, поскольку на мой взгляд там формат выгрузки наиболее полный.
Сделал возможным создавать свои парсеры атрибутов с помощью OCMOD, каждому парсеру можно задать ряд параметров которые будут запрошены и переданы в парсер
На данный момент поддерживается два вида опций — текстовое поле и поле сопоставления с CSV.
Последний тип полей добавил для парсера атрибутов по колонкам.
Не поленился и перевёл весь интерфейс на русский язык, так что на данный момент поддерживается два языка.
На очереди осталось потестировать более глубоко еще несколько различных CSV выгрузок и сделать модуль более стабильным. Кроме того, планирую уже начинать ваять интерфейс и бэкенд для экспорта данных в CSV. Как только закончу с этим — модуль отправится в Opensource.
Ну что, вот и запустился проект!
Будем считать дату 18.04.2018 — точкой отсчета