Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,900 courses, including more Developer and personalized recommendations.Start Your Free Trial Now
- View Offline
- Creating your first module
- Interacting with hooks
- Working with permissions and roles
- Controlling access
- Adding a menu item to an admin interface
- Using the Form API (FAPI) to quickly create a form
- Creating custom form validation
- Manually creating a custom content type
- Validating user input
- Importing content using feeds
- Creating a block
- Understanding best practices and coding standards
Skill Level Advanced
So far the only persistent data that I've been dealing with have been persistent variables. While useful for storing settings, they have an extremely limited scope. Web applications typically handle many different kinds of content each with its own behavior and interactions. In Drupal, a single item of content is referred to as a node and each node belongs to a single content type. Each content type has a common set of properties such as publishing options, creation dates, unique identifiers, and so forth.
These properties are known as fields. For example, Drupal Core provides two content types enabled by default. Articles, which are generally used for information that is updated frequently and categorized, and basic pages which are typically used for static content. Other content types that come with Drupal core include blog entries, forms for discussions and polls. New content types can be created and managed using the Drupal admin interface. However, this can be a laborious process and doesn't typically offer custom functionality such as a triggered event.
A site administrator can export content types using contributed modules such as features, but depending on the project needs this can be cumbersome and requires an additional module to accomplish something that can be done efficiently yourself. By leveraging a content type a developer can take advantage of many of Drupal's built-in mechanisms for managing content widgets for entering and editing different kinds of data, validating and rendering, easy persistence, and much more. Additionally, the content type will be compatible with contributed modules such as views, feeds and others.
By creating and maintaining the content type in code, deploying site features becomes a more manageable task. I'm going to create a content type windfarm to store and display standardized data about windfarms. In particular, the content type will have six fields: the name of the facility, the description, the number of units at the facility, the wind turbine manufacturer, the latitude and longitude. I'll create some example nodes of content type windfarm then scale up by importing an existing table to populate the database. Let's get started.