Pergunta

Estou pensando em colocar o inventário de uma loja em um site Drupal e eu estou querendo saber se é possível criar um script (talvez em python / php?) Para inserir os dados automaticamente para Drupal com CCK? Agradecemos antecipadamente!

Foi útil?

Solução

Há um par de Drupal módulos dedicados a diferentes cenários de importações externas (em massa) - verificação esta visão geral por opções / comparações.

Se você tem necessidades muito específicas, você pode escrever seu próprio módulo, usando os já existentes e o Links / dicas fornecidas por googletorps (+1) para orientação sobre como fazer a inserção real, ignorando as generalizações.

Outras dicas

A coisa mais rápida e fácil seria fazer as coisas com um pouco de módulo Drupal que você faz para o caso, em vez de ter que enviar grandes quantidades de mensagens para o servidor e gastar recursos em cargas de nós eo que não.

De qualquer forma, o que você precisa para isso é bastante semelhante ao que respostas mac aqui :

Neste caso, você não precisa de todo o material especial file_field, mas você ainda precisa inserir os valores para os diferentes campos de CCK que você pode ter e o corpo nó e título. Depois de definir o valor que você pode obter diretamente do seu banco de dados, você pode salvar o seu nó.

Se você conectar diretamente para o db, você precisa de ter o mesmo tipo como o que você usa para o Drupal, ou fazê-lo fora do api Drupal. Se você faz uso da API do Drupal para isso, dê uma olhada db_set_active ()

Muitas boas sugestões ter sido feito por Henrik e Googletorp já.

Alguns elementos adicionais a considerar para projetar sua estratégia:

  1. Você vai fazer um e-loja de pleno direito (presumivelmente realizado com Ubercart ) ou você está simplesmente a criação de uma visão de nós, apenas para apresentar o inventário para os visitantes do site?
  2. Quantos produtos você está indo para importação?
  3. Quantas vezes você está indo para reimportar-los?

Soluções que eu me sentiria para excluir com certeza:

  • POST:. como comentado por googletorp, seria muito complicado
  • script externo: você realmente não pode evitar (a menos que você gosta de viver perigosamente e / ou tem tempo a perder) usando API Drupal, se eles são os principais ou os de Ubercart. Os dados são espalhados por várias mesas, e há uma abundância de ganchos que são acionados quando um nó é inserido. A única exceção é se você faria um script PHP que executar o bootstrap primeiro (veja a estrutura do index.php ou xmlrpc.php para ver como ele funciona), mas nesse caso, eu prefiro ir para um módulo completo:. muito mais elegante, portátil, de fácil manutenção

Soluções que eu apoiaria:

  • Faça o seu próprio módulo! Como apontado por googletorp, eu dei um código de exemplo sobre como adicionar campos de CCK em esta resposta .
  • Sim, isso é ... é o único Eu acredito em! ;)

No entanto o que eu aprendi é igualmente importante, é a escolher uma fonte adequada de dados para a importação . Aqui é a minha opinião:

  • Leia diretamente do DB: Boa somente se você tem que coisas de importação uma vez por todas e se o esquema DB da aplicação exportação é suficiente simples para criar consultas sensatas . alterações e evolui de software e esquemas DB seguir. Se você encontrar-se na necessidade de re-importação em dois meses e o esquema de seu outro aplicativo foi alterado, você terá que alterar o código, testes de mudança, etc, etc ...
  • Usar arquivos XML: Se seu aplicativo original pode exportar neste formato, com PHP' SimpleXML e XPath + PHP typecasting é realmente uma brisa para obter os dados que você deseja no formato desejado em questão de minutos. A única desvantagem deste método é que se baseia em ... arquivos. Então, se você precisa ter as importações não tripulados e automáticas periódicas, é um pouco de dor de prever todos os problemas que podem acontecer (permissões erradas sobre sistemas de arquivos, arquivos corrompidos, codificação errada ...) e para pôr em prática contra-medidas . Vice-versa, eu como este método muito para quando eu sei que alguém irá supervisionar o processo de importação o tempo todo e podem intervir em caso de problemas.
  • Webservice: Isso é o que eu mais gosto se eu tiver de importação de forma automática e periódica. A maior vantagem é que as duas aplicações "falar" uns com os outros, e expor algumas de sua lógica de negócio, de modo que você pode realmente ter uma sessão que parece: "hey, eu preciso de todos os produtos que mudaram preços desde a semana passada "- 'você está aqui, eles devem ser 127, em três categorias, você copiar que'? - "Oh yeah ... Tem todas elas alto e bom som: 127 itens e 3 categorias!". Este simplificar muito armadilhas erros e exceções. Enquanto Drupal trabalha fora da caixa como um consumidor webservice e provedor, você terá que implementar webservice também no outro aplicativo, e isso pode ou não ser difícil:. Depende totalmente da aplicação exportação

HTH!

CCK ou de outra forma, é apenas um bem formado consulta POST (presumivelmente), tão certo, ir para ele.

Se os dados de origem é no MySQL eu estaria olhando para o Migrate módulo para criar conteúdo. Aqui está um trecho de sua página do projeto:

... fornece uma estrutura flexível para a migração de conteúdo para Drupal a partir de outras fontes (por exemplo, ao converter um site de outro CMS de Drupal). Out-of-the-box, suporte para a criação do núcleo Drupal objetos, tais como nós, usuários, arquivos, termos e comentários serão incluídos - pode ser facilmente estendido para a migração de outros tipos de conteúdo. O conteúdo é importado e rolou para trás usando um pacote interface web (módulo UI Migrate) ou incluídos comandos Drush (altamente recomendável).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top