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

What a pleasure to work with Freelock in launching our family website for the West Seattle community. John and Jill were vital to our success. We quickly saw that Drupal could handle our scope of requirements and thrilled to find that many of our wish list features were doable with such a capable staff. Communication and support are out of this world impressive with the Freelock team and set the standard for the industry. On time and in budget. Freelock is the clear choice.

Jackie Clough, Owner
West Seattle Family Zone

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