Copying a node to a new type

Thu, 10/21/2010 - 09:55 -- John Locke

Drupal provides powerful tools that makes it easy to do all sorts of changes to your web site, but one change is difficult: changing the content type of a node after you've created it.

In general, once you create an item of a certain type, you cannot change that type without breaking it. But for one project, we needed to do exactly that.

We wanted to split one content type into two, and move the additional video, photo, and text fields over to the new type while keeping certain fields on the old type. And I came up with a quick way of accomplishing this task, thanks to Views Bulk Operations. Here's how.

  1. Create a VBO view and make "Execute arbitrary PHP Scripts" one of the operations.
  2. Select the nodes you want to change in the view.
  3. Use the following snippet to make the change:
unset ($object->nid); // this makes a copy of each node, instead of updating the existing one
$object->type = 'segment'; // Use the machine name of the new type
$object->comment = 0; // While we're at it, turn comments off
node_save($object);

That's it!

The above snippet will save all fields that are in both the old and the new content type, and ignore the data of any field that's not in your new type.

Of course, using PHP is a risky thing to do if you don't know what you're doing -- it's easy to destroy data if you're not careful. This type of operation should only be done after you have a solid backup, and not by novices. If you'd like our assistance, we're happy to help!

Story Type: 

Add new comment

Customer Feedback

I recommend you use Linux for your server(s). Mine are so reliable, it shocked me that after years of Microsoft-based expectations, I have no complaints now after many many years experience with Linux servers supporting a mixed Win2K and Apple OSX workstation network. Freelock has really opened my eyes to what I should be expecting from enterprise software. Linux is simply much better than anything Microsoft has done, and even on Microsoft's best day, Microsoft is too expensive, too proprietary and too unreliable. There is just no reason to keep putting ourself through that grief, constant change, and endless high cost.

George Roberston
George Roberston & Associates

Need More Freelock

       

About Freelock

We are located in Pioneer Square, in downtown Seattle. 83 Columbia Street #401 Seattle, WA 98104  USA [P] 206.577.0540 Contact Us/Directions | Site Map Get Updates ©1995-2011 Freelock Computing