Drupal 6: Creating parent and child relationships between nodes using the CCK node reference module

This article will show you how to establish parent and child relationships between nodes. To start, you’ll need to install and enable the CCK module, and node reference (which comes with CCK). Next, you’ll need to create two node types (admin/content/types/add). For my example, I created two node types: Organization (parent) and Department (child), both consisting of a title and body (of course, you can add as many fields as you’d like).

Next you’ll want to add a new field to the parent node (organization) by editing the content type (admin/content/node-type/organization) and clicking on the “Manage fields” tab. Enter the information to add a new reference field on this screen. Add a label (ex: “Department Reference”), enter a field name (ex: field_ref_department), choose “Node reference” as the field type, and choose “Autocomplete text field” as the form element as shown below.

node reference add field 1

On the next screen you can choose the field options. For this example, I changed “Number of values” to “Unlimited” (to allow a one to many relationship), selected “Department” in the list of content types that can be referenced, and saved these settings.

node reference add field 2

Now if you create a new parent node (Organization: node/add/organization), you’ll have the option of adding pre-existing child (Department) nodes. As you start typing the title of the child nodes in the node reference auto-complete field, it will automatically populate the field with nodes that match. Of course this will only work if you have already created child nodes. At this point adding relationships is a two step process.

node reference add parent node 1

To improve usability, you can install the Popups API (http://drupal.org/project/popups) and Add and Reference (http://drupal.org/project/popups_reference) modules which allow you to add child nodes without leaving the node/add/PARENT-NODE screen. After installing and configuring these modules, you’ll be able to add child nodes directly from the node/add/PARENT-NODE screen by clicking on the “Add new: Add Child Node link”, which spawns a lightbox window to add a child node.

node reference add parent node 2

Here is a screenshot of a parent node view after adding child relationships:

node reference parent node view