Creare nodi automaticamente da tabella.

7 contenuti / 0 new
Ultimo contenuto
Creare nodi automaticamente da tabella.

Ciao a tutti, sono un neofita di Drupal, me ne nintendo parecchio di Xhtml e CSS ed ora ho iniziato a studiare PHP nel poco tempo a disposizione, sto facendo un sito aziendale con Drupal che trovo molto ma molto più malleabile di Joomla ed ho la necessità di creare tanti nodi quanti sono gli articoli che l'azienda produce.

Ovviamente è un lavoro biblico da fare a mano visto che parliamo di circa 1500 articoli allora mi sono organizzato così, ho fatto un estrazione dal database aziendale con tutti i dati di ogni articolo dopodichè l'ho convertito in csv ed ho importato tutti i dati in una tabella con phpmyadmin, poi ho creato un altro file csv dove ho specificato la colonna titolo con il codice articolo, la colonna descrizione dove ho messo una chiamata alla tabella creata e attraverso una select con un where che punta al singolo articolo ed infine una colonna con il tid che punta alla categoria della tassonomia, creando una tabella html all'interno del codice nella descrizione e temizzandola con css.

Oltre a questo prima del codice php per la chiamata alla tabella ho inserito due tag html per inserire due immagini all'inizio dell'articolo.

Il tutto funziona a meraviglia, ma quello che mi chiedo io è:

visto che con questo sistema devo andare riga per riga prima di creare il csv a mettere quale articolo puntare nel codice php/sql, secondo voi è possibile creare un modulo che una volta che punta ad una tabella nel database drupal mi crei i nodi in automatico ad ogni riga che abbia come titolo il valore della prima colonna?

Grazie mille in anticipo per i consigli che vorrete darmi.

Oh si che è possibile, e senza creare un modulo - perchè esiste già: http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-w...

Non ho usato questi moduli, ma l'articolo è molto completo (anche se in inglese). In più mi sembra che tu hai già fatto la parte del lavoro più importante - creare la tabella dati 'legacy'.

Una volta 'importato' i dati però, non so se bisogna creare nuovi nodi per nuovi prodotti a là Drupal, o se puoi usare (di nuovo) la tabella per ri-importare... Credo che devi dedicare un pò di tempo per sperimentare...

Fateci sapere come procede...

HTH

John

Più imparo, più dubito.

Ok grazie mille per il consiglio lo proverò nel fine settimana, non sono abilissimo con l'inglese ma quando si tratta di smanettare sono imbattibile ;)

Vi farò sapere come va visto che credo una soluzione a questo annoso problema possa essere comodissima a tutti quelli che si accingono a fare un sito aziendale con un database di articoli da integrare :)

se hai un CSV come si deve e dall'altra parte un tipo di contenuto anch'esso fatto bene
prova http://drupal.org/project/node_import o http://drupal.org/project/feeds (screencast qui: http://vimeo.com/8180911)

...se usi node_import non impostare campi obbligatori nel content type (lo puoi fare dopo)

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
se hai un CSV come si deve e dall'altra parte un tipo di contenuto anch'esso fatto bene
prova http://drupal.org/project/node_import o http://drupal.org/project/feeds (screencast qui: http://vimeo.com/8180911)

...se usi node_import non impostare campi obbligatori nel content type (lo puoi fare dopo)

Avevo dimenticato di scriverlo comunque i nodi li creo già in automatico con node-import importando appunto il secondo csv di cui parlavo, solo che a me sarebbe piaciuto dover importare solo la tabella in phpmyadmin e poi da quella creare in automatico i nodi, ma forse pretendo troppo ;)

Puoi creare tu un modulo che legge la tabella con i dati originari e crea un oggetto $node e alla fine lo salva con node_save.
Ti consiglio di implementare la procedura come batch, dato che a furia di creare nodi è facile andare oltre il memory limit.

Pinolo wrote:
Puoi creare tu un modulo che legge la tabella con i dati originari e crea un oggetto $node e alla fine lo salva con node_save.
Ti consiglio di implementare la procedura come batch, dato che a furia di creare nodi è facile andare oltre il memory limit.

Ecco questa sarebbe la soluzione che cercavo, ma al momento non ho di sicuro le competenze per riuscire a farlo :/

Se qualcuno di buona volontà potesse aiutarmi gli ne sarei infinitamente grato ;)