Какое лучшее решение для импорта файлов CSV в узлы или объекты в Drupal 8, которое предлагает пользовательский интерфейс, чтобы редакторы контента могли регулярно импортировать?
Я слышал, что D8 Migrate работает хорошо, но я понимаю, что в настоящее время нет интерфейса для процесса импорта.
Импорт CSV через каналы пока не готов.
8
migration
feeds
importing-exporting
Скотт Андерсон
источник
источник
Ответы:
Я делаю это все время, используя объекты конфигурации миграции (предоставляемые модулем migrate_plus ). Определите подключаемый модуль миграции в каталоге config / install вашего модуля миграции, используя исходный подключаемый модуль CSV из модуля migrate_source_csv, не указав исходную конфигурацию path, которая будет заполнена в форме. Допустим, идентификатор этой миграции - example_csv. Создайте форму с элементом загрузки файла (в данном случае с именем «csv_file») и в методе submitForm ():
Это обновляет параметры миграции новым файлом. Вам все еще нужно запустить миграцию, используя
drush mi example_csv
для фактического импорта контента.Или добавьте некоторый код в функцию для фактического выполнения импорта:
источник
Возможно, лучше и быстрее использовать Feeds , но так как версия D8 все еще находится в разработке; В качестве альтернативы вы можете использовать Excel + VBA ( Visual Basic для приложений , поставляется с Excel) + Internet Explorer 11.
Вот пример того, как вы можете импортировать ваш CSV-контент, используя VBA.
Например, предположим, что вы хотите импортировать это и создать новые узлы с информацией из вашего CSV:
Вот пример кода VBA:
Убедитесь, что вы меняете доменное имя в
myURL = "https://rgr79.ply.st/node/add/article"
соответствии с вашим доменом. Я использую домен simpletest.me , если вы уже не можете сказать.Как добавить код VBA?
Перейдите на вкладку «Разработчик», а затем на значок Visual Basic (или ALT + F11).
и вставьте код внутри Sheet1 (Sheet1)
Теперь на панели инструментов нажмите
tool
и затемReferences
Вам нужно будет прокрутить, найти и поставить галочку
Примечание. Я знаю, что он работает с Internet Explorer 11, но не уверен, что он работает с новым браузером Microsoft Edge.
Теперь вы готовы запустить скрипт. Вы можете сделать это, нажав кнопку Play
Вы также можете запустить его, щелкнув значок макроса (см. Изображение 2), но я предпочитаю делать это из окна VBA.
Итак, вы нажимаете кнопку воспроизведения, и автоматически открывается окно IE, и вы видите это:
Ах, да, ты забыл войти, лол.
Итак, вы переходите к входу в Drupal, а затем закрываете проводник (поскольку история файлов cookie сохраняет ваш логин) и планируете снова нажать кнопку воспроизведения. Но вы не можете ... вы видите, что кнопка воспроизведения неактивна и не можете вносить какие-либо изменения в код VBA ... Что происходит?
Ваш код все еще работает, поэтому вам нужно нажать кнопку Стоп (сброс).
Теперь вы можете снова нажать кнопку воспроизведения и порадоваться миру автоматизации.
Важный
Если вы планируете вставить материал в поле Body (как мы делаем в этом примере), так как Drupal 8 использует CKEditor для этого поля, а CKEditor - JS, мы не можем нацеливаться на класс или идентификатор div; таким образом, мы не можем добавлять контент внутри CKEditor.
К счастью, есть обходной путь. Убедитесь, что в настройках IE 11 Security установлено значение High, это автоматически заблокирует все JS. Следовательно, CKeditor не будет загружаться, и поле body будет таким же, как и другие поля.
Если вам нужно отредактировать пример узла:
источник
Выше работает нормально для меня , но
Migratin::Load()
иsave()
метод не доступен в Drupal 8 3.x. Я сделал некоторые изменения в приведенном выше коде, предложенном Майком Райаном. Вот рабочий код для обработчика формы sumbit.источник
Теперь вы можете использовать модуль импорта контента ( https://www.drupal.org/project/contentimport ). Вот сообщение о том, как его использовать: https://www.ostraining.com/blog/drupal/content-import-module/
источник