Qual é a melhor solução para importar arquivos CSV para nós ou entidades no Drupal 8 que oferece uma interface do usuário para que os editores de conteúdo possam importar regularmente?
Ouvi dizer que o D8 Migrate funciona bem, mas entendo que atualmente não há interface do usuário para o processo de importação.
A importação de CSV via feeds ainda não parece estar pronta.
8
migration
feeds
importing-exporting
Scott Anderson
fonte
fonte
Respostas:
Faço isso o tempo todo, utilizando entidades de configuração de migração (fornecidas pelo módulo migrate_plus ). Defina um plug-in de migração no diretório config / install do seu módulo de migração, usando o plug-in de origem CSV do módulo migrate_source_csv - omitindo a configuração de origem 'path', que será preenchida no formulário. Digamos que o ID dessa migração seja exemplo_csv. Crie um formulário com um elemento de upload de arquivo (chamado 'csv_file' neste caso) e no método submitForm ():
Isso atualiza as configurações de migração com o novo arquivo. Você ainda precisa executar a migração usando
drush mi example_csv
para realmente importar o conteúdo.Ou adicione algum código à função para realmente executar a importação:
fonte
Provavelmente é melhor e mais rápido usar o Feeds , mas como a versão D8 ainda está em desenvolvimento; Como alternativa, você pode usar o Excel + VBA ( Visual Basic for Applications , vem com Excel) + Internet Explorer 11.
Aqui está um exemplo de como você pode importar seu conteúdo CSV usando o VBA.
Por exemplo, vamos supor que você queira importar isso e criar novos nós com as informações do seu CSV:
Aqui está um código VBA de exemplo:
Certifique-se de alterar o nome do domínio na
myURL = "https://rgr79.ply.st/node/add/article"
linha do seu domínio. Estou usando um domínio simplytest.me , se você já não pode saber.Como adicionar o código VBA?
Clique na guia Desenvolvedor e, em seguida, no ícone Visual Basic (ou ALT + F11)
e cole o código dentro da Plan1 (Plan1)
Agora, na barra de ferramentas, clique em
tool
e depoisReferences
Você precisará rolar, encontrar e marcar
Nota: Eu sei que funciona com o Internet Explorer 11, não tenho certeza se funciona com o novo navegador Microsoft Edge.
Agora você está pronto para executar o script. Você pode fazer isso clicando no botão Reproduzir
Você também pode executá-lo clicando no ícone Macros (veja a imagem2), mas prefiro fazê-lo na janela do VBA.
Então você pressiona o botão play e uma janela do IE é aberta automaticamente e você vê o seguinte:
Ah, sim, você esqueceu de fazer login, lol.
Então, você prossegue o login no Drupal e fecha o explorer (já que o histórico de cookies salva o seu login) e planeja pressionar o botão play novamente. Mas você não é capaz de ... você vê o botão play acinzentado e não é capaz de fazer alterações no código VBA ... O que está acontecendo?
Bem, seu código ainda está sendo executado, então você precisa pressionar o botão Parar (redefinir).
Agora você pode clicar no botão play novamente e alegrar o mundo da automação.
Importante
Se você planeja inserir itens no campo Corpo (como estamos fazendo neste exemplo), como o Drupal 8 usa CKEditor para esse campo e CKEditor é JS, não podemos segmentar uma classe ou ID div; portanto, não podemos adicionar conteúdo dentro do CKEditor.
Felizmente, há uma solução alternativa. Verifique se as configurações de segurança do IE 11 estão definidas como Alta, isso automaticamente bloqueará todas as JS. Portanto, o CKeditor não será carregado e o campo do corpo será como os outros campos.
Se você precisar editar um exemplo de nós:
fonte
A multa acima está trabalhando para mim, mas
Migratin::Load()
esave()
método não está disponível no Drupal 8 3.x. Fiz algumas alterações acima no código sugerido por Mike Ryan. Aqui está o código de trabalho no manipulador de subrit de formulário.fonte
Agora você pode usar o módulo de importação de conteúdo ( https://www.drupal.org/project/contentimport ). Aqui está um post sobre como usá-lo: https://www.ostraining.com/blog/drupal/content-import-module/
fonte