Create node

How to create a new node in Drupal programatically

Here is an old story: How to create a node in Drupal programatically. This is my version.

Basics

First, if you have a general knowledge of a node structure, it would be much easier for you to create nodes by code. If you do not have such knowledge, don't worry; I will show you in this article.

First of all, a node is a container, containing data of your Story or Page etc. In code, it is represented as a PHP Object. All we do is creating an object and putting our data in it:

  1. global $user;
  2.  
  3. // Create new object.
  4. $node = new stdClass();
  5.  
  6. // Set desired data and metadata as members in object.
  7. $node->type = 'page';
  8. $node->uid = $user->uid;
  9. $node->title = 'node title';
  10. $node->body = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit...';
  11.  
  12. // Save the node
  13. node_save($node);

Note that if you don't set some values -Status or Promote to front page for example, they will be initialized by default values in Content type settings. If you want to overrode those values, set them as well:

  1. global $user;
  2.  
  3. $node = new stdClass();
  4. $node->type = 'page';
  5. $node->uid = $user->uid;
  6. $node->title = 'node title';
  7. $node->body = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit...';
  8.  
  9. $node->status = 0; // Not published
  10. $node->promote = 1; // Promote to front page
  11. $node->sticky = 1; // Sticky on top of list
  12.  
  13. node_save($node);

Here is a good place to have a look at a node structure. When you pass your node to function node_save(), it adds the necessary values to it and then save it. This function accepts your node as a refrenced variable, therefore after saving the node, you can have a look at it and see the complete structure of your new node using functions print_f() or dpm(). function dpm() is one of many useful utility functions in module Devel. If you have not installed Devel yet, I strongly recommend that do it right now! It is a must for every Drupal developer.

Syndicate content