Drupal Planet

MidCamp - Midwest Drupal Camp: MidCamp Starts Wednesday!

2 weeks 6 days ago
MidCamp Starts Wednesday!

MidCamp is this week, and there’s still time to register! Review our tools and accessibility to ensure you can get the most out of camp, and check the job board if you're searching.

We have a lot going on this year, so here’s the final rundown of what to expect. We’ll share login links and more tomorrow.

  • For new attendees, Wednesday will start with three sessions to introduce you to Drupal, the Community, and MidCamp.

  • For those new to conference speaking, Wednesday afternoon will be a series of three speaker workshops on Zoom.

  • For those new to Drupal, join Evolving Web’s free afternoon webinar and download Get Started with Drupal, an Introductory Guide.

  • After that, at 4PM, join us for Karaoke!

  • For all, Thursday we have activities to connect with the community, learn, and have fun. We have many pre-set activities, but are holding spots specifically for newcomers to lead their own discussions.

  • For developers who are already familiar with using Drupal in a local environment, we have workshops on setting up and building NightwatchJS tests.

  • After that, at 4PM, join us for Game Night!

  • For all, Friday is our Unconference. Bring a topic or just yourself and join us for a full day of great conversations and deep discussions.

  • For those who plan to contribute on Saturday, we’ll have a workshop to help get your local environment up and running on Friday morning.

  • For experienced developers, we’ll have a series of advanced local development discussions on Friday afternoon.

  • After that, at 4PM, join us for Happy Hour!

  • For new contributors, we’ll start Saturday with workshops to introduce you to contribution and issue forks.

  • For all, we’ll spend Saturday working on the Olivero, Drupal Recipes, and Feeds/Migrate initiatives.

  • After that… we’re done!!!

The Whole Time
  • We’ll have spaces in Zoom, Slack, and Gather.town to socialize, hang, and help each other.

  • The organizers will be available to help. Mention “@organizers” in Slack, email [email protected], or tweet at @midwestcamp for general help. Email [email protected] for Code of Conduct-specific issues.

And now… a word from our sponsor

If you or someone you know is looking for an opportunity to work remotely for one of the world’s leading contributors to the Drupal project and community, Palantir.net is hiring an Engineer! Learn more and apply today.

Sooper Drupal Themes: Installing Drupal 9 "Core Layout Builder" Tutorial

2 weeks 6 days ago

The Drupal Core Layout Builder module allows you to customize the design of the entity such as content types, taxonomy, users, etc… by offering a new drag-and-drop interface. This is different from our commercial Drupal Layout Builder "DXPR Builder", because our product is only used to author and edit pieces of content, not content types.

Content editors always look out for an easy-to-use experience when it comes to page building. Drag-and-drop and WYSIWYG tools are something they expect when they want to create and design pages. Drupal Layout Builder offers this exact experience with its easy-to-use page building capability in Drupal core.

Drupal Layout Builder allows you to select multiple sections for your page, if you want to design it. For eg. One column, Two Column, Three Column and Four Column and you can specify each columns width based on your requirements

Drupal Core Layout Builder can be used in two different ways. It can be used to create a layout for each entity type on the website, and also to create a layout for an individual piece of content in entity type.

Enabling Drupal Layout Builder Modules from Drupal Core

Go to Extend and enable both Layout Builder and Layout Discovery module from drupal core

Or, if you use Drush run the following command to enable it:

drush en layout_builder

drush en layout_discovery

1. Use Drupal Layout Builder to Customize Entity Type

1. Once you are ready with enabling the modules, navigate to Structure, Content types and click on “Manage display” for any content type , For now we will use the “article” content type.

2. Scroll to the bottom and collapse on Layout options and select “Use Layout Builder”, then click on Save.

3. Once you’ve completed the above step, you can see a “Manage layout” option instead of field formatters.

4. Then when you click on “Manage layout”, you’ll be taken to the article content items, layout builder page.

2. Adding Sections to Layout Builder

1. Let us add a few sections to our layout by clicking on the “Add Section” option. Further, you will be provided with options to choose a layout of your choice for your section, on the right side of the screen. For now, let us select the “Three Column Section”.

2. Once we select the “Three Column” section for our layout, it will display different variants, Lets select “25%/50%/25%” for our layout.

3. You will get the layout with our selected width for each columns

3. Add Blocks to the Section Regions

After choosing your section for the layout, you can add blocks into your section. To add a block just click on “Add Block” and the “Choose a block” option will slide out from the right.

Let’s select Authored by field to be displayed in our column

Let us add an image field for second column and custom block in third column and save our changes but clicking on “Save Layout” button at the top.

After saving this layout, if you visit an article content type page, you will be able to see a preview of the layout which you just built.

4. Override Default Layout

The Drupal layout which we just built for article content type, will be applicable for all the article contents. If you want to build a customized layout for a particular piece of article, we have to enable “Allow each content item to have its layout customized.” option in manage display.

And now when you visit any article view page, you will be seeing layout as a local task tab.

5. Restricting Layouts and blocks

In Addition, you can use contrib module Layout Builder Restrictions, to restrict layouts which you need and disable the unwanted/unused layout from your layout builder

Install the modules using composer, and enable it in your project, once done you will get option in Manage Display of your entity

1. Blocks available for placement (all layouts & regions)

Under this option, you can control certain blocks, whether those should be displayed in your layout builder select region or not.

For eg: In the below screenshot, we are restricting only 2 fields from the content fields to be displayed in the layout builder, So Authored on and body field will not be displayed in the layout builder.

Authored on and Body fields are not displayed, because they are restricted under content fields.

2. Layouts available for sections

In this option we can restrict particular layouts to be selected in our    layout builder, so we will have Layout which we need and not all the layouts

For eg: We will select Two Column and Three Column layout to be used in our layout builder, so we will get Only Two Column and Three Column layout options to be used in our layout and not all layouts.

6. Applying Styles for Layout Builder

In Addition, you can use contrib module Layout Builder Styles, to allow users to apply styles to their layout builder blocks and sections.

Install the modules using composer, and enable it in your project, once done you will have to visit modules configuration page - /admin/config/content/layout_builder_style, where you can add a layout builder style.

You can specify multiple classes for a layout builder style, and select type either block or section, let us select section.

Now when you visit to your layout builder page, and edit any of your sections, you will get Style field with the style which we had created earlier

Now the css will be applied to your entire section, with the style which we have selected.

Tag1 Consulting: An Overview of Decoupled Applications & Systems - Part 1

2 weeks 6 days ago

Decoupled Drupal is now a fixture of the Drupal community and ecosystem, but it has roots in key software concepts like the separation of concerns. Today, decoupled Drupal is commonplace across the Drupal world, not only at the highest echelons of enterprise implementations of Drupal but also among smaller consultancies beginning to get their feet wet with headless CMS architecture.

Read more [email protected]… Mon, 03/22/2021 - 06:00

OpenSense Labs: Understanding Marketing Automation in Association With Drupal

2 weeks 6 days ago
Understanding Marketing Automation in Association With Drupal Gurpreet Kaur Mon, 03/22/2021 - 11:45

I was scrolling through my Instagram last night and I saw an advert that was pretty appealing to my taste. It was an ad for those flared jeans that are so popular today. And like any other fashion loving person, I clicked on it and it took me to the website of the brand. Cut to half an hour later, I was a proud owner of a very flared, wide bottom pair of denims with a super high waist line and I was pretty happy about it. 

This is a scenario which isn’t uncommon in the times we live in. If you ask me, I find this trend to be utterly appealing, utterly clever and utterly persuasive. 

I say this because if you think about it, I wouldn’t have ever landed on the product’s actual site, not by any chance. So, the seller’s plan to become a part of social media and sneak into people’s feed with such tantalising videos and pictures of the product, that they have no other option than buying is indeed a masterstroke, if there was one. 

And this is what marketing is all about. It does involve the more technical aspects of designing, production and packaging, however, making the product come in contact with the consumer is like the finale of the marketing film. And to ensure this contact is a memorable one, the marketers make it ubiquitous. Now that I have bought that one pair of jeans, I’m sure my Instagram and Facebook are going to be inundated with similar products and brands in the near future, because if I have bought it once, I might buy it again.

So today, we are going to be talking about an emerging vogue in the ever so evolving realms of marketing and that is Marketing Automation. Let’s get on with the marketing automation guide. 

When the Marketers met Automation

Marketing Automation is a concept that is all about making the work of the marketers a tad bit easy. The automated technology takes the load off of the marketer’s shoulders and onto its own.

At the heart of the concept of marketing automation is the consumer. Every nook and crevice of this concept recognises consumer as the boss. Let’s take a look. 

Understanding consumer behaviour; 
Identifying potential consumers
Creating consumers leads; 
Effectively nurturing the consumers leads; 
Personalising the marketing strategies for the consumers
And converting consumers into buyers.

These six points can sum up the entire working of marketing automation and consumers are everywhere. Yes, at the end of it, you, as a businessman would benefit from it, but you need consumers for that first. 

If I had to define marketing automation, I would say it is a concept that uses software and technology to ease all marketing tasks, especially the repetitive one. Those social media posts that have to be posted every Monday at 5 on the Twitter handle can be easily automated. The result would be better consumer engagement and increased efficiency, which means more revenue. 

Marketing automation is a pretty broad term that has numerous aspects and functions involved in marketing. 

Sending marketing messages using a trigger; 
Sending personalised emails to keep the consumer in the loop; 
And sending Facebook, Instagram and Twitter stories and posts for perpetual engagement; 

These are three of the most popular ways automated marketing strategies that help marketers generate leads from everywhere and convert them into sales. 

Now that we have covered the general concept of marketing automation, let’s look at some statistics that will give us a picture of its use in the business world. 

Source: Regalix.com

The above picture shows the findings of a survey performed on a sample group. With close to a fourth of the surveyors answering an affirmative to using marketing automation, the concept seems to be a hit. 

Source: Dun & Bradstreet

Another survey shows the extent of marketing automation at work, with close to half of the surveyors using it extensively. 

Source: Grand View Research 

Now, this one shows how marketing automation is going to progress in the future. Every sector, be it healthcare or education, is expected to enhance its size in marketing automation in the US. It would possibly double in comparison with 2016. So, if anything is going to boom in the future, it’s going to be marketing automation.

Marketing Automation and Its Achievements 

Marketing in general has numerous benefits that not a single person on this planet can deny. Likewise when marketing automation is concerned, the benefits still persist. There is a lot that can be overcome be it reducing costs, increasing efficiency or making you richer by the date and all of that starts with one lead generated by marketing automation. 

Let’s have a look at all the achievements of this marvelous concept. 

Automation saves time 

The main difference between doing something manually and automatically is the amount of time it takes to complete it. When you automate simple marketing tasks like figuring out the seriousness of a lead or sending emails, you free up a lot of your time. And that time can be used for more meaningful tasks like converting leads. 

Automation increases income 

A major benefit of automation in marketing is generating leads, which later helps in creating higher conversion rates and lower abandonment rates. What do you think would be the result of this? More sales, which simply means more income. 

There is also the perspective that marketing automation reduces costs because with automated processes, you would need less manpower and hence, lower costs. 

Automation eases scaling

Every business is meant to grow, so a marketing strategy that takes into consideration the present scenario along with every possibility that the future may hold should be the right choice. Marketing automation is that choice. This concept grows with you, regardless of the pace you have. Look at Tesla’s stock prices in 2020, that could happen to your business as well and marketing automation would be right there with you. 

Automation enhances user understanding 

Marketing automation is also responsible for making you understand your demographic better. This is achieved by tracking and monitoring every contact the user makes with your business and where they stand on the purchasing decision, you could say that marketing automation is essentially behavioural tracking of the consumers. The outcome of this level of user understanding is that you can make a few tweaks here and there based upon user patterns and thereby compel him to make a purchase.

Automation evaluates your successes concisely 

Marketing automation tools are a part of it and these tools have the capability of measuring all the right numbers for you. You’d be glad to know these numbers are not just pertinent to your consumers, but you as well. Assuming you automated an online campaign, once it is complete and even during it, marketing automation tools will have recorded its performance down to the T. This way you would know how you performed and what you need to work on.

Making Marketing Automation Work

Next comes the part, where we understand the workings of marketing automation. Yes, marketing automation is becoming increasingly popular. Yes, there are numerous benefits of this concept, but if you do not know where to start its implementation, then what is the point really? 

So, here are a few pointers that will give you an idea of how automation in marketing works, more like how you can make it work.

Do you know your needs? 

When thinking about marketing automation’s working, the first question to ask is what do you need it for. You can’t make it work, if you do not know what to work for. Is it lead generation or you simply want to ease the pressure of marketing by scheduling things and events instead of always worrying about the upcoming ones?

This concept can achieve so much, but only if you know what those achievements will look like. Create a workflow and start following it. 

Are you understanding your consumers?

Marketing automation helps you in understanding your consumers, but the more important thing is what you do with that understanding. Yes, you know what your target audience looks like, which geography you are targeting and what the psychology of the users is. But what then? When you have an answer to that, you’ll hit the automation homerun.

Are you using the right tools?

This concept is nothing without the right set of tools. Automation relies on technology and technology means tools and software that will make marketing a walk in the park. Drupal, a leading open source CMS, for instance, has numerous third party tools that allow its sites to capitalise the automation vogue. More on this in the next section. 

Are you building relationships or retaining them?

Marketing automation will target a whole new section of consumers. This would be a long and expensive process. So, just building new consumer relationships isn’t the right way of marketing automation. It would only be right when you focus on retaining the past consumers and cinching them to you with loyalty. How? That you have to think on.

Does the outcome seem too-automated? 

Marketing automation can seem a little too impersonal to the consumer. If it does, you are on the wrong track. To make the concept work, you must focus on personalising every consumer interaction. Make your brand something to remember. Reminding a consumer, who hasn’t been active based on your data, that their empty cart is missing them with a popup in their notification bar will compel them to have a look at your new catalogue. Hook, line and sinker, but with a personal touch.

After you have the clear cut answer to these five questions, it would be wise to know four more aspects that contribute to making marketing automation work for you. 

  • You must always remember to specify things and criteria you are working for along with the outcome you aim for. This is because all of this would need to be interpreted by the software at work and that would in turn be stored and executed to make you get what you wanted. 
  • You must leverage cookies, because it is these stored inside the visitor’s browser that let you know his behavioural patterns, track them and issue scores as well. 
  • You have to generate leads as a marketer, and forms with valid contact information of the customers is one of the best ways of doing that and further qualifying these leads.
  • Finally, you must have a plan that combines both inbound and outbound strategies. This helps marketers make out the difference between strong and feeble leads. 

One of the prime purposes of marketing automation is generating leads and these four points effectively achieve that. 

Making a Play at Marketing Automation with Drupal 

We have already discussed the priceless value of marketing automation in the business world, going without it is no longer an option. To that sense, Drupal has come out as a pretty valuable asset, having tools and modules that cater to each and every marketing automation need and then some. 

With the very appropriate motto of “Drive Your Strategy Forward,” Drupal indeed helps businesses in moving forward by attracting, engaging and delighting your consumers with personalised content and services. 

  • Be it real-time sales alerts; 
  • Be it managing your consumer data in bulk; 
  • Be it streamlining your workflows;
  • Be it tracking your site’s traffic down to the conversion rates; 
  • Or be it advanced email reporting; 

Drupal is equipped and ready to let you take advantage of the automated marketing strategies down to their very core.

Now, let’s focus on the specific tools that make the Drupal motto on marketing automation come alive. 

#1 Marketo MA

The Marketo Marketing Automation (MA) module helps your website by allowing it the ability to track like Marketo and capture lead data during user registration and form submission.

Mareketo’s Munchkin adds certain features to this module like tracking code to pages and capturing lead data using it’s JavaScript or API integrations. The lead capturing, being the highlighting feature, can be done during user creation, update and/or login; all you have to do specify the user actions. 

It can also very conveniently integrate itself with other marketing automation modules found on Drupal to give a better execution experience.

#2 Pardot Integration

A big part of marketing automation are the online marketing campaigns; they are essentially responsible for substantially increasing the revenue. 

Pardot Integration is a module that helps your marketing departments to not only manage these online campaigns, but also to create and deploy them. There are umpteen CRM tools that Pardot can integrate with to make the marketers tackle lead nurturing, scoring, and ROI reporting. 

Microsoft Dynamics CRM 
SugarCRM are a few of them. 

#3 HubSpot 

A renowned inbound marketing software famous for attracting, converting and closing customers has integrated itself with Drupal to form the HubSpot module, which comes with an embedded HubSpot JavaScript tacking code.

The HubSpot API and integration to Webforms which are directly submitted to HubSpot’s management system, makes this module work pretty smoothly, be it for tracking customers through signups or unleashing your existing email campaigns for the said customers. 

The fact that Webform 3.x is used makes building virtually any kind of form and embedding them anywhere possible.

#4 Poptin 

Poptin is a module that helps in creating popups, optins and forms in minutes. By showing these popups to your visitors at the right moment, you will be able to keep them engaged and minimise the chances of abandonment. The result is better sales and more revenue. 

All of the work that Poptin does is dependent on consumer behaviour, an insight to which will allow you to dole out the most irresistible popups for the consumers. You can customise the popups for your brand keeping in mind its aesthetic and vibe.

The inclusion of advanced triggering options like; 

  • Exit intent trigger; 
  • Display after time spent on website; 
  • Display after website X pages visited or X number of clicks; 
  • URL targeting; 
  • Device targeting; 
  • And traffic sources amongst others make this module more than appealing to the marketers.
#5 Mailchimp 

Mailchimp is an email delivery service. With emails being an important part of marketing automation, the Mailchimp module provides seamless integration with this particular service of the same name. 

The Mailchimp features include; 

  • directly connecting email entities to its lists; 
  • creating forms for easy signups; 
  • creating, sending and viewing campaigns and its statistics; 
  • being able to see to all the past activities on Mailchimp; 
  • and finally, triggering automated emails for defined events. 
#6 Salesforce Suite

Salesforce is a customer relationship management service platform with a side of marketing automation for customer service. Drupal’s Salesforce Suite allows to reap the full competency of the platform to propel the marketing strategy forward. 

Being a suite, this module has a range of Salesforce modules that integrate themself with the software and synchronise Drupal entities with Salesforce objects and push and pull data from each other. 

  • Salesforce Integration 
  • Salesforce Mapping 
  • Salesforce Mapping UI 
  • Salesforce Push 
  • Salesforce Pull are some of the modules in this vibrant suite.
#7 Webform 

Like the name says, the Webform module helps in creating form and surveys. These are forms that will tick all the right boxes for an enterprise grade form made using an enterprise grade form builder and the versatility of Drupal.

Once the forms are created and submitted, customisable e-mails become an option to be sent to admins or submitters or both and results are often exported to spreadsheets. Once that is done, the modules continue to work to provide a statistical review. You can also add other extensible features, if you like. These include encryption, antibot, the use of Captcha and MailSystem to name a few.

#8 CleverReach

The CleverReach module combines the efficiency of Drupal and CleverReach and makes marketing seem easy. With CleverReach’s email marketing software at work, you will be able to create, send, measure and manage your email campaigns. 

Together with the CleverReach API, this module can do a lot. Before that you would have to do two things. 

  • One is to import your CleverReach- Groups & Attributes or fields; 
  • Second would be to create a block for every group. 

These blocks would basically be newsletter subscription forms and the attributes would be the form fields. Once you have done that, subscriptions would automatically be sent to your CleverReach account. 

#9 Google Analytics

Google Analytics isn't unknown to anyone, least of all today’s marketers. Being an eminent marketing platform that allows marketers to measure everything from advertising ROI to site traffic and tracking social networking applications and sites. 
The Google Analytics module lets you integrate the platform’s web statistics tracking system to your Drupal site. 

  • Tracking single, multi or cross domains;
  • Tracking certain users, roles and pages and even excluding them; 
  • Tracking links and monitoring the types that are being tracked;
  • Monitoring the kind of files that are being downloaded; 
  • Tracking URL fragments that are changing; 

And so many other features that are incorporated into Google Analytics will be at your doorstep with this module.

#10 Crazy Egg

Crazy Egg is a popular website optimisation platform that specialises in heatmaps. With its integration with Drupal, all those heatmaps would become accessible for you in your marketing automation strategy. All you need is your Crazy Egg account details, enter them and you’ll be all set.

The Crazy Egg module comes with additional features on top of the heatmaps. These include; 

  • Knowing where your visitors scrolled through scrollmaps; 
  • Knowing exactly how you users interacted with your site through session recordings; 
  • And performing A/B tests to run two versions of your site simultaneously.
#11 Cloudwords for Multilingual 

Marketing isn’t confined by geography or language anymore. Global campaigns are being run everyday from anywhere in the world. This mandates that campaigns and marketing be accommodating to multilingualism because someone in Indonesia would never be able to relate to American Content. 

Cloudwords for Multilingual helps in this regard, being the fastest and most flexible way of making your website become localised. Cloudwords is built for marketers and by marketers, it is one of the most popular ways of running global sites. Its integration with Drupal makes both the software run to their maximum benefits and your campaign will definitely benefit from that.

#12 Mautic 

Mautic is an open source marketing automation service, which gives businesses the opportunity to integrate and personalise every digital property and channel they might have, so that the consumers receive a seamless experience every time. 

The Mautic module integrates itself with this platform, and the results are campaigns and content performing at a higher level to attain better leads and conversions. Choosing multiple authentication methods and selecting forms from a particular Mautic instance for display are two of its most used use cases.


Marketing automation is gaining grounds by the day. An organisation that isn’t taking it up would somehow be lacking in its marketing game. Remember the end goal of any business is just one, to get to the desired revenue figure, no matter the path it may have to take. Marketing automation one path that makes that figure seem almost tangible. So, why not take it up. With Drupal marketing automation is a breeze, so again, why should we not flow with the wind?

blog banner blog image Drupal Marketing Automation Drupal and Marketing Blog Type Articles Is it a good read ? On

Brian Perry: We're In The Golden Age of Contributing to Drupal

3 weeks 2 days ago

I spent some time recently looking at the new general project type on Drupal.org. As someone who spends quite a bit of time working on Drupal adjacent things, a home for Drupal related projects that aren't modules or themes opens up some exciting (and important) possibilities. As I thought more about how this could be used for an upcoming project, it dawned on me that this was just latest in a series of developments that vastly improve the experience of contributing to Drupal.

Mediacurrent: DrupalCon 2021 Program Update

3 weeks 2 days ago

DrupalCon North America 2021 is right around the corner! Check out the ever-growing schedule of sessions, industry summits, and special events on the official event site, and mark your calendar for these Mediacurrent sessions. 

Our Sessions 

The Mediacurrent team is proud to support this community event as a platinum sponsor. We’ll be presenting several sessions at this year’s online conference.

Whether you’re a site builder scaling up with multisite, a marketing leader in search of current guidance on open source security, or a Drupal community member of any kind looking for inspiring real-world case studies, we’ve got you covered. 

Here’s what we have in store for sessions and case studies in Drupal innovation:

Unlock The Power of Multisite 

Join Jay Callicott, Mediacurrent’s VP of Technical Operations, for a comprehensive approach to manage your Drupal sites at scale.

Interested in evaluating multisite options for your organization? Jay will cover several ways to scale your Drupal platform from one site to many dozens or even hundreds.

Register here to join the session and learn best practices for governing multiple sites from one codebase, how to configure a multisite installation, and considerations for your hosting solution. 

Open Source Security for CMOs

As open source software continues to become widely adopted, adhering to security standards is becoming more challenging. So what's a CMO to do?

Inspired by our ebook, The CMO’s Guide to Open Source Security, this session will help you navigate the terminology, expectations, and tools to ensure security is a priority for your web properties.

You can register here to join the session led by Mediacurrent’s resident Drupal security experts Mark Shropshire and Krista Trovato.

Case Study: Habitat for Humanity 

Imagine a world where everyone has a decent place to live. That’s the vision fueling Habitat for Humanity to create ambitious digital experiences with Drupal. 

This session will present a case study covering how Drupal is being used to bring mission-driven innovation to reality for this international nonprofit. Both Drupal site builders and non-technical roles are encouraged to attend. 

Stay tuned for scheduling information! 

Drupal for Higher Education 

The year 2020 called for higher ed leaders to accelerate digital marketing strategies. For many, Drupal was a key part of the equation. This rang true among a spectrum of Mediacurrent’s higher education partners, including an Ivy League university that chose a decoupled architecture for its breakthrough knowledge platform.

Dan Polant, Director of Development at Mediacurrent, will share that story in a co-presented session at the Higher Education Summit. The session will explore the University’s driving mission to build toward a brighter financial future on a Drupal and React-based platform.

Join the session on April 20 at the Higher Education Summit.

Connect with Us

There's more to come! Check back for Rain CMS demos, Drupal 9 info sessions, giveaways, and more coming soon to our DrupalCon 2021 event page.


Matt Glaman: drupal-check and phpstan-drupal are Drupal 9 and PHP 8 ready

3 weeks 2 days ago

I am happy to announce that phpstan-drupal and drupal-check are Drupal 9 and PHP 8 ready! Both projects have CI pipelines running tests and analysis to make sure they're compatible as we start the journey for Drupal 10 (😱 already? I know!)

Florida DrupalCamp sponsored 20 hours of development. Since my funding is from the community, I have been working on these projects via a live stream on Twitch every Wednesday.

Matt Glaman: drupal-check and phpstan-drupal are Drupal 9 and PHP 8 ready

3 weeks 2 days ago

I am happy to announce that phpstan-drupal and drupal-check are Drupal 9 and PHP 8 ready! Both projects have CI pipelines running tests and analysis to make sure they're compatible as we start the journey for Drupal 10 (😱 already? I know!)

Florida DrupalCamp sponsored 20 hours of development. Since my funding is from the community, I have been working on these projects via a live stream on Twitch every Wednesday.

MidCamp - Midwest Drupal Camp: Give Back to Drupal at MidCamp

3 weeks 3 days ago
Give Back to Drupal at MidCamp

MidCamp 2021 is less than one week away, so register now. We’ll be doing our first review of topic submissions for Thursday’s “Meet the Drupal Community” day this evening and still taking submissions for Friday’s “Share Your Knowledge” Unconference. Our job board is filling up, and we’re ready to gather.

MidCamp is always a great prep for DrupalCon contribution activities, and this year is no exception. Even if you’ve never contributed to Drupal before, we have something for you.

Thursday: Olivero Sprints

MidCamp will be hosting a sprint to create automated tests for Drupal’s new Olivero theme on Thursday, March 25th, and Saturday, March 27th, 2021. During the Thursday sprint, attendees will learn to write functional tests using Drupal core’s test suites, PHPUnit and NightwatchJS. We’ll then submit patches to Drupal.org to go through the process of committing them to Drupal core.

Friday: Get Started with Local Development

In addition to our Unconference on Friday, DDEV will host a multi-part workshop to help you set up a local development environment on macOS, Linux, or Windows. Get ahead by installing the latest Quicksprint package, or just follow along during the workshop. Bring all your questions!

Saturday: Give Back To Drupal

Contribution days are an important part of Drupal's growth and are also a great opportunity to get involved because others are on hand to help you contribute. There is a dedicated contribution day on Saturday, so come and collaborate with other Drupal community members!

We’ll be focusing our work on:

New to code contributions? That’s wonderful! There will be a series of first time contribution workshops in the morning.

And now… a word from our sponsors:

Evolving Web is looking for talented Drupal trainers for their training program. Join the #EW Drupal community. Check it out: https://apply.workable.com/evolving-web/j/D7134FBC98/

Tyto Learning Solutions is proud to be a core sponsor of MidCamp 2021! Join Tyto Learning Solutions on Wednesday at 10:30 CDT for their session: Drupal Camp Quick Start: What Am I Getting Myself Into? We'll address some of the questions about Drupal that you did not even know to ask! Targeted to the non-developer, this session is perfect for individuals that are new to Drupal and Drupal camps.

Nonprofit Drupal posts: March Drupal for Nonprofits Chat

3 weeks 3 days ago

Our normally scheduled call to chat about all things Drupal and nonprofits will happen TODAY, Thursday, March 18, at 1pm ET / 10am PT. (Convert to your local time zone.)

No set agenda this month, so we'll have plenty of time to discuss whatever Drupal-related thoughts are on your mind. 

All nonprofit Drupal devs and users, regardless of experience level, are always welcome on this call.

Feel free to share your thoughts and discussion points ahead of time in our collaborative Google doc: https://nten.org/drupal/notes

This free call is sponsored by NTEN.org and open to everyone.

View notes of previous months' calls.

Ny Media: How to make sure your project will keep working in a world where "the drop is always moving"

3 weeks 4 days ago
How to make sure your project will keep working in a world where "the drop is always moving" jakub March 17, 2021

As you may already know, Drupal is an extremely powerful framework with a high level of customizability, and you can basically bend Drupal to your will using the User Interface (UI). For example, you can:

  • add listing pages using Views UI
  • build complex layouts with Layout Builder
  • add custom fields to existing entities
  • adjust Drupal Commerce checkout flows directly from UI

However, if you know how to code, there's a whole other world out there, just hiding beneath Drupal´s surface: the world of APIs.

What is an API?

According to Wikipedia (“API”, 2021): 

an application programming interface (API), is a computing interface that defines interactions between multiple software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. It can also provide extension mechanisms so that users can extend existing functionality in various ways and to varying degrees.

Drupal consists of several APIs, e.g. Form API, Plugin API, or Render API, to name a few (you can find a comprehensive list and detailed instructions under this link). Drupal Core, modules distributed as part of Drupal Core, contrib modules and custom modules all use Drupal APIs to seamlessly interact with each other based on well-established principles. Drupal, similarly to other PHP frameworks, utilizes the PHP dependency manager Composer in order to benefit from the many standalone PHP packages, where each of them provide additional functionality to Drupal, usually via an API.

“The drop is always moving”

The Drupal project is committed to provide a stable framework, while also innovating. You get new modules and APIs with almost every minor release of Drupal. The same goes for the contrib module ecosystem; you can come across new versions of contrib modules every day, and quite often they feature new ways of interacting with them. As an example of this, check out the recent version of Drupal Commerce 2.24 release notes, which features a new Order Preprocess API.

Semantic Versioning

At this time, I have to mention Semantic Versioning, which was developed in order to establish a versioning scheme for packages that depend on each other. According to semver.org (2021), Semantic Versioning can be summarized like this: 

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backward-compatible manner, and
  • PATCH version when you make backward-compatible bug fixes.

At the time of writing this blog post, the most recent release of Drupal Core is 9.1.4. Let's break down this version into segments, starting from the least significant bit:

Patch version 4 means there were four extra releases with bug fixes since the minor version release. Minor version 1 (initially released as 9.1.0), is the successor of the 9.0.x line. It features new functionality (amongst other the Olivero frontend theme), but is delivered to you in a backward-compatible way (which, I don’t have to say, is awesome!). The difference between 9.x.x and 8.x.x, also known as major releases, is that 9.x.x provides changes that are backward incompatible. This means that some of the APIs that were available in Drupal 8, no longer are available in Drupal 9.

Drupal contrib modules are also subject to semantic versioning. However, for historical reasons some of the modules are still featuring legacy versioning schemes, based on which major version of Drupal Core they are compatible with. For example, the latest Drupal Commerce release is 8.x-2.24. This means that the module is compatible with Drupal Core 8, the major release is 2, and the minor release is 24. Fortunately, modules can now be compatible with more than one core version, so the first part of the legacy version scheme is not applicable anymore. That is why the Drupal Infrastructure team came up with a method of translating old version strings into semver-compatible ones, which is also required by Composer. In practice, this means that version 8.x-2.24 is mapped to 2.24.0.

Trust your muscles 💪, not your memory🤔

Let’s consider a basic scenario. I have already mentioned the new Order preprocess API featured in Drupal Commerce 2.24(.0). Let’s say you’ve been using your project for a while now, and this is what the project’s root composer.json file looks like:

{ "name": "drupal/recommended-project", "description": "Project template for Drupal 8 projects with a relocated document root", "type": "project", "license": "GPL-2.0-or-later", "repositories": [ { "type": "composer", "url": "https://packages.drupal.org/8" } ], "require": { "composer/installers": "^1.2", "drupal/core-composer-scaffold": "^8.8", "drupal/core-project-message": "^8.8", "drupal/core-recommended": "^8.8", "drupal/commerce": "^2.0" <------------------- note this one here }, "require-dev": { "drupal/core-dev": "^8.8" }, "conflict": { "drupal/drupal": "*" }, "minimum-stability": "dev", "prefer-stable": true, "config": { "sort-packages": true }, "extra": { "drupal-scaffold": { "locations": { "web-root": "web/" } }, "installer-paths": { "web/core": ["type:drupal-core"], "web/libraries/{$name}": ["type:drupal-library"], "web/modules/contrib/{$name}": ["type:drupal-module"], "web/profiles/contrib/{$name}": ["type:drupal-profile"], "web/themes/contrib/{$name}": ["type:drupal-theme"], "drush/Commands/contrib/{$name}": ["type:drupal-drush"], "web/modules/custom/{$name}": ["type:drupal-custom-module"], "web/themes/custom/{$name}": ["type:drupal-custom-theme"] } } }

Now, I want to focus on the Drupal Commerce version constraint ^2.0. This means all versions of Drupal Commerce starting with 2.0.0 are fine, and updates are allowed (2.0.1, 2.1.0, 2.8.99, etc.) until a new major release is tagged (3.0.0). This version constraint allows you to update your dependency in a backward-compatible way. Perfect!

Now, let’s say you decided to utilize the Order Preprocess API as part of the project. As you can code and you know how to implement such an API, you start by updating your dependency with composer update drupal/commerce --with-dependencies (or composer update), in order to download the latest version of Drupal Commerce. Next, you implement a new tagged service, and some might say the work is done. But, then you would be forgetting one important thing: version constraints allow composer dependencies to be upgraded as well as downgraded. Even though it doesn’t happen that often with modules, you may have noticed that some dependencies (such as Symfony components), are downgraded from time to time when new dependencies are added to a project.

This is where you can make use of your muscles: while utilizing the new API that was introduced in Commerce 2.24, you should also bump the version constraint to match the minimum version of Commerce that is allowed for your code to work. This means you should change the mentioned version constraint from initial

“drupal/commerce”: “^2.0”


“drupal/commerce”: “^2.24”

This way you make sure Composer will never resolve a version that is incompatible with your custom code.

Chained dependencies

There’s one more thing people tend to forget about: chained dependencies. To exemplify a chained dependency, let's continue using Drupal Commerce as a dependency that is referenced from your project’s composer.json. As you may already know, Commerce comes with a bunch of dependencies on its own. However, you should not take Commerce dependencies for granted. Commerce may add new dependencies, bump minimal versions of existing dependencies, or even remove some of them! Therefore, you should always explicitly specify the versions of chain dependencies required to run your project.

As an example, let’s say you decided that you have to implement the entity.duplicate event provided by the Entity module, which was already conveniently bundled with Drupal Commerce. You then added all the code required to implement that API (in this case an event subscriber), in a custom module committed directly to your project. However, to make sure the dependency will be there even if Commerce decides to remove their dependency on the Entity module, you must add drupal/entity:^1.0 directly to your project’s composer.json. This can be done by running the following composer command:

composer require drupal/entity:^1.0

This will make sure that the entity module ain’t going anywhere, but also that it’s not all of a sudden bumped up to major version 2. This would remove the API you’ve implemented, given that such a removal can only be done in a major release.

Hi, have you met Stan?

Remember, you’re not alone. The best way to mitigate the risk of losing the dependency or getting it resolved without the API your project relies on, is to have decent test coverage. Even a simple unit test that is run on every pull (or merge) request can save you a lot of trouble. However, even with the best intentions, some features may not be covered by your tests. In that case, remember you can always come back and iterate on missing test coverage.

Stan, or actually phpstan, is yet another tool that can be helpful (big kudos to Matt Glaman for adding Drupal support to phpstan!). Stan ensures a certain level of quality by performing static analysis of your codebase searching for incorrectly implemented APIs, missing code references, etc. Some of the biggest advantages of using static analysis tools, is that running them takes little time, and that they have no dependency on the database. This means that setting up your CI platform should be relatively simple (more about this in a future blog post, so stay tuned!). Nevertheless, such tools should be used with caution and limited trust as they are not able to detect all issues with your code. One example is hook-based API, which the lack of cannot be easily tested with static analysis tools, as it relies on the naming pattern for globally accessible functions.


Hopefully, after reading this blog post you’re aware of what can go wrong if you carelessly implement a new API in a project that must be maintained over a longer period of time. Make it a habit to always double-check dependencies you’re directly relying on. This means that you will be able to perform updates to all dependencies when they come out, without risking that they might ruin your application. So, the best way to keep the future you happy, is to remember two simple rules:

  • bump existing dependency constraints every time you implement a new API addition
  • add chained dependency as a direct project dependency whenever you start directly relying on the API it provides

The future you will thank you.


“API”. 2021, In Wikipedia. https://en.wikipedia.org/wiki/API
Semver.org. (2021). Semantic Versioning 2.0.0. https://semver.org/

Metadrop: Scrollytelling using scrollama.js, CSS and best practices

3 weeks 5 days ago

For some years now, a series of techniques have been quite popular with a common point: the introduction of animations or interactions linked to the user's progress through the page (scroll) that often allow us to "tell" a story (scrollytelling).

In its simplest form, this technique can be used to make certain elements "appear" when they reach a fixed point on the screen, thus giving a sense of greater dynamism and catching the user's attention. It is a technique that we can see in hundreds of sites such as, for example, the website of Opigno or this Netlify minisite.

In this tutorial we are going to tell you step by step how we recently added micro-animations to Metadrop.net and how you can do it on your own sites using our new contrib module and the Scrollama.js library.

Why Scrollama.js

Until a few years ago, scroll libraries had to listen to scroll events or even replace the native scroll with a simulated one (scrolljacking), which caused major performance problems, especially on mobile (jumpy scroll, interrupted scroll, etc.).

Fortunately, today we have the IntersectionObserver API that allows us to operate in…

Tag1 Consulting: AFT's Share My Lesson: Part 2 - Rapid Growth and Challenges Faced

3 weeks 5 days ago

During the COVID-19 pandemic, education looks as different as everything else. Teachers and other educators are working hard to help their students learn, and lesson plans are often key to that learning experience. People are most familiar with collaboration in person - but the current situation means more of us, educators included, are working and sharing resources online. Share My Lesson provides free resources for teachers, parents, and other educators. The American Federation of Teachers created Share My Lesson to help educators address their needs, and share lessons with colleagues. In this part of our Tag1 Team Talks series with Kelly Booz, Director of Share My Lesson and e-learning at AFT, Tag1 Managing Director Michael Meyers and Tag1 COO Peta Hoyes talk with Kelly about the growth of the Share My Lesson website. * Building the Largest Online Repository for Lesson Plans * Part 3 (coming soon) For a transcript of this video, see Transcript: Share My Lesson - Kelly Booz Part 2 . Photo by lucas law on Unsplash

Read more [email protected]… Tue, 03/16/2021 - 05:35

Civic UK: Accessibility hacks to optimize your Drupal site accessibility score

3 weeks 5 days ago
We are committed to design and develop inclusive and accessible websites. Using Drupal, one of the most popular and effective content management systems, we know that we lean on a tool that encourages and supports the proper use of semantic markup, a vital issue especially for users relying on screen readers and other assistive technologies.

Specbee: Improving Drupal's Layout Builder Experience

3 weeks 5 days ago
Improving Drupal's Layout Builder Experience Malabya Tewari 16 Mar, 2021 Top 10 best practices for designing a perfect UX for your mobile app

When Layout Builder was introduced in Drupal 8.6 and stabilized in Drupal 8.7, it created a drift in the page building mechanism being used in Drupal’s ecospace. Layout builder gave tough competition to other tools like Paragraphs, Brick, Panels, and Display Suite. Its unique ability to drag and drop components and preview them real time was a real concession for a page builder tool and for the authors.

However, despite being a prodigious tool for building pages it has its shortcomings when used for enterprise applications which requires a better authoring capability, restricted selections, quick access, and more importantly granular permissions for different user roles.

In this article, I will be covering 10 Drupal contributed modules which can be used in conjunction with the brilliant Layout Builder module that will make the tool more fascinating and authoritative. To add to this awesomeness, all these modules and compatible with Drupal 9 too!


The modules are divided into certain categories:

  • Styling - Ability to provide access to the editor to choose from a style library which can be applied to sections and blocks.
  • Authoring experience - Enhance the authoring experience of the editors which they will love.
  • Reusability - Provision to reuse components or sections on different pages to reduce page building time.
  • Quick Access - Provide quick access to the editors to perform certain actions thus saving time.
  • Permissions - Give restricted access to editors or other user roles based on their access.
Layout Builder Styles

The Layout Builder Styles is a powerful Drupal module that allows you to add styles to the blocks and sections right from the UI. It can be used to provide the authors the capability to choose from a list of preset styles defined in the backend.


A "style" is just a representation of one or more CSS classes that will be applied. Additionally, for blocks, a block template suggestion is added for the selected style.

The styles are basically configuration entities which contain the CSS classes. The classes being added in the configuration must be defined in the frontend theme stylesheet for them to reflect on the frontend when applied to a particular section or a block. There is a provision available for having multiple styles which can be applied to a single block or section.

Since the styles are stored as configuration, they can be easily exported to configuration files using Drupal configuration management.

However, you must be responsible while adding styles as you are giving a powerful capability to the authors to alter the styles of the components being placed in a page. If not planned properly, things might go south with conflicting styles.

Layout Builder Component Attributes

The Layout Builder Component Attributes module provides similar provision to authors but with more options and it is only for the blocks being placed in a Layout.


Oftentimes, authors need to add certain data-attributes or certain CSS Classes/IDs to a block to render the data in a certain way. There are modules available for such cases like Block attributes and Block class but they either lack the support of Layout Builder or need patching to work. The Layout Builder Component Attributes module gives the options to add these details as attributes to the blocks right in the Layout Builder UI out of the box.

The modules provide options ID, Class(es), Styles [inline styles to the block], Data-* attributes. These attributes can be added to 1) the block (outer) element, 2) the block title, and 3) the block content (inner) element. The options are configurable for each element types i.e. if you don’t want the ID field to be available for block titles those can be unchecked in the modules configuration form at


Layout Builder Modal

Drupal’s Layout Builder Modal module modernizes the UI and authoring experience for the block configuration forms or creation forms (in case of inline blocks). The form displayed on the off-canvas dialog sidebar can get really cumbersome because it is very narrow. Especially if you are dealing with complex fields, rich text fields, media references, etc. The off-canvas dialog greatly reduces the usability and is not ideal for such situations.


The module opens the forms in a popup window where there is a good amount of breathing space and increased usability. There are configurations available where you can set the width and height of the modal popup window. You can also select which theme to use for the modal content where you can either choose the default enabled themes (Olivero in case of the above screenshot) and the good old Seven administration theme. Currently, Claro is not supported but there is work  going on in this front to make Claro available as an alternative.

Overall, the module greatly enhances the authoring experience for editors and the usability of Layout Builder.

Layout builder library

Let’s consider a situation where the editors need to quickly set up a page where they need to show certain content block components based on certain criteria e.g., selection of particular taxonomy terms. Now, this can be done in a hard way that editors create a landing page and then create the same layout again and again for multiple pages with the same content but different conditions. Or else, use the Layout Builder library module.


The Layout builder library modules provides the site administrator with the capability to create predefined layouts for each entity-type and bundle combination. Now, these layouts will be available to the site editors while creating the Landing page content. This will make the task much easier and faster where the editors will not have to redo the same task repeatedly. The module also provides granular permissions to restrict editors to create their own bespoke layouts but give them the ability to customize layouts on a per-content-item basis.

Section Library

Similar to the situation above mentioned where editors might need to choose from existing layout from a library, there can be a circumstance where editors will have to reuse certain sections from Layout Builder on multiple pages. This is where the Section Library comes into play. With the module, editors can create their own mini layouts which they can reuse on other pages. This allows them to create pages faster without again, repeated doing the same stuff.


The key difference between this module and the Layout Builder Library module is that the latter builds a full-page template and is config-based. The Section Library is content based so the content editor can create templates on the fly without import/export configs, also it builds templates for the section or multiple combined sections (page) templates.

There is no overlapping between the two modules, and you can use both at the same time.

Layout Builder Direct Add

One of the key features of Layout Builder is the ability to add inline blocks which are one off non-reusable blocks specific to a page. Now if the pages in your system mostly depend on these inline blocks as components, the Layout Builder Direct Add can save some editor's time by saving a few clicks.


The module simple replaces the “Add Block” button with a quick dropdown button to the block types available in the system with a “More” option which opens the off-canvas dialog sidebar. When an editor selects any of the block types from the list it directly opens the block form to create that component.

Layout Builder Operation Link

This small module is a good to have feature for a site. To access the Layout Builder UI for an entity an editor needs to visit the page and then click on the Layout tab in the taskbar. The Layout Builder Operation Link adds a Layout option the dropdown button to contents in the content overview page.


The layout option will show up for all the entity type bundles where Layout Builder is enabled. This link saves content editors a click/page load when they want to access an entity's layout page directly without loading its edit page first.

Layout Builder Restrictions

Out of the box, Layout Builder will list out all the blocks available in the system provided by various plugins and modules, fields are available as blocks and there are inline blocks options to create one-off blocks. Apart from that all the layouts provided by other modules and the theme also lists out when a section is being placed. This can be a little confusing and overwhelming for editors and poses a usability problem since the number of blocks can quickly grow in an enterprise application.


Layout Builder Restrictions solves this problem by providing a configurable layout with options that are needed. These options will be present whenever Layout Builder is enabled for any entity display. The module configurable UI for allow-listing/deny-listing blocks and layouts. Sites can allow all options from a certain provider, or restrict all options by provider, or specify individual allowed blocks & layouts. Site administrators can allow/deny those blocks that are useful for editors to build the pages and only those blocks and layouts will be available for the editors to choose from.

Layout Builder Advanced Permissions

Although Drupal provides a powerful permission system for user roles, there can be possibilities of more granular permissions based on the roles. The situation may arise when there are multiple user roles interacting with the system and pages.


The Layout Builder Advanced Permissions module gives that capability to the site administrators to provide restricted permissions to use based on their role. These permissions are global which are applied across all entity types where Layout Builder is enabled. To take things further and restrict access on a cruder level, Layout builder lock will come handy which will be covered in the next section.

Layout Builder Lock

As mentioned above, the Layout Builder Lock will provide a cruder access for users. It allows administrators to lock sections of a default layout so users can't perform certain actions when overriding the layout for an individual entity.


These lock settings will be available when the module gets installed and will be available for all sections. There are global permissions available to manage the access of the lock features. These are advanced editorial features which should be added and used very responsibly. Locking out a section, or any component inside a section means that the section will have very limited access for changeability.

Quick Recap
  1. Layout Builder Styles - allow site builders to select from a list of styles to apply to layout builder blocks and layout builder sections.
  2. Layout Builder Component Attributes - allows editors to add HTML attributes to Layout Builder components (blocks).
  3. Layout Builder Modal - lets you add and configure existing blocks in a modal in the Layout Builder UI.
  4. Layout builder library - provides a layout library allowing content editors to pick from a list of predefined layouts.
  5. Section Library - create reusable templates for single or multiple sections.
  6. Layout Builder Direct Add - replaces the "Add block" link with a drop-button that lists custom block types.
  7. Layout Builder Operation Link - adds a 'Layout' operation link to Layout Builder-enabled content on Drupal administrative pages.
  8. Layout Builder Restrictions - set which blocks and which layouts should be available for placement in Layout Builder.
  9. Layout Builder Advanced Permissions - allows to control in details access to the Layout builder page by providing a more granular permissions set.
  10. Layout Builder Lock - allows administrators to lock sections of a default layout so users can't perform certain actions when overriding the layout for an individual entity.

The Layout Builder is a game-changer in Drupal’s page building capabilities. In this modern age where more and more websites are moving toward a component-based layout technique for building pages, the Layout Builder has become the de facto tool by offering an easy way of drag and drop component functionality. With the above-mentioned modules, you can create an experience which the editors/clients will love and enjoy building pages to grow their business. Want to know how our expert Drupal development team can help you leverage the best of Drupal’s modules? We’d love to talk!

Drupal Development Drupal Module Drupal Planet Drupal Tutorial Drupal 8 Shefali ShettyApr 05, 2017 Subscribe For Our Newsletter And Stay Updated Subscribe

Leave us a Comment

  Shefali ShettyApr 05, 2017 Recent Posts Improving Drupal's Layout Builder Experience Image How to perform Automated Backups on a Drupal 8 (or 9) Website Image How to Export/Import Menus, Custom Blocks & Taxonomies with the Drupal 9 (& 8) Structure Sync Module Want to extract the maximum out of Drupal? TALK TO US Featured Success Stories

A Drupal powered multi-site, multi-lingual platform to enable a unified user experience at SEMI.


Discover how our technology enabled UX Magazine to cater to their massive audience and launch outreach programs.


Discover how a Drupal powered internal portal encouraged the sellers at Flipkart to obtain the latest insights with respect to a particular domain.


MidCamp - Midwest Drupal Camp: Olivero Sprints at MidCamp

3 weeks 5 days ago
Olivero Sprints at MidCamp

MidCamp will be hosting a sprint to create automated tests for Drupal’s new Olivero theme on Thursday, March 25th, and Saturday, March 27th, 2021. During this sprint, attendees will learn to write functional tests using Drupal core’s test suites, PHPUnit and NightwatchJS. We’ll then submit patches to Drupal.org to go through the process of committing them to Drupal core.

Why do we want tests?

Drupal core is a very complex content management system, with loads of functionality and edge cases that need to be accounted for when committing code. Thoroughly testing all of this manually is extremely difficult and time-consuming. However, automated tests fill this gap to ensure critical functionality does not break when new code is committed.

To that end, we’re going to create various automated tests for Olivero that will ensure we don’t commit code that breaks existing functionality. 

Sprint schedule


Thursday morning, Bluehorn Digital’s Matt Glaman will be leading a class on getting up and running with NightwatchJS. The goal of this class is to get Nightwatch tests running locally – with DDEV, Lando, or a regular local environment. We will walk through configuring Nightwatch for your environment, running Chromedriver, and executing an existing test within Drupal core.

That afternoon, we’ll be writing our first tests for Olivero. Matt will once again be mentoring. We’ll be concentrating on writing the Nightwatch install script and an initial test. When the Nightwatch test suite executes a test, it runs an installation script to set up the test Drupal site. We’ll need to write a script that enables Olivero and sets up some content. Once we have the install script created, we will test the Olivero menu collapse when a user begins scrolling on the page.


On Saturday, Brian Perry, Matt Glaman, and Mike Herchel will lead teams to concentrate on writing both PHPUnit and Nightwatch tests. We’ll also possibly contribute NightwatchJS documentation to Drupal core

Toward making Olivero stable

These tests are a critical requirement for stabilizing Olivero, and making it the default theme for Drupal (replacing Bartik). You can review the meta-issue for creating these tests.

What you can do

If you want to participate, you’ll need to have a working Drupal 9.2.x running on your local computer. You can download the latest Drupal core 9.2.x and set up your local environment.

One more thing… Register for MidCamp today! Ticket prices start at FREE!

1 hour 18 minutes ago
Drupal.org - aggregated feeds in category Planet Drupal
Subscribe to Drupal Planet feed