Drupal 7 - Code for Exporting all your content nodes in json files

May 22, 2020


When I migrated all of my drupal-7 website to drupal-8, I wrote automation to import all my old nodes into new drupal-8. Drupal did not provide any best way to migrate all of my nodes. So, I wrote this automation.

In this post, I will describe how I exported all my nodes into JSON files. In another post, I will explain how I imported them, with their URL alias intact.

Php code

{% highlight php linenos %}

name; } return $txNames; } function getUser($uid) { $u = user_load($uid); return $u->mail; } ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// // Execution starts from here $nid = 1905; $howMany = 100; $till = $nid + $howMany; $dir = '/var/www/html/sites/default/files/exports/nodes'; for ($i=$nid; $i < $till; $i++) { $nd = node_load($i); if (!isset($nd) || !isset($nd->nid)) { continue; } $nd->user = getUser($nd->uid); //switch node type switch($nd->type) { case 'add_drawings': $nd->field_drawing_tags = getTermNames($nd->field_drawing_tags); $nd->field_drawing_category = getTermNames($nd->field_drawing_category); $nd->field_drawing_software = getTermNames($nd->field_drawing_software); break; case 'article': $nd->field_tags = getTermNames($nd->field_tags); $nd->field_article_category = getTermNames($nd->field_article_category); break; case 'page': case 'youtube_videos': //nothing special break; case 'my_book_reference': $nd->field_book_category = getTermNames($nd->field_book_category); break; case 'my_toolbox_reference': $nd->field_tool_category = getTermNames($nd->field_tool_category); break; default: print "\nHow on earth this can be possible! Type: ".$nd->type."\n"; } $alias = drupal_get_path_alias('node/'.$i); $folder = $dir . '/' . $nd->type; if (!file_exists($folder)) { mkdir($folder, 0777, true); } $filepath = $folder . '/' . $nd->nid . '.json'; $nd->alias = $alias; $data = json_encode((array)$nd); //write writeFile($filepath, $data); print "Written nid: ".$nd->nid.', alias: '.$alias."\n"; //print $data."\n\n"; } {% endhighlight %} ## Explanation of code See the comment which says: *Execution starts from here*. Line no. 33 Note: I ran this code through the devel/PHP module. So, this has a small timeout value when running a PHP script. So, I'm running this with 100s of nodes at a time. So, that loop where I'm starting nid=1905, you can start it from *1* *Line no 37*, the directory where I want to save the JSON files. *Line no 45*, Fetching author of the node and saving user details in an attribute in JSON. *Line no 48*. A switch case on my content types. *Line no 50*, saving term name. As in new DB. The term id will not be the same, but my taxonomy term name was unique in a vocabulary. *Line no 77*, saving the alias of node. The rest of the code is pretty easy to understand.

Similar Posts

Latest Posts