Skip to content

Drupal Content Management — Content Types, Fields, Views & Revisions

DodaTech Updated Jun 6, 2026 8 min read

Unlike simpler CMS platforms where “content” means “pages and posts,” Drupal treats content as structured entities. Every piece of content belongs to a content type, and each content type has exactly the fields it needs. Think of it like a spreadsheet versus a Word document — content types give your data structure, which makes it searchable, filterable, and reusable.

What You’ll Learn

  • What content types are and how they differ from WordPress posts/pages
  • Creating custom content types with fields through the admin UI
  • Building dynamic listings with Views (no code required)
  • Using revisions for content auditing and rollback
  • Bulk operations and content moderation workflows

Why Structured Content Matters

Imagine you’re building a site for a university. You need to manage: news articles, faculty profiles, course listings, events, and research papers. Each type has different data.

Security note: Understanding Drupal Content Management helps build more secure applications — a core principle at DodaTech, where tools like Durga Antivirus Pro and Doda Browser rely on solid implementation practices.

In Drupal, you create five content types — each with its own fields (Article: body, image; Faculty: name, photo, department, bio; Course: code, title, credits, syllabus). The data is structured, meaning you can display “Upcoming Events in Computer Science” with a few clicks.

In WordPress, you’d stuff everything into post meta or custom fields. In Joomla, you’d use extensions. Drupal handles this natively.

    flowchart LR
    A["Drupal Overview & Installation"] --> B["Content Management<br/><strong>You are here</strong>"]:::current
    B --> C["Menus, Blocks & Taxonomies"]

    classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px;
  
Prerequisites: Drupal 10 installed and running. You should have the Standard installation profile and know your admin login. Drush installed helps but isn’t required.

Default Content Types

Drupal installs with two default content types:

  • Article — For time-sensitive content (news, blog posts). Comes with Tags field and comment settings.
  • Basic Page — For static content (About, Contact). No tags, no comments.

Creating a Custom Content Type

  1. Go to Administration → Structure → Content types → Add content type
  2. Enter the Label (e.g., “Case Study”) — the machine name (case_study) generates automatically
  3. Configure submission form settings, publishing options, and display settings
  4. Click Save and manage fields
  5. Add fields — each field defines one piece of structured data:

Available field types include:

  • Text (plain, formatted, long)
  • Number (integer, float, decimal)
  • File (generic file, image)
  • Reference (entity reference, term reference)
  • Date (date only, date + time)
  • Link (URL + title)
  • Email, Telephone, Address
Unlike WordPress where content structure requires code (Custom Post Types in functions.php), Drupal content types and fields are built entirely through the admin UI. No PHP required.

Using Views for Dynamic Listings

Views is Drupal’s query and display system — and it’s part of core since Drupal 8. It lets you build dynamic listings without writing SQL or PHP.

Think of Views like creating a smart shopping list: you specify what items you want (published articles), how to sort them (newest first), how to display them (grid with image and title), and where to show the list (a page at /news or a block in the sidebar).

Creating a View

  1. Structure → Views → Add view
  2. Name your view (e.g., “Latest Articles”)
  3. Choose the Show entity type (Content, Taxonomy, Users, etc.)
  4. Configure:
    • Format — Grid, Table, Unformatted list, HTML list
    • Fields — Which columns/data to display (title, date, image)
    • Filter criteria — Only published articles of specific content type
    • Sort criteria — Newest first
    • Page settings — Path (e.g., /news), items per page, pager type
  5. Save — your view is now accessible at /news

Display Types

Each view can have multiple displays:

DisplayPurpose
PageVisible at a specific URL (/news)
BlockPlaced in a region (sidebar, footer)
AttachmentAttached to another display
FeedRSS/Atom feed of the results
REST ExportJSON/XML API endpoint
{# Override a view template in your theme #}
{# templates/views/views-view-unformatted--latest-articles.html.twig #}
<div class="latest-articles">
  {% for row in rows %}
    <article class="article-teaser">
      <h3>{{ row.content['#node'].title.value }}</h3>
      <time>{{ row.content['#node'].created.value|date('F j, Y') }}</time>
      <div>{{ row.content['#node'].body.summary }}</div>
      <a href="/node/{{ row.content['#node'].nid.value }}">Read more</a>
    </article>
  {% endfor %}
</div>

Revisions

Drupal automatically stores revisions when enabled for a content type. Each revision captures the state of the content at that moment.

Why Revisions Matter

  • Audit trail — See who changed what and when
  • Rollback — Revert to any previous version
  • Comparison — Compare two revisions side by side
  • Content moderation — Require review before publishing (Draft → Review → Published)

Managing Revisions

  1. View revision history at /node/{nid}/revisions
  2. Click Revert to restore a previous version
  3. Enable revision log messages to track why changes were made

Bulk Operations

The Content page (/admin/content) supports bulk actions:

  1. Check multiple items using checkboxes
  2. Select an action from the dropdown:
    • Publish / Unpublish
    • Promote to front page / Remove from front page
    • Stick / Unstick in listings
    • Delete
  3. Click Apply to selected items

Using Drush for Batch Operations

# Delete all unpublished articles
drush node:delete article --status=0

# Delete nodes older than a specific date
drush sql:query "DELETE FROM node WHERE created < UNIX_TIMESTAMP('2024-01-01')"

# Reassign content from one user to another
drush sql:query "UPDATE node SET uid = 1 WHERE uid = 5"

Creating Content

Creating an Article

  1. Content → Add content → Article
  2. Enter the Title
  3. Write the Body (CKEditor toolbar for formatting)
  4. Configure Tags — comma-separated terms or auto-complete
  5. Set Publishing options:
    • Published — visible immediately
    • Promoted to front page — shown on homepage
    • Sticky at top of lists — pinned in listings
  6. Set Author and Created date (if needed)
  7. Click Save

Creating a Basic Page

Same process as articles but without the Tags field. Pages are typically not promoted to the front page.

Deleting Content

  1. Content → Find the item
  2. Click Delete in the dropdown menu
  3. Confirm deletion
Deleting a content type that has existing content deletes ALL content of that type. If you need to retire a content type but keep the data, unpublish all nodes and disable the content type via a custom module instead.

Common Mistakes

1. Storing Structured Data in the Body Field

Putting structured data (images, files, dates) into the Body field as HTML defeats Drupal’s content modeling. Always create dedicated fields for structured data.

2. Overusing the Body Field for Complex Layouts

For complex layouts, use the Paragraphs module or Layout Builder instead of cramming everything into the Body field.

3. Ignoring Text Formats

Drupal uses text formats (Full HTML, Filtered HTML, Plain Text) to control allowed HTML tags per user role. If content disappears or looks wrong, check the text format.

4. Disabling Revisions

Always keep revisions enabled — they provide audit trails and the ability to roll back mistakes.

5. Not Using Field Groups

When a content type has many fields, group them with the Field Group module for a better editing experience.

Practice Questions

  1. What is the difference between a content type and an entity type in Drupal?
    Answer: A content type is a subtype of the Node entity type. Drupal has many entity types (User, Taxonomy Term, Comment, File). Content types are node-specific configurations.

  2. How is Views different from creating a custom PHP query?
    Answer: Views provides a UI to build database queries without writing SQL or PHP. It handles pagination, caching, and display formatting automatically.

  3. What happens to content when you delete a content type?
    Answer: All content of that type is also deleted. If you need to retire a content type but keep the data, unpublish content and disable the type via a custom module.

  4. Challenge: Create a “Portfolio Project” content type with fields for title, description (formatted text), project image (image field), and project URL (link field). Create a View that displays published projects in a 3-column grid. Add 3 sample projects.

FAQ

How do I create a redirect when deleting a page?
: Use the Redirect module (drupal/redirect). It logs 404s and lets you set up manual redirects. Install via Composer: composer require drupal/redirect.
Can I import content from CSV?
: Yes. Use the Feeds module (drupal/feeds) for recurring imports or the Migrate API (core) for one-time imports.
How do I create a landing page with custom layout?
: Use Layout Builder (core since Drupal 8.7). Enable it at Structure → Content types → Manage display → Layout. Drag-and-drop blocks into sections.
What is the difference between nodes and blocks?
: Nodes are primary content entities (pages, articles). Blocks are smaller, reusable pieces of content placed in regions (sidebar, footer, header).
How do I unpublish all content of a specific type?
: Use Views: create a View with a bulk operations form, filter by content type, select all, and use the “Unpublish content” action.

Try It Yourself

  1. Create a custom content type called “Team Member” with fields: Name (text), Bio (formatted, long), Photo (image), Department (term reference)
  2. Create a View that lists team members in a grid format
  3. Add a revision log message and then revert to an earlier revision
  4. Use Drush to unpublish all articles created before a specific date

What’s Next

TopicDescription
Menus, Blocks & TaxonomiesNavigation, layout regions, and content classification
Themes, Layouts & ExtensionsTwig templating, Layout Builder, and modules
HTMLUnderstanding Drupal’s output structure
CSSStyling content types and views
PHPThe language behind Drupal modules

What’s Next

Congratulations on completing this Drupal Content Management tutorial! Here’s where to go from here:

  • Practice daily — Consistency is more important than long study sessions
  • Build a project — Apply what you learned by building something real
  • Explore related topics — Check out other tutorials in the same category
  • Join the community — Discuss with other learners and share your progress

Remember: every expert was once a beginner. Keep coding!

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro