Domanda

Sto pensando di mettere l'inventario di un negozio su un sito Drupal e mi chiedo se sia possibile creare uno script (forse in python / php?) per inserire automaticamente i dati in Drupal con CCK? Grazie in anticipo!

È stato utile?

Soluzione

Esistono un paio di moduli Drupal dedicati a diversi scenari di importazione (di massa) esterni - controlla questa panoramica per opzioni / confronti.

Se hai esigenze molto specifiche, potresti scrivere il tuo modulo, usando quelli esistenti e link / suggerimenti forniti da googletorps (+1) per indicazioni su come eseguire l'inserimento effettivo ignorando le generalizzazioni.

Altri suggerimenti

La cosa più semplice e veloce sarebbe fare le cose con un piccolo modulo Drupal che crei per il caso, invece di dover inviare molti post sul server e spendere risorse per caricare i nodi e cosa no.

Comunque, ciò di cui hai bisogno è abbastanza simile a ciò che Mac risponde qui :

In questo caso non hai bisogno di tutte le cose speciali di file_field, ma devi comunque inserire i valori per i diversi campi cck che potresti avere e il corpo e il titolo del nodo. Dopo aver impostato il valore che potresti ottenere direttamente dal tuo database, puoi salvare il tuo nodo.

Se ti connetti direttamente al db, devi avere lo stesso tipo di quello che usi per drupal o farlo al di fuori dell'api Drupal. Se usi l'API drupal per questo, dai un'occhiata a db_set_active ()

Molti buoni suggerimenti sono già stati fatti da Henrik e Googletorp.

Alcuni elementi aggiuntivi da considerare per progettare la tua strategia:

  1. Hai intenzione di realizzare un negozio elettronico completo (presumibilmente realizzato con ubercart ) o stai semplicemente impostando una vista di nodi, solo per presentare l'inventario ai visitatori del sito?
  2. Quanti prodotti hai intenzione di importare?
  3. Con che frequenza li reimporterai?

Soluzioni che vorrei escludere di sicuro:

  • POST: come commentato da googletorp, sarebbe eccessivamente complicato.
  • Script esterno: non puoi davvero evitare (a meno che non ti piaccia vivere pericolosamente e / o non abbia tempo da perdere) utilizzando l'API drupal, siano esse le core o quelle di Ubercart. I dati sono sparsi su più tabelle e ci sono molti hook attivati ??quando viene inserito un nodo. L'unica eccezione è se dovessi fare uno script PHP che esegua prima il bootstrap (vedi la struttura di index.php o xmlrpc.php per vedere come funziona), ma in tal caso preferirei optare per un modulo del tutto: molto più elegante, portatile, mantenibile.

Soluzioni che supporterei:

  • Crea il tuo modulo! Come sottolineato da googletorp, ho fornito un codice di esempio su come aggiungere campi CCK in questa risposta .
  • Sì, questo è ... è l'unico in cui credo! ;)

Tuttavia, ciò che ho imparato è altrettanto importante, è scegliere una fonte di dati adatta per l'importazione . Ecco la mia opinione:

  • Leggi direttamente da DB: Buono solo se devi importare cose una volta per tutte e se lo schema DB dell'applicazione di esportazione è abbastanza semplice da creare query sensate . Il software cambia ed evolve e seguono gli schemi DB. Se ti trovi nella necessità di reimportare tra due mesi e lo schema dell'altra tua applicazione è cambiato, dovrai cambiare il tuo codice, cambiare test, ecc, ecc ...
  • Usa file XML: se l'applicazione originale può esportare in questo formato, con PHP ' SimpleXML e Xpath + PHP la tipografia è davvero un brezza per ottenere i dati desiderati nel formato desiderato in pochi minuti. L'unico aspetto negativo di questo metodo è che si basa su ... file. Quindi, se è necessario disporre di importazioni periodiche senza pilota e automatiche, è un po 'una seccatura prevedere tutti i problemi che possono verificarsi (autorizzazioni errate su filesystem, file danneggiati, codifica errata ...) e mettere in atto contromisure . Viceversa, mi piace molto questo metodo per quando so che qualcuno supervisionerà continuamente il processo di importazione e può intervenire in caso di problemi.
  • Servizio web: è quello che mi piace di più se devo importare in modo automatico e periodico. Il più grande vantaggio è che le due applicazioni "parlano". tra loro ed esporre alcune delle loro logiche aziendali, in modo che tu possa effettivamente avere una sessione che assomigli a: "hey, ho bisogno di tutti i prodotti che hanno cambiato i prezzi dalla scorsa settimana" - " eccoti qui, dovrebbero essere 127, in tre categorie, lo copi? " - " Oh yeah ... Li hai fatti tutti forti e chiari: 127 articoli e 3 categorie! " ;. Questo semplifica molto errori ed eccezioni di trapping. Mentre Drupal è pronto come consumatore e fornitore di servizi Web, dovrai implementare il servizio Web anche sull'altra applicazione, e questo potrebbe essere o non essere difficile: dipende totalmente dall'applicazione di esportazione.

HTH!

CCK o altro, è solo una query POST ben formata (presumibilmente), quindi certo, provaci.

Se i tuoi dati di origine sono in MySQL, guarderei il modulo Migrate per creare soddisfare. Ecco un estratto dalla sua pagina del progetto:

  

... fornisce un framework flessibile per la migrazione di contenuti in Drupal da altre fonti (ad esempio, durante la conversione di un sito Web da un altro CMS a Drupal). Sono inclusi il supporto immediato per la creazione di oggetti Drupal di base come nodi, utenti, file, termini e commenti - può essere facilmente esteso per la migrazione di altri tipi di contenuto. Il contenuto viene importato e ripristinato utilizzando un'interfaccia Web in bundle (modulo Migrate UI) o comandi Drush inclusi (fortemente consigliato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top