Drupal 7: cambiare il tipo di contenuto di un nodo

Se dobbiamo cambiare il tipo di contenuto di qualche nodo in Drupal 7 la soluzione più semplice è lavorare direttamente sul database. Drupal 7 memorizza il tipo di contenuto di un nodo nel database nella tabella node sotto il valore type e se il nodo ha dei commenti ci sono riferimenti ad essi nel database nelle tabelle field_data_comment_body e field_revision_comment_body sotto il valore bundle.

Capito come Drupal memorizza queste informazioni è semplice modificare il tipo di contenuto di un nodo con una qwery:

UPDATE node
SET type = 'NEW_NODE_TYPE'
WHERE nid=NODE_ID

e se si cambia il tipo di contenuto di più nodi che hanno qualche commento dobbiamo aggiornare anche le tabelle field_data_comment_body:

UPDATE field_data_comment_body
SET bundle = 'comment_node_NEW_NODE_TYPE'
WHERE entity_id IN (SELECT cid FROM comment WHERE nid IN  (SELECT nid FROM node WHERE type = 'NEW_NODE_TYPE' ))

e field_revision_comment_body:

UPDATE field_revision_comment_body
SET bundle = 'comment_node_NEW_NODE_TYPE'
WHERE entity_id IN (SELECT cid FROM comment WHERE nid IN  (SELECT nid FROM node WHERE type = 'NEW_NODE_TYPE' ))

 

Tags: