Centarro: The ABCs of PDPs and PLPs

Planet Drupal - Sat, 2022/04/23 - 2:53am
While many Drupal developers have at least some eCommerce experience, the number of people in our community who make it their primary focus is rather small. This isn't surprising, given Drupal is most often used as a CMS, not an eCommerce platform. However, it does mean that when you encounter an eCommerce opportunity, you may not be making the most effective pitch you can to win the merchant's business. One way to improve your pitch is to make sure you're using the same vocabulary to describe eCommerce features and concepts as the rest of the eCommerce industry. It's all too easy for us as Drupal developers to rely on our internal vocabulary, but merchants comparing your proposals, case studies, or Drupal Commerce articles won't have the slightest clue what Taxonomy Terms, Views, or Search API indexes are. Learning and using industry standard terms will help you build clarity and confidence with your eCommerce prospects and customers, reducing the amount of work they have to do to understand your proposals and compare them against other solutions to see exactly where Drupal Commerce comes out on top. Read more

Promet Source: Provus 2.0: Next Gen Drupal Content Editing

Planet Drupal - Sat, 2022/04/23 - 12:40am
Among the Drupal site owners who are experiencing first-hand how easy (and actually, how fun) it can be to make updates and switch up layouts whenever needed, the first generation of Provus is a rather big deal. The same can be said for developers, for whom component-based design systems are streamlining site builds.

clemens-tolboom commented on pull request python/cpython#91741

On github - Fri, 2022/04/22 - 10:12am
clemens-tolboom commented on python/cpython#91741 Apr 22, 2022 clemens-tolboom commented Apr 22, 2022

Sorry for the wrong branch ... my bad :-/ New main branch version is #91814

clemens-tolboom opened a pull request in python/cpython

On github - Fri, 2022/04/22 - 10:10am
clemens-tolboom opened a pull request in python/cpython Apr 22, 2022 Replace 'currying' by 'partial function'. #91814

Currying is not mentioned in the text so the reference is a little pointless. Currying is related to, but not the same as, partial application. F…

+1 -1

Opensource.com: 3 things to know about Drupal in 2022

Planet Drupal - Fri, 2022/04/22 - 9:00am
3 things to know about Drupal in 2022

Several changes have made Drupal more accessible and easier to use.

Shefali Shetty Fri, 04/22/2022 - 03:00

A broad range of enterprises, including nonprofits, media and publishing, government agencies, education, and more, rely heavily on Drupal. But while Drupal is widely...


Oomph Insights: Elevating Our Impact: Oomph Joins 1% for the Planet

Planet Drupal - Fri, 2022/04/22 - 2:00am
I’ve been following 1% for the Planet since around 2006, before Oomph was even born. As a father of a one-year-old at the time and a passionate outdoor enthusiast — especially around the ocean — sustainability was always top of mind for me, and seeing businesses take a stand on these issues was incredibly inspiring. I used to dream that one day my company would be a member, committed to giving back to the environment. Today, I’m excited to announce that Oomph has joined 1% for the Planet for 2022 and beyond! 1% for the Planet pairs businesses and individuals with environmental nonprofits…

ImageX: Top Upcoming DrupalCon 2022 Picks for Higher Ed Marketers

Planet Drupal - Thu, 2022/04/21 - 6:20pm
Oxford University, Harvard, MIT, Stanford, and a great number of other top Higher Ed institutions have one thing in common. Their websites are built with Drupal, the open source platform that keeps innovating to provide cutting-edge digital experiences.  What are the latest Drupal improvements, top-notch features, best practices, or complementary technologies that could be beneficial for university and college websites? The best way to learn is to follow the Drupal community’s largest annual event — DrupalCon. It gathers the best Drupal minds and the most passionate innovators that share their ideas, drive change and shape Drupal’s future.

ImageX: DrupalCon Portland: Top Sessions for Developers

Planet Drupal - Thu, 2022/04/21 - 6:19pm
Between April 25 to April 28, 2022, Portland will become the Drupal capital of the world. Like the strongest of magnets, the Oregon Convention Center will attract thousands of attendees to the first in-person DrupalCon since 2019. Valuable insights, new connections, and lots of communication are guaranteed for marketers, designers, editors, project managers, and all others who create or work with Drupal websites. We have recently shared top DrupalCon picks for Higher Ed marketers which is worth checking out.

ImageX: Top Session Choices for Non-Profit Marketers at DrupalCon Portland

Planet Drupal - Thu, 2022/04/21 - 6:18pm
Non-profit teams are dedicated enthusiasts working for a given cause. They definitely know the worth of a good website. Like a tireless team member, websites can work 24/7 bringing the organization’s message across to potential donors, boosting the whole team’s efficiency in routine tasks, and providing smooth user experiences for everyone. An enthusiastic team member always strives to go the extra mile. Similarly, non-profit websites can always do more for their teams... But in what way? The best answers can be found at DrupalCon Portland 2022.

Aten Design Group: Set up a local Drupal multisite with Lando on Mac OS

Planet Drupal - Thu, 2022/04/21 - 1:34pm
Set up a local Drupal multisite with Lando on Mac OS Eric Toupin Thu, 04/21/2022 - 05:34 Drupal

Setting up a local Drupal multisite with Lando isn’t complex with the right docs, but it took me a little while to find all the right bits of configuration. I’ve centralized them here for posterity.

Building and operating local development environments that reflect your production environments can be tricky — especially as the landscape of tools, libraries, and automations continues to evolve. Recently we’ve been pretty satisfied with Lando for Drupal development. It’s well supported, has an active developer community, and can be configured for a variety of tricky use cases like emulating a Pantheon environment (that will have to be a different post) or setting up a Drupal multisite.

If you’re here you probably know what a Drupal multisite is, but just in case: Multiple separate websites, each with its own database and configuration, served from the same code base. There are a host of uses for multisites, but if you think about different websites for different store branches or maybe a variety of individual blog sites driven from the same or similar setup you’d be on the right track.

Installing Lando and Docker Desktop

First things first: install Docker and Lando. If you already have Lando installed on your machine you can skip ahead, but just FYI I’m using a particular version of Docker for this build. A lot of us here at Aten have been running Lando with Docker Desktop for Mac 4.6.1 — it’s possible this Drupal multisite setup will work with other versions but I’m sure it works with this one. Follow the link above to install Docker — and make sure you choose the right platform for your chipset, whether that’s Apple or Intel. You can check your chipset on your Mac by clicking Apple Icon > About this Mac.

Once you have Docker Desktop installed, you can install Lando. I used the DMG installer for this walkthrough. When downloading the installer make sure to choose the right file — again, depending on your Mac’s chipset. If you have a newer Mac with an Apple chip choose the latest lando-arm64-vx.x.x.dmg, for Intel chips choose the lando-x64-vx.x.x.dmg.

The Lando DMG installer is very straightforward, just follow the onscreen instructions but make sure to choose “Custom” installation type, and uncheck Docker from the list of packages to install. This way Lando will work with the particular 4.6.1 version we already downloaded and installed.

Initializing a Drupal project on Lando

For this demo I used Lando’s Quick Start for Drupal which just takes a couple of minutes to run. You’ll want to start in your projects directory then run the following commands. I called my app landomultidrupal so change that value as you see fit. The somewhat unwieldy terminal commands look like this (pulled directly from the link above):

# Initialize a drupal9 recipe using the latest Drupal 9 version mkdir landomultidrupal \ && cd landomultidrupal \ && lando init \ --source remote \ --remote-url https://www.drupal.org/download-latest/tar.gz \ --remote-options="--strip-components 1" \ --recipe drupal9 \ --webroot . \ --name landomultidrupal   # Start it up lando start   # Install a site local drush lando composer require drush/drush   # Install drupal lando drush site:install --db-url=mysql://drupal9:drupal9@database/drupal9 -y   # List information about this app lando info

And just like that we’ve got a Drupal 9 site running on Lando. Now let’s turn it into a multisite. We’ve got three tiny steps to complete here: modifications to your .lando.yml file, your settings.php file(s) and your sites.php file.

Multisite setup in .lando.yml

Below is a barebones .lando.yml configuration for a Drupal 9 multisite setup with two sites which we’ll call multisite1 and multisite2. It’s likely (especially if you’re a Lando aficionado) that your lando file will have some other configurations — but below are the bare necessities for running a multisite. You may notice I’m specifying ports for the portforward values. Specifying ports simplifies using tools like TablePlus to browse your databases, although the more straightforward portforward: true should work as well, and is Lando’s recommended approach.

name: landomultidrupal recipe: drupal9 proxy: appserver: - multisite1.lndo.site - multisite2.lndo.site services: appserver: webroot: . multisite1: type: mysql:5.7 portforward: 3307 multisite2: type: mysql:5.7 portforward: 3308 Drupal 9 multisite configuration in settings.php

The above lando file configuration sets us up with two sites: multisite1 and multisite2. Our multisite1 will live at /sites/default, and multisite2 will live at /sites/multisite2. Each of these sites will have their own files directories, and could also include their own modules or themes directories depending on the needs of the project. They also have their own settings.php file which is the important component for this post.

You’ll want to paste the following code blocks at the bottom of the existing settings.php files. For multisite2, you can copy and paste the original /sites/default/settings.php to get all the boilerplate stuff in there — then paste in the special Lando code below.

// PASTE THIS AT THE END OF /sites/default/settings.php   $lando_info = json_decode(getenv('LANDO_INFO'), TRUE); if (!empty($lando_info)) {   // Define this site's default database. Be sure to change ‘multisite1’ to the same identifier that // you use under ‘services’ in your .lando.yml file. $databases['default']['default'] = [ 'database' => $lando_info['multisite1']['creds']['database'], 'username' => $lando_info['multisite1']['creds']['user'], 'password' => $lando_info['multisite1']['creds']['password'], 'host' => 'multisite1', 'driver' => 'mysql', ];   // Define file system settings. $conf['file_temporary_path'] = '/tmp'; $settings['file_private_path'] = '/app/private-files/';   // Trusted host pattern settings. $settings['trusted_host_patterns'][] = '\.lndo\.site$';   // Define this site's own config sync directory for local environment. $settings['config_sync_directory'] = '/app/config/multisite1'; } // PASTE THIS AT THE END OF /sites/multisite2/settings.php   $lando_info = json_decode(getenv('LANDO_INFO'), TRUE); if (!empty($lando_info)) {   // Define this site's default database. Be sure to change ‘multisite2’ to the same identifier that // you use under ‘services’ for the second site in your .lando.yml file. $databases['default']['default'] = [ 'database' => $lando_info['multisite2']['creds']['database'], 'username' => $lando_info['multisite2']['creds']['user'], 'password' => $lando_info['multisite2']['creds']['password'], 'host' => 'multisite2', 'driver' => 'mysql', ];   // Define file system settings. $conf['file_temporary_path'] = '/tmp'; $settings['file_private_path'] = '/app/private-files/';   // Trusted host pattern settings. $settings['trusted_host_patterns'][] = '\.lndo\.site$';   // Define this site's own config sync directory for local environment. $settings['config_sync_directory'] = '/app/config/multisite2'; } Set up sites.php

Next we need to indicate in sites.php which environment will point to which site configuration. We only need to define multisite2 here because by default, Drupal looks in /sites/default for the first site in a multisite installation. You can make a copy of /sites/example.sites.php to start with — although that file just includes some basic documentation and no actual code. The necessary code is just one line:

$sites['multisite2.lndo.site'] = 'multisite2'; Rebuild, and presto

That’s it! Make sure all your files are saved, then let Lando know to rebuild using the new configuration. From terminal navigate to your project directory and:

lando rebuild lando start

Voila! You should now have multisite1.lndo.site and multisite2.lndo.site running on your local — and both should resolve to the Install Drupal 9 web interface. You can follow the steps in your browser as usual, just remember to give your sites different names!

Have a quicker or easier way to set up a Drupal multisite with Lando? Or some other considerations you’d like to contribute? Feel free to share in the comments below!

Jordan Graham

Morpht: Announcing the Field Formatter Pattern module

Planet Drupal - Thu, 2022/04/21 - 3:24am
A new contributed Drupal module allows site builders to add custom HTML pattern attribute to the text fields in the Manage Form Display settings page.

Morpht: Announcing the Search API Field Token module

Planet Drupal - Thu, 2022/04/21 - 3:24am
The Drupal Search API Field Token module allows to send data into search index using tokens.

Drupal.org blog: What’s new on Drupal.org - Q1 2022

Planet Drupal - Thu, 2022/04/21 - 1:16am

Read our roadmap to understand how this work falls into priorities set by the Drupal Association with direction and collaboration from the Board and community. You can also review the Drupal project roadmap.

Contributor Enablement Architecting GitLab CI for Contrib

The GitLab Acceleration initiative is one of the top priorities of the Drupal Association engineering team.

Over the past quarter, we've been focused on the transition from DrupalCI to GitLab CI, and about 20 contributed module maintainers have stepped forward to help us define the architecture. 

We fully believe that involving the community throughout the GitLab acceleration process will be essential to success.

In the case of CI testing for Drupal projects, the move from a centralized system (DrupalCI) to a decentralized one(GitLabCI) needs special care. Once control is directly in the hands of maintainers, we want to ensure we're providing default testing configurations that help them keep their testing up to date with the right versions and environments. 

Pre-work for Issue Migration

In addition to the focus on GitLab CI, we've done a lot of preparatory work for the transition to GitLab issues. Primarily, we've been updating custom version control information like commit logs from our bespoke Drupal.org implementations to link to GitLab instead.

This pre-work is essential to ensuring a smooth transition to GitLab issues when we're ready for that migration. It's important to remember that as these features move to GitLab they will look and function a bit differently. Some things may not work as well or be quite as tightly integrated to the rest of Drupal.org as they used to be, but at the same time we'll be unlocking a range of new capabilities for contribution. 

Drupal.org Updates Drupal10 and PHP8 Readiness Testing

With Drupal 10 on the horizon, the Drupal Association worked with Gábor Hojtsy to update the automated deprecation checking for Drupal projects. This checks for Drupal 10 deprecations, and also use of functions deprecated in PHP 8. 

We also updated the versions of Chromedriver, Node.js, and MySQL in our test environments. 

This process is a big part of getting the contributed module ecosystem ready for each new major version of Drupal. The community can also use this data to prioritize automated deprecation fixes for the most commonly used deprecated functions. 

Release page updates: Composer commands

Release pages for all projects on Drupal.org now provide all the composer commands a user will need to update to that release. For contrib projects, we provide simple $composer require statements. For Drupal core, we provide options for starting a new site from that version, updating an existing site to the latest, and pinning to a specific release. We've also updated documentation to help users manage pinned versions.

Composer workflows continue to be central to modern Drupal, and providing these Composer commands should save time for beginner and intermediate Drupal users. 

Updates to the Community Events section on Drupal.org

The Community Events listings on Drupal.org have been improved with tooltips for online/in-person events, better visual indication of canceled events, as well as additional views for contribution events and DrupalCon. 

With COVID restrictions beginning to lift around the world, submissions to /community/events are increasing, empowering the community to come back together. The Events Organizers Working Group has prioritized additional enhancements that the team will continue to work on in Q2. 

Visual refresh for organization profiles

We made a few subtle but significant changes to the visual layout of organization profiles. The right column case study display has been moved to the main body of the profile, and the contribution statistics are collapsed by default, giving more focus to the page. 

Less clutter and more visual appeal in the organization profiles makes it easier for organizations to shine when evaluators are looking for a partner.

We're planning additional features for organization profile owners, to give them more insight into their contribution statistics and the impact on their marketplace rankings. 

Stricter requirements for 'Office Location' Marketplace filter

At the beginning of the quarter, we updated the Office Location field on organization profile pages. Office Locations now better enforce the requirement for a physical presence. (While organizations that work in regions where they don't have offices can still use the Locations Served field).

This change gives organizations a greater presence in the marketplace in regions where they are physically located, and makes it easier for evaluators to find a partner with a physical presence in their area if that is important to them. 

Marketplace ranking adjustments

The marketplace has received a few other updates over the course of this quarter. Firstly, organizations now receive credit for the contributor roles they sponsor. Secondly, the overall sort order has been adjusted to sort by Drupal Certified Partner Level -> Supporting Partner Level -> Contributor level.

For more information, read the blog post which accompanied these changes.

Work in progress Authentication and Single Sign On

The Drupal Association engineering team is working with our partners at Tag1 on an authentication and single sign on solution for Drupal.org accounts using Keycloak. We're currently waiting for the next version release of Keycloak for some key features, but once that's available we'll be planning our deployment. 

The new authentication solution will help us authenticate Drupal.org users between newly migrated Drupal 9 sites, and our legacy D7 sites, and will also provide the capacity to use the Drupal.org identity to log into community properties like DrupalCamp sites and chat services.

Api.Drupal.org D9 upgrade progress

One of the major projects we began in Q1 of 2022 is the migration of api.drupal.org to Drupal 9. At this point, the key api module is fully ported to Drupal 9, and we're ready to plan the final migration in Q2. 

Api.Drupal.org is a key reference for developers working with Drupal. Upgrading this site to Drupal 9 is part of our ongoing effort to bring all of the Drupal.org sub-sites up to modern Drupal. 

Events.drupal.org D9 upgrade progress

The DrupalCon website platform is due for an upgrade as well. We're working again with our partners at SixEleven who created the original brand, to bring it up to Drupal 9.

Events.Drupal.org is a site we want to represent the best of Drupal. The DrupalCon web platform is a key part of making that good first impression. 

TUF signing for Automatic Updates

In Q1 of 2022 we pushed hard with our partners at Consensus Enterprises to build out a beta implementation of TUF package signing for Drupal.org. This signing service should be in production to support the Automatic Updates and Project Browser initiatives in Q2. The product of this effort is being released as an open source TUF signing server, called 'Rugged'.

Supply chain security is essential to implementing automatic updates and project browser installation in a safe way. Drupal has always been known for its security, and TUF is a robust system for preserving that reputation. 

See you at DrupalCon!

Most of the Drupal Association engineering team will be on site at DrupalCon Portland from April 25-28 of this year. There's still time to join us and chat about these and other updates on the horizon. We'd love to see you there!


As always, we’d like to thank all the volunteers who work with us and the Drupal Association Supporters who make it possible for us to work on these projects. In particular, we want to thank:  

If you would like to support our work as an individual or an organization, consider becoming a member of the Drupal Association

Follow us on Twitter for regular updates: @drupal_org, @drupal_infra


Lullabot: The Present and Future of Drupal’s Administrative Interface

Planet Drupal - Wed, 2022/04/20 - 8:43pm

Claro is the new core administration theme based on the new Drupal design system. It is a clone of the Seven admin theme, the default admin theme in Drupal since Drupal 7. If Seven is adequate for a certain need, then Claro will be adequate for that need, too. We didn’t have to start from scratch.

The big-picture goals are as follows:


Security advisories: Drupal core - Moderately critical - Access bypass - SA-CORE-2022-009

Planet Drupal - Wed, 2022/04/20 - 5:07pm
Project: Drupal coreDate: 2022-April-20Security risk: Moderately critical 13∕25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:DefaultVulnerability: Access bypassDescription: 

Drupal 9.3 implemented a generic entity access API for entity revisions. However, this API was not completely integrated with existing permissions, resulting in some possible access bypass for users who have access to use revisions of content generally, but who do not have access to individual items of node and media content.

This vulnerability only affects sites using Drupal's revision system.

This advisory is not covered by Drupal Steward.


Install the latest version:

All releases prior to Drupal 9.3 (including Drupal 7) are not affected.

Reported By: Fixed By: 

Security advisories: Drupal core - Moderately critical - Improper input validation - SA-CORE-2022-008

Planet Drupal - Wed, 2022/04/20 - 5:04pm
Project: Drupal coreDate: 2022-April-20Security risk: Moderately critical 12∕25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:UncommonVulnerability: Improper input validationDescription: 

Drupal core's form API has a vulnerability where certain contributed or custom modules' forms may be vulnerable to improper input validation. This could allow an attacker to inject disallowed values or overwrite data. Affected forms are uncommon, but in certain cases an attacker could alter critical or sensitive data.

We do not know of affected forms within core itself, but contributed and custom project forms could be affected. Installing this update will fix those forms.

This advisory is not covered by Drupal Steward.


Install the latest version:

All versions of Drupal 9 prior to 9.2.x are end-of-life and do not receive security coverage. Note that Drupal 8 has reached its end of life.

Drupal 7 is not affected.

Reported By: Fixed By: 

Nonprofit Drupal posts: April Drupal for Nonprofits Chat

Planet Drupal - Wed, 2022/04/20 - 4:02pm

We are looking for an additional co-moderator for this group! Reach out to Jess or Johanna to learn more about what's involved.

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

We don't have anything on the agenda at the moment, so we're looking to enjoy an informal chat about anything at the intersection of Drupal and nonprofits. Got something specific on your mind? Feel free to share ahead of time in our collaborative Google doc: https://nten.org/drupal/notes!

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

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

  • Join the call: https://us02web.zoom.us/j/81817469653

    • Meeting ID: 818 1746 9653
      Passcode: 551681

    • One tap mobile:
      +16699006833,,81817469653# US (San Jose)
      +13462487799,,81817469653# US (Houston)

    • Dial by your location:
      +1 669 900 6833 US (San Jose)
      +1 346 248 7799 US (Houston)
      +1 253 215 8782 US (Tacoma)
      +1 929 205 6099 US (New York)
      +1 301 715 8592 US (Washington DC)
      +1 312 626 6799 US (Chicago)

    • Find your local number: https://us02web.zoom.us/u/kpV1o65N

  • Follow along on Google Docs: https://nten.org/drupal/notes
  • Follow along on Twitter: #npdrupal

View notes of previous months' calls.