Импорт из CSV в OctoberCMS

В OctoberCMS из коробки есть возможность импортировать (и экспортировать) модели из csv-файлов. Как подключить импорт-экспорт к своим моделям — можно прочитать в небольшом мануале. А я пока попробовал импортировать посты прямо с домовой страницы, благо в плагине Blog импорт-экспорт уже подключен.

Выглядит это примерно вот так:

Загружаем csv-файл, устанавливаем соответствие между столбцами файла (слева) и полями модели (справа) и нажимаем «Импорт». И посты импортируются.

В процессе выгрузки из Drupal 6 (с помощью Views data export) и загрузки в October обнаружил несколько небольших проблем, которые нужно было решить перед импортом.

1. По умолчанию, если поле тизера у ноды не задано, в экспорт попадет копия всего содержимого. А мы бы не хотели сохранять полную копию содержимого в excerpt импортированного поста.

2. В Друпале у ноды может быть сложный path alias. А для импорта в slug нам нужно что-то простое, желательно последняя часть пути, без слешей.

3. Импортируемые тексты изобилуют ссылками на /sites/default/files, хорошо бы их поменять на новое местоположение импортируемых файлов.

4. В текстах много вставок кода, можно их слегка подредактировать, чтобы автоматически подхватывался Prettify, который в October уже есть.

Конечно, всё это можно поправить некоторым количеством кода и/или дополнительных модулей в Drupal 6. Но зачем писать под Drupal 6, если мы мигрируем на новую платформу — лучше уж тогда под нее и написать. Так с платформой можно поближе познакомиться можно, да и под D6 писать в 2016 году уже радости мало. В общем, для автоматизированного решения этих проблем (и еще пары мелочей) смастерил небольшую команду для artisan. Команду надо натравить на csv-файл, а результирующий файл уже можно импортировать. Не то чтобы она получилась особо универсальная, но можно взять за основу и подправить под свои нужды. В общем, найти команду (и небольшое описание к ней) можно в гитхабе, в составе плагина BlogArchive.

P.S. Колонка «Опубликовано» (на скриншоте внизу) в оригинальном плагине отсутствует и все импортированные посты появляются снятыми с публикации. Поэтому пришлось ее добавить, чтоб вручную не публиковать.

Комментарии