drupal

Talking Drupal: Talking Drupal #487 - Single Directory Components Workflow

Today we are talking about Single Directory Components, How best to work with them, and their future with Drupal with guest Brian Perry. We’ll also cover Embedded Content as our module of the week.

For show notes visit: https://www.talkingDrupal.com/487

Topics
  • What are Single Directory Components (SDC)
  • Why the switch to SDCs
  • What is there in common between decoupled and SDCs
  • Can you give us an overview of your workflow
  • Common pitfalls
  • How should someone get started working with SDCs
  • Does it work with Paragraphs and Blocks?
  • Does it need to be all at once
  • How do you think SDCs will evolve
  • Do you see this leading to more Decoupled front ends
  • What contrib modules make working with SDCs easier
Resources Guests

Brian Perry - brianperry.dev brianperry

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Scott Weston - scott-weston

MOTW Correspondent

Jacob Rockowitz - jrockowitz.com jrockowitz

  • Embedded Content
  • Brief description:
    • The Embedded Content module allows site builders to select, create, and update content embedded within HTML inside CKEditor.
    • For developers, the EmbeddedContent plugin is like a Block plugin without context.
    • There is a demo on YouTube https://www.youtube.com/watch?v=GxOn-P3Q5Gg
    • There is support embedding of single directory component in progress. Conceptually, this is already possible, the same way one would render a single directory component in Block plugin.
  • Brief history
    • The concept and code started as the CKEditor5 Embedded Content module, created in August 2022.
    • In October 2023, CKEditor5 Embedded Content was renamed to Embedded Content.
  • Versions available:
    • 2.0.3 - January 22nd, 2025
    • Works with Drupal: ^9 ^10 ^11
  • Maintainership
    • Actively maintained? yes
    • Security coverage? Yes
    • Test coverage? Yes
    • Documentation? Video and an example module
  • Number of open issues:
    • All issues: 6 open, 17 total
    • Bug report: 6 open, 15 total
  • Usage stats:
    • 509 sites report using this module
    • 1,263 sites report using this module (using old version)
  • Maintainer(s):
  • Module features and usage
    • Insert themed content in Ckeditor5 using Drupal plugins without having to write rich HTML and CSS
    • Render these results directly in the CKEditor
    • Create 'inline' embedded content that sits inline with the text, like footnotes.
    • Provides
    • Embedded Content plugin
    • CKeditor 5 plugin.
    • Ecosystem
    • Embedded Content: Examples for examples of how to build your own plugins.
    • Embedded Content: Entity for embedding content entities
    • Embedded Content: SDC for single directory components (under development)
    • Potential Challenges
    • Example of the embedded content tag.
    •  
    • Translations via TMS (data is serialized via an attribute)

Drupal Association blog: Why Local Atlanta Drupal Users Should Attend DrupalCon 2025

Atlanta is home to a vibrant community of tech professionals, developers, and digital strategists, and in 2025, the city will host one of the most important events for the open-source community: DrupalCon Atlanta! Whether you’re a seasoned Drupal developer or new to the world of open-source web development, DrupalCon Atlanta 2025 is an event you won’t want to miss. 

We’ve collated some key reasons why you, as a local Atlanta Drupal user, should make plans to attend.

Access to Global Drupal Experts Without Leaving Home

DrupalCon is the premier event for the Drupal community, attracting some of the most influential thought leaders, developers, and contributors from around the globe. As a local Atlanta attendee, you’ll have direct access to these experts—right in your own backyard! Whether it’s through keynotes, panels, or networking opportunities, you’ll be able to learn from the best in the field, gain new perspectives, and apply their insights to your own work.

Networking Opportunities with Local and Global Professionals

DrupalCon isn’t just about learning; it’s also about building connections. As a local attendee, you’ll be able to meet other Atlanta-based developers, designers, project managers, and organizations who use Drupal in their projects. But it’s also a chance to connect with Drupal professionals from across the country and around the world. This mix of local and international attendees opens the door to new opportunities, collaborations, and partnerships you may not have access to otherwise.

Boost Your Career with Professional Development

DrupalCon offers an excellent opportunity to level up your career. With hands-on workshops, expert-led sessions, and in-depth tutorials, you’ll gain new skills, enhance your knowledge, and stay up to date with the latest Drupal updates. Whether you're looking to refine your Drupal development skills, expand your expertise in site architecture, or dive deeper into specific modules, DrupalCon Atlanta 2025 has something for everyone. It’s the perfect place to invest in your professional growth and stand out in a competitive job market.

Be Part of Atlanta’s Growing Tech Community

Atlanta is rapidly becoming a hub for tech innovation, and Drupal is a big part of that. By attending DrupalCon, you'll contribute to and strengthen the city's growing reputation in the tech industry. You'll also get the chance to meet local developers and organizations already making an impact with Drupal, fostering a sense of community and collaboration.

As a local, you’ll have the opportunity to contribute your knowledge and experience to the broader Drupal ecosystem while gaining insights from the global Drupal community.

Experience DrupalCon in Your Own City

Hosting DrupalCon in Atlanta means you’ll experience this incredible event in a city known for its hospitality, vibrant culture, and thriving tech scene. When the conference is over for the day, you can explore everything Atlanta has to offer, from world-class dining to historic landmarks and cultural attractions. You won’t have to travel far to be part of the action—just head over to the Hyatt Regency Atlanta, and you’re in the heart of it all. This is a great opportunity to easily access some of the best attractions the city has to offer. Stroll over to the Centennial Olympic Park, explore the inspiring National Center for Civil and Human Rights, or dive into history at the Martin Luther King Jr. National Historic Site. Take a ride on the SkyView Atlanta Ferris Wheel for incredible views of the city or visit the Georgia Aquarium, the only aquarium in the world where you can see a whale shark. 

Attend Local Meetups, Panels, and Networking Events

DrupalCon isn’t just about sessions—it’s also about the local community. The event will feature plenty of opportunities to meet up with local Drupal users, participate in hands-on workshops, and collaborate on solving real-world problems. By attending, you'll deepen your connections with the local Drupal community and help make Atlanta a key player in the Drupal ecosystem. Plus, these local events often feature discussions on how Drupal is being used to solve problems specific to the Atlanta area, making it easier to find solutions for your own projects.

Show Support for Open-Source and Local Businesses

Drupal is an open-source platform, and supporting events like DrupalCon means you’re supporting the open-source movement and the local tech businesses and freelancers who rely on it. By attending DrupalCon, you're not just learning and networking, but also contributing to the broader ecosystem that makes Drupal such a powerful and accessible tool for developers, designers, and organizations everywhere.

Don’t Miss Out—Register Today!

DrupalCon Atlanta 2025 is the perfect chance for local users to immerse themselves in the world of Drupal, connect with professionals, and boost their careers. Whether you’re just starting out or a seasoned pro, there’s something for everyone at this exciting event. 

Don’t miss your chance to be part of Atlanta’s most important open-source conference of the year!

Droptica: How to Manage Roles and Permissions in Drupal? A Guide for Website Administrators

Image removed.

Who can add, edit, and delete content on your website? How do you make the "price" field accessible to distributors rather than regular users? In this blog post, I'll explain in detail how roles and permissions work in Drupal, what capabilities they offer, and how you can customize them for your website. I invite you to read the article or watch an episode of the “Nowoczesny Drupal” series.

The Drop Times: Exove, Piwik PRO and Cookie Information: A Collaboration Shaping the Future of Drupal and Privacy

Exove, Piwik PRO, and Cookie Information have partnered to strengthen Drupal’s privacy compliance and analytics capabilities. Their collaboration delivers seamless integrations, ongoing support, and privacy-first solutions, ensuring Drupal users benefit from enhanced consent management and data insights. With dedicated development and continuous updates, these integrations keep pace with Drupal’s evolution, offering a reliable and future-proof experience.

The Drop Times: Drupal Deserves More

January 2025 was a month of celebration, innovation, and community for Drupal. The successful launch of Drupal CMS brought together a large number of Drupal enthusiasts from around the world, infusing the community with a renewed spirit. This excitement has sparked conversations about the future of Drupal and the efforts behind its continuous evolution. In this spirit, The Drop Times recently published an exclusive interview with James Abrahams, AI Track Lead for Drupal CMS, where he candidly discussed behind-the-scenes developments that led to this milestone.  

Last month also brought exciting announcements about upcoming events. Florida DrupalCamp is set for February 21–23, followed by highly anticipated events like Drupal Mountain Camp and DrupalCon Atlanta in March. Reflecting on this busy calendar, I’m reminded of a blog post by Ales Kohek on Agiledrop: "Why the Drupal Community Deserves (and Needs) Well-Attended Events." The author highlights the long-term benefits of such gatherings—stronger networking, larger-scale idea generation, and an overall boost to the community’s collaborative spirit. For an open-source software like Drupal, these events are crucial in preserving our sense of belonging and shared purpose.  

At The Drop Times, we remain dedicated to bringing you the latest updates on Drupal events happening across the globe. Our team actively tracks event announcements, provides coverage on key discussions, and ensures that community members stay informed. Whether it's interviews with speakers, event recaps, or highlighting major takeaways, we strive to be your go-to source for all things Drupal. As community members, you can also reach out to us with information about local events in your area. Let’s build on the energy sparked by the Drupal CMS launch and make this year’s events even more impactful.  

Stay tuned to The Drop Times! 

Interview

Drupal: Power, Flexibility, Freedom, and Now Smarter with AI

Discover Drupal

Events

Organization News

Training

Master Drupal 10 Certification with Debug Academy’s Front End Specialist Training

Tutorials

Step-by-Step OpenAI Module Setup for Drupal 10

Thank you for following The Drop Times. Ask your friends and colleagues to subscribe to TDT newsletters. 

Sincerely, 
Thomas Alias K.,
Sub-editor, TDT 

The Drop Times: Drupal CMS: Celebrating The New Era of Content Management System at Innoraft

Innoraft celebrated the launch of Drupal CMS 1.0 with a week-long event featuring expert sessions, hands-on demos, and community contributions. Highlights included discussions on Drupal’s evolution, AI integration, ReactJS synergy, and Single Directory Components. The event concluded with the release of the Views Advanced Date Filter Module and a lively celebration with the global Drupal community.

Brian Perry: Using Verbose Output When Applying Drupal Recipes

I've been slowly chipping away at a side project that includes a set of related Drupal Recipes. Given the repeatable nature of recipes, I apply them after a clean install frequently, and have a shell script that automates this process.

After some recent changes I found that one of my recipes was not applying cleanly. In an effort to debug, I ran the drush recipe command with the -v flag to get verbose output. Debugging aside, I found the output to be really useful.

Here's what I'd see when applying the sanctuary_graphql recipe without the verbose flag:

ddev drush recipe recipes/sanctuary_graphql 12/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░] Installed Simple OAuth & OpenID Connect module. 25/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] Applied Sanctuary GraphQL recipe. [OK] Sanctuary GraphQL applied successfully

and this is the output with the -v flag:

ddev drush recipe recipes/sanctuary_graphql -v [info] Drush bootstrap phase: bootstrapDrupalRoot() [info] Change working directory to /var/www/html/web [info] Initialized Drupal 10.4.1 root directory at /var/www/html/web [info] Drush bootstrap phase: bootstrapDrupalSite() [info] Initialized Drupal site sanctuary.ddev.site at sites/default [info] Drush bootstrap phase: bootstrapDrupalConfiguration() [info] Drush bootstrap phase: bootstrapDrupalDatabase() [info] Successfully connected to the Drupal database. [info] Drush bootstrap phase: bootstrapDrupalFull() 0/25 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░] Applying recipe [info] decoupled_preview_iframe module installed. 3/25 [▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░] Installed Config Pages module. 5/25 [▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░] Installed Paragraphs module. [info] paragraphs_edit module installed. 8/25 [▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░] Installed Sanctuary module. 10/25 [▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░] Installed Iconify Icons module. [info] menu_item_extras module installed. [info] simple_oauth module installed. 13/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░] 15/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░] Installed Typed Data module. [info] graphql module installed. 18/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░] Installed Sanctuary GraphQL module. 20/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░] Installed GraphQL Compose: Routes module. [info] graphql_compose_menus module installed. 25/25 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] Applied Sanctuary GraphQL recipe. Modules installed ----------------- * Config Pages * Consumers * Decoupled Preview Iframe * Entity Reference Revisions * Frontend Editing * GraphQL * GraphQL Compose * GraphQL Compose: Edges * GraphQL Compose: Menus * GraphQL Compose: Preview * GraphQL Compose: Routes * Iconify Icons * Menu Item Extras * Paragraphs * Paragraphs Edit * Sanctuary * Sanctuary GraphQL * Serialization * Simple OAuth & OpenID Connect * Token * Typed Data Recipes applied --------------- * Sanctuary Core * Sanctuary GraphQL [OK] Sanctuary GraphQL applied successfully

This is verbose (as advertised) but pretty essential information, especially if you're applying a recipe for the first time. Without -v all we really know is that the recipe was applied successfully. With -v we get a list of all of the modules installed, and also see that another recipe was applied as a dependency.

I'd often find myself either reviewing the source code of a recipe, or skimming the module page in the admin UI to understand what was actually included. This verbose output is a much quicker way to get that info.

From what I can tell, -v and -vv provide the same output. -vvv is more verbose, but I haven't found the extra info super useful as of yet. None of these options seem to provide debug output for config actions, which is the only thing I could see as a useful addition.

I realize that 'try running it with debug output' is hardly a groundbreaking tip, but in the case of recipes this additional info is really handy. Going forward, I'll be using -v by default when applying new recipes so that I can get a better sense of what's being added to my site.

Web Wash: Using Bootstrap in Drupal CMS

In the above video, we’ll explore how to use Bootstrap for Drupal CMS.

If you’re looking for easier site-building and front-end theming, Bootstrap is a great tool.

We’ll cover everything from setting up your themes to using Bootstrap within Drupal’s Layout Builder and Views.

Bootstrap in Drupal

Bootstrap is well-supported within the Drupal community. It offers numerous modules and themes, as well as many pre-built components that help developers create attractive, responsive sites quickly.

We’ll specifically look at two themes: Bootstrap5 and Radix. We will also explore how to integrate Bootstrap with Drupal’s Layout Builder using Bootstrap Layout Builder and how to use Bootstrap grids within Drupal Views.

Finalist: Drupal on MongoDB: more than just a new database option

Who am I?

My name is David Bekker (a.k.a. daffie), and I’m a seasoned Drupal core contributor with over 600 commit credits. I maintain Drupal’s Database API and database driver modules. My passion lies in open-source development, driven by a desire to create maximum business value.

When I sought a high-impact project to work on, I chose to develop a MongoDB driver for Drupal. One that stores entity instances as JSON objects. This project addresses Drupal’s evolving needs in a meaningful way.

User-centric innovation: Drupal’s next evolution

To understand why this shift is crucial, let's compare this transition to a challenge Drupal faced years ago: optimizing sites for mobile devices. Back then, significant changes were needed to enhance mobile usability. Now, we face a similar paradigm shift as the market evolves from sites for anonymous users to those centered on authenticated users. Drupal must adapt, and Drupal on MongoDB is the key to this transformation. 

Beyond traditional use cases, Drupal on MongoDB is also ideal as a backend for iOS, Android, and JavaScript applications, providing personalized and scalable solutions.

Redefinition of data storage and retrieval

Drupal on MongoDB is more than just a new database option. It enhances Drupal’s ability to compete in a changing digital landscape.

Drupal’s robust entity system provides a solid foundation where everything is structured as an entity. Traditionally, Drupal leverages relational databases like MySQL or MariaDB, efficiently managing data across multiple tables. This approach performs well for sites with a large number of anonymous users. However, for sites with many authenticated users, the complexity of retrieving entity data from multiple tables can introduce performance challenges. Optimizing data retrieval can significantly enhance the user experience, making Drupal even more powerful for dynamic, user-centric applications.

With MongoDB, every Drupal entity instance is stored as a single JSON object, including all revisions, translations, and field data. This streamlined data structure allows for significantly faster retrieval, making Drupal a stronger solution for personalized, user-focused experiences.

As the market shifts toward authentication-driven sites, supporting MongoDB ensures that Drupal remains a competitive and scalable option. Rather than replacing Drupal’s strengths, this integration enhances them, allowing Drupal to meet modern performance demands while maintaining its flexibility and power.

Scalability and efficiency: why MongoDB makes sense for large Drupal projects

The scalability of NoSQL databases like MongoDB sets them apart from traditional relational databases such as MySQL or MariaDB. While relational databases typically rely on a single-server model, MongoDB supports horizontal scaling, enabling distributed setups with thousands of servers acting as a unified database. This architecture provides the performance needed for large-scale projects with millions of authenticated users.

As community-driven software, Drupal is built to support interactive, user-focused experiences, including forums, profiles, and content management. Traditionally, its relational model organizes data across multiple tables—similar to storing the chapters of a book separately in a library. This approach ensures data consistency and flexibility, making it highly effective for managing structured content.

However, as the demand for authentication-heavy sites grows, the way data is stored becomes a crucial factor in performance. MongoDB offers a more efficient alternative by storing entire entities as JSON objects—just like keeping an entire book intact rather than splitting it into separate chapters across different locations. This eliminates the need for complex table joins, significantly accelerating data retrieval and making MongoDB well suited for personalized dashboards and dynamic content feeds.

For small-scale sites, both relational and NoSQL approaches work. But when scalability, speed, and efficiency become priorities—particularly for sites with millions of authenticated users—MongoDB provides a natural and powerful solution for taking Drupal to the next level.

Example of a user entity stored in MongoDB

{ _id: ObjectId('664afdd4a3a001e71e0b49c7'),  uid: 1, uuid: '841149cd-fe56-47c4-a112-6d23f561332f',  langcode: 'en',  user_translations: [ {  uid: 1,  uuid: '841149cd-fe56-47c4-a112-6d23f561332f',  langcode: 'en',  preferred_langcode: 'en',  name: 'root',  pass: '$2y$10$kjGuIsPOTDa2TseuWMFGS.veLzH/khl0SfsuZNAeRPRtABgfq5GSC',  mail: 'admin@example.com',  timezone: 'Europe/Amsterdam',  status: true,  created: ISODate('2024-05-20T07:37:54.000Z'),  changed: ISODate('2024-05-20T07:42:08.000Z'),  access: ISODate('2024-05-20T08:46:47.000Z'),  login: ISODate('2024-05-20T07:44:16.000Z'),  init: 'admin@example.com',  default_langcode: true,  user_translations__roles: [ {  bundle: 'user',  deleted: false,  langcode: 'en',  entity_id: 1,  revision_id: 1,  delta: 0,  roles_target_id: 'administrator' } ] } ],  login: ISODate('2024-05-20T07:44:16.000Z'),  access: ISODate('2024-05-20T08:46:47.000Z')  }

Optimizing data storage for performance

Switching to MongoDB alone is not enough to make Drupal a top-tier solution for sites with a high number of authenticated users. Developers must rethink how data is stored.

In traditional Drupal setups optimized for anonymous users, caching mechanisms like Redis compensate for slow database queries. However, for authenticated users, where content is dynamic and personalized, this approach falls short. Drupal itself needs to be fast, not just its caching layer.

MongoDB enables developers to store data in the way the application uses it, reducing the need for complex queries that slow down performance. Instead of relying on costly operations like joins and subqueries, simple and efficient queries should be the norm. Tools like materialized views—precomputed query results stored as database tables—help achieve this, ensuring faster data retrieval while keeping the database structured for high performance.

Why MongoDB for Drupal?

While many databases support JSON storage, MongoDB is the only one that fully meets Drupal’s needs. Its capabilities extend beyond basic JSON support, making it the optimal choice for storing entity instances efficiently.

Additionally, MongoDB offers several key advantages that align with Drupal’s evolving requirements:

  • Horizontal scaling: Easily distribute database load across multiple servers, making it scalable for large user bases.
  • Integrated file storage: Store user-uploaded files directly in the database instead of on the web server, simplifying hosting.
  • Built-in full-text search: Eliminates the need for separate search solutions like SOLR, reducing infrastructure complexity.
  • AI capabilities: Supports AI vectors, allowing for features like advanced search and personalization tailored to a site’s content.

Performance testing

Performance tests comparing MariaDB and MongoDB for loading Drupal nodes show a significant advantage for MongoDB:

  • MongoDB 7.0: 7.364 microseconds average query time
  • MariaDB 10.6: 14.596 microseconds average query time

Tests were conducted on 50K nodes with identical field structures. Even without specific optimizations, MongoDB outperformed MariaDB, demonstrating its potential to enhance Drupal’s speed and scalability.

Current status

  • This website is already running entirely on MongoDB :-)
  • The MongoDB driver for Drupal is available as a contrib module for Drupal 11, with over 99% of core tests passing.
  • Discussions are ongoing to merge MongoDB support into Drupal core, pending community contributions.

Conclusion

As the web moves toward more personalized, user-centric experiences, Drupal must evolve to remain competitive. MongoDB is a key enabler of this evolution, providing faster, more scalable solutions for authenticated user-heavy sites.

By embracing MongoDB, Drupal developers can unlock new performance possibilities, simplify infrastructure, and build future-ready web applications.

Want to get involved? Join the conversation in the Drupal community via Slack in the #mongodb and #contribute channels. Let’s shape the future of Drupal together! 🚀