#! code: Drupal 10: Adding Third Party Settings To Drupal Configuration Entities

Drupal's modular system allows for all kinds of additions to be added to your site through plugins, entities and configuration.

Thanks to Drupal's modular configuration system you can also inject custom configuration into existing configuration entities. This allows you to extend the functionality of an existing entity and ensure that any customisation are saved in the system configuration. Any configuration entity can be augmented without changing the existing configuration schema of the entity, which might cause knock on effects to other modules.

If you have spent time with Drupal configuration then you might have seen the addition of a third_party_settings block to your configuration. A good example of this is with the core Shortcut module and the third party settings it adds to the installed themes when the site is installed using the standard install profile. The Claro theme, for example, will have the following configuration out of the box.

third_party_settings: shortcut: module_link: true

This allows the Shortcut module to detect if it should show a link on the page when this theme is present on the page. The configuration for this setting then doesn't have to live in a separate configuration entity (which would be exported into a separate file); it can just live with the configuration for the theme and be loaded as part of the theme configuration.

In this article I will look at how to use additional settings to add custom configuration items to an existing configuration entity. I'll also cover a couple of use cases for this technique.

Read more

LN Webworks: Drupal: The Cutting-Edge CMS Now an Incredible Base for Ecommerce Websites

Image removed.

Research suggests that there are currently more than 26 million ecommerce websites available for consumers to explore and more are being created every day. An effective way for e-commerce companies to outperform such fierce competition is to choose a cutting-edge and robust e-commerce platform. As more and more entrepreneurs have this realization, there is an increasing shift toward Drupal commerce. The following reasons paint a clear picture and perfectly elucidate why more and more e-commerce companies are availing of Drupal development services

Droptica: Save Time Building Complex Drupal Websites with Code Generation and No Code Tools

Image removed.

The long time to build a system is often pointed out as a drawback of using Drupal in web development. However, creating complex websites using this technology doesn’t have to be time-consuming at all. In this blog post, I’ll present you with a list of modules and tools that clearly reduce the time to build systems on Drupal. 

General information about Drupal

Drupal is a system written in PHP and built from modules. There are dozens of them in Drupal's core, and several thousand are available for free download from the Drupal.org website.

A PHP developer can also create a custom module for Drupal and add any functionality. Developers often take this route. It’s apparently easier (though not faster) to write the required functionality than to familiarize yourself with existing modules to build it. 

The key to reaping the benefits of choosing Drupal as a technology is to treat it and its modules like LEGO blocks from which you build a system. 

Considering Drupal as a base and adding all the needed functionality in the custom code is a path to increase project costs. Ultimately, in the long run, it also translates into abandoning Drupal as a base solution for building systems. This is because no one likes to pay more than for alternative options available on the market, and nowadays, there is a lot to choose from in the web development world. 

When looking at other technologies, it’s worth paying attention to how many different technologies you need to use to achieve what Drupal offers. Very often, you need to use many frameworks, libraries, or systems and combine them all. With these connections, problems and errors often arise (e.g., website A didn't correctly send data to website B's API, etc.), which take time to debug and fix. 

Systems on Drupal are most often built as a single application with a single codebase (headless Drupal will also appear later in the text), and this simplifies application maintenance, development, and the new version implementation quite a bit. This is a significant advantage for applications with regular deployments (e.g., once a week), which reduces their time, eliminates potential problems, and facilitates application maintenance costs. 

Code generation and no code tools to speed up work in Drupal

I’ve divided the tools that will help you speed up the time of creating complex web pages on Drupal into several groups. You’ll find here descriptions, screenshots, and short videos. Based on these examples, you’ll see how quickly you can build websites in Drupal. 

Code and data generators

Code and database generators can significantly reduce the programmer’s work time. Every web developer working with Drupal should become familiar with these tools. 

Module Builder

Module Builder is a module for Drupal that generates the files needed to make a module. Some elements are repetitive, and constantly writing them from scratch unnecessarily takes precious minutes. With the help of Module Builder, you’ll reduce the time of creating custom modules. 

Drush Generate

Drush is a tool for managing Drupal from the command line. One of the handy commands available in Drush is “generate.” Like Module Builder, this command helps you create the code needed when building modules and saves you time. 

Devel Generate

Devel Generate is part of the Devel module. This tool can generate test data. This is very useful when testing how the system behaves or looks when a large amount of data comes in. By reaching for this module, you save time creating test content and can focus on testing the application. I especially recommend this solution to testers working with Drupal.

No code tools and modules 

There are certain modules in Drupal, so you don't have to write your own custom ones. You can generate data structures and application logic without writing a single line of code. Some of these modules are already in Drupal core. Combining these tools with code generators (not everything can be achieved by clicking, and sometimes you need to write code) gives you a considerable advantage when implementing applications and websites on Drupal over other solutions. 

Fields module

Fields is a module that is part of Drupal core. It allows you to extend entities with additional attributes - for example, you can add a “Phone” field to a user profile to store phone number information, or you can add a “File upload” field to the “Page” content type to enable you to insert downloadable PDF files.

Views module 

The Views module is also part of Drupal core. It allows you to take data from a database and display it in a formatted way. You can extend its capabilities using many additional modules, such as exporting data to CSV format. 

Entity Construction Kit (ECK)

Drupal core has several entity types, including Node, User, and Taxonomy. Sometimes, you need to build your own entity instead of using, for example, a new content type. You can do it by creating a new custom module (for example, using the Module Builder module mentioned above) or you can use the Entity Construction Kit (ECK) module. With its help, without writing code, you can create a new data structure in the database and use it with, e.g., Fields and Views modules. In this case, you can also perfectly see another advantage of Drupal - modules work together rather than being separate elements. 

Event - Condition - Action (ECA)

The ECA module allows you to create actions on various events, such as “send an email if someone adds a comment.” The module's capabilities are vast, and if an option is missing, it can be expanded with additional actions or conditions. 

Webform 

A form on a web page and in an application is a common form of interaction with users. It’s often essential for website administrators to be able to easily create new forms without waiting for a development team. Marketing departments need to add them to landing pages for campaigns, and HR departments need them to collect data from employees in various types of surveys. The examples are many. The Webform module perfectly solves the necessity to build contact forms easily. 

Feeds module 

The Feeds module retrieves data from external sources and saves it to a database in Drupal. The simplest use of the module is to retrieve data from RSS, but you can also configure it for other sources, such as XML files. All data import configuration is done by clicking around the administration interface. So, there is no need to involve a programmer in this. An example of using this module could be, for example, importing job postings to a company website from an external management system or importing recent blog posts to a corporate intranet system (built on Drupal).

Content building tools

Nowadays, building new subpages on a website involves not only adding text but also inserting many components that will make a web page attractive and convenient to use for the visitor. An editor needs tools to build complex sites and a system that doesn’t limit them in creating content. 

There are several such solutions in Drupal. Depending on the needs of content managers, you can choose from the many options available. Here are some examples. 

Layout Builder 

The Layout Builder module is found in Drupal core. It allows you to manage the layout of elements for a content type (e.g., all articles) or specific content. The module is regularly developed, and its capabilities can be extended with additional modules. 

Paragraphs module

Paragraphs is an additional module that extends the possibilities of building a data structure with the Fields module. It’s the basis of the Droopler system - a tool for quickly building company and corporate websites. We have built over a dozen ready-made components that editors can use when creating content there. 

Other tools for content

In addition to the solutions above, other content-building tools are:

Integrations with external applications

Today, the number of applications that companies and organizations use is growing. Drupal fits perfectly into such an environment because it can easily integrate with external systems.  

Drupal can pass stored data to other systems or accept data from applications. It has a RESTful Web Services module that allows simple and complex configurations.

These integration options open up the possibility of using Drupal as a headless CMS. One example can be found in our case study of a project for PZPN, documenting the creation of a system where the frontend is separated from the backend.   

No code and code generation tools - summary 

The examples described above are only a tiny part of the capabilities of Drupal modules. There are many more, and all these tools make Drupal possible to reduce the time needed to build websites or web applications. 

If you plan to create a complex website, Drupal is worth considering. Is this technology suitable for your project? Take advantage of a free consultation at our Drupal agency, during which we will help analyze your case. 

ImageX: Content Editing on a Drupal Website in 2023: What's New and Hot

The practices of publishing, editing, and deleting content are essential for keeping your website fresh and engaging. Drupal always offers new ways to improve editorial efficiency. So if you are involved with content editing or interested in boosting workflows for your team, we now invite you to take a front-row seat. We’ve handpicked some great articles about the tools and practices that you might want to add to your content editing arsenal in 2023. 

Promet Source: More to Love: Big Site Builder Benefits in Drupal 10.1

One of the best enhancements in Drupal over the years has to be incremental improvements.  This means that with every minor release, we can expect changes and enhancements to our Drupal experience. Drupal 10.1 certainly lives up to this idea! Promet Source has introduced thousands of people to Drupal through training. I’ve been teaching Drupal site builders and developers since 2011 and I’ve never been more excited about the direction of our favorite open source project! Here’s the truth about Drupal 10: It’s awesome. 

Matt Glaman: PhpStorm live templates to automate the boring things

I finally took a look at writing a custom live template with PhpStorm. I've used them several times to automate scaffolding a foreach statement or other random suggestions that a Tab keypress leads to automated scaffolded code. But I never really dove in to see how they work or could be customized. Then, I had to fix some of my code to comply with Drupal's coding standards.

Drupal requires document comments for all methods, including a short comment. 

Specbee: How to incorporate Drupal 9-compatible modules into your Drupal 10 project

With every major release, Drupal aims to introduce new features, improvements, and architectural changes. Drupal 10, the latest major upgrade, was out in December 2022 and came with many remarkable updates in features and dependencies. Every Drupal application is heavily dependent on its diverse array of contributed modules. These modules extend Drupal's core functionality, allowing developers to customize and tailor Drupal websites according to specific needs. It's important to note that while some contributed modules will seamlessly align with Drupal 10 through compatible releases, others might necessitate additional attention and adaptation. In this article, we’ll discuss how you can utilize Drupal 9 modules in your Drupal 10 project and meet the standards and expectations set by it. Moving the modules to Drupal 10 What's our strategy for transitioning to Drupal 10 while incorporating these modules? Utilizing the available patches is an option, but its feasibility depends on our project's version control workflow and the hosting platform in play. If our remote repository includes all repositories such as modules/contrib/* and themes/contrib/*, and the hosting platform doesn't ignore these, patches can be applied directly. However, if these repositories are ignored, and given that Drupal projects now adhere to a composer-based structure, we might need to incorporate the patches within the composer.json file itself. If the module does not have any dependency library or module, we add it by simply ignoring the core_version_requirement key with drupal/lenient. But if the module has a dependency module and is not D10-compatible, you will need to implement the following steps as described below.  Utilizing incompatible Drupal 9 modules with Drupal 10     Incorporating incompatible Drupal 9 modules into a Drupal 10 setup necessitates several key steps within the composer.json configuration: Inclusion of Module Repository: Begin by adding the module’s repository to the composer.json file Module Key Update: Update the module’s key as required to ensure proper integration Patch Integration: Add the relevant patch under patches to address compatibility issues effectively Root Composer Dependency: Add the module’s dependency within the root composer.json  Note: Kindly note that for the sake of this article, we will consistently reference the module "drupal/header_and_footer_scripts" as an illustrative example. As of the article’s creation, this module lacks a Drupal 10 release. Inclusion of Module Repository in composer.json As the composer is a dependency manager, it will check for compatibility with other modules’ composer.json file, Drupal version, PHP version, etc. So, you will need to instruct the composer not to check the dependency and directly clone the directory from repositories. In the root composer.json file, add the module’s repositories as follows: "repositories": [  "header_and_footer_scripts": {  "type": "package",  "package": {  "name": "drupal-gitlab/header_and_footer_scripts",  "type": "drupal-module",  "version": "dev-3.0.x@dev",  "source": {  "type": "git",  "url": "https://git.drupalcode.org/project/header_and_footer_scripts.git",  "reference": "3.0.x"  }  }  }  ]  You can take the repository details from the project overview page here. Copy the URL.    Here, I have used drupal-gitlab/module-name as the package name and the reference should be the existing version of the module from which the patch was created. Module Key Update Now, since we have used drupal-gitlab/header_and_footer_scripts as the package name (as mentioned above), let’s replace/add the same under the required key of composer.json so that composer takes it as a dependency and try to download the repositories into our codebase. "require": {      “drupal-gitlab/header_and_footer_scripts: “dev-3.0.x@dev”  }Here, you should refer to the version mentioned as the package version in the repository. Patch Integration To use the patches you will require the “cweagans/composer-patches” so that you can apply the patch. "extra": {  "patches": {  "drupal-gitlab/header_and_footer_scripts": {  "Drupal 10 compatibility": "patches/header_and_footer_scripts_d10.patch"  }  },You can apply the patch in two ways: From a patch file:  a. Download the patch file and place it in your project repository.b. Refer to the file as mentioned in the above code.  From a URL: a. Get the patch URL from the drupal.org issues page.b. Replace the file path with the URL.  If a patch is not available, you can create one by verifying the deprecated methods and other problems using the “Upgrade Status” or “Rector” module.  Root Composer Dependency  Certain modules may include a composer.json file within their repository. It is imperative to verify and, when necessary, incorporate these dependencies into our root composer.json. This precaution is essential, particularly since we have specified that dependency checks should be bypassed as part of our instructions.  Referring to the composer.json file of "header_and_footer_scripts" available here, it's important to note the following guidelines:  If the composer.json of a module lists dependencies under the require key, these should be added to the root composer.json of our project. In cases where the listed items pertain to verification, such as PHP and Drupal version requirements, it is acceptable to disregard these during the process.  It is extremely important to note that the absence of the required dependencies could potentially lead to a complete site breakdown.  Putting it to the test In a vanilla Drupal 10 instance, let’s implement the Drupal 10 upgrade for the same module in both ways: the traditional way and the way we displayed above, and see what happens! Following the traditional approach: { "name": "drupal/drupal", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "project", "license": "GPL-2.0-or-later", "homepage": "https://www.drupal.org/project/drupal", "support": { "docs": "https://www.drupal.org/docs/user_guide/en/index.html", "chat": "https://www.drupal.org/node/314178" }, "require": { "composer/installers": "^2.0", "drupal/core": "self.version", "drupal/core-project-message": "self.version", "drupal/core-vendor-hardening": "self.version", "drupal/header_and_footer_scripts": "^3.0" }, "require-dev": { "behat/mink": "^1.10", "behat/mink-browserkit-driver": "^2.1", "behat/mink-selenium2-driver": "^1.4", "colinodell/psr-testlogger": "^1.2", "composer/composer": "^2.4", "drupal/coder": "^8.3.10", "instaclick/php-webdriver": "^1.4.1", "justinrainbow/json-schema": "^5.2", "mglaman/phpstan-drupal": "^1.1.34", "mikey179/vfsstream": "^1.6.11", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.10.1", "phpstan/phpstan-phpunit": "^1.3.11", "phpunit/phpunit": "^9.5", "symfony/browser-kit": "^6.3", "symfony/css-selector": "^6.3", "symfony/dom-crawler": "^6.3", "symfony/error-handler": "^6.3", "symfony/filesystem": "^6.3", "symfony/finder": "^6.3", "symfony/lock": "^6.3", "symfony/phpunit-bridge": "^6.3", "symfony/var-dumper": "^6.3" }, "replace": { "symfony/polyfill-php72": "*", "symfony/polyfill-php73": "*", "symfony/polyfill-php74": "*", "symfony/polyfill-php80": "*", "symfony/polyfill-php81": "*" }, "minimum-stability": "dev", "prefer-stable": true, "config": { "preferred-install": "dist", "sort-packages": true, "platform": { "php": "8.1.0" }, "allow-plugins": { "composer/installers": true, "drupal/core-project-message": true, "drupal/core-vendor-hardening": true, "phpstan/extension-installer": true, "dealerdirect/phpcodesniffer-composer-installer": true } }, "extra": { "_readme": [ "By default Drupal loads the autoloader from ./vendor/autoload.php.", "To change the autoloader you can edit ./autoload.php.", "This file specifies the packages.drupal.org repository.", "You can read more about this composer repository at:", "https://www.drupal.org/node/2718229" ], "installer-paths": { "core": ["type:drupal-core"], "libraries/{$name}": ["type:drupal-library"], "modules/contrib/{$name}": ["type:drupal-module"], "profiles/contrib/{$name}": ["type:drupal-profile"], "themes/contrib/{$name}": ["type:drupal-theme"], "drush/Commands/contrib/{$name}": ["type:drupal-drush"], "modules/custom/{$name}": ["type:drupal-custom-module"], "themes/custom/{$name}": ["type:drupal-custom-theme"] }, "drupal-core-project-message": { "post-install-cmd-message": [ "drupal/drupal: This package is meant for core development,", " and not intended to be used for production sites.", " See: https://www.drupal.org/node/3082474" ], "post-create-project-cmd-message": [ "drupal/drupal: This package is meant for core development,", " and not intended to be used for production sites.", " See: https://www.drupal.org/node/3082474" ] } }, "autoload": { "psr-4": { "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer", "Drupal\\Composer\\": "composer" } }, "scripts": { "pre-install-cmd": "Drupal\\Composer\\Composer::ensureComposerVersion", "pre-update-cmd": "Drupal\\Composer\\Composer::ensureComposerVersion", "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump", "drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit", "drupal-phpunit-upgrade": [ "@composer update phpunit/phpunit --with-dependencies --no-progress" ], "post-update-cmd": [ "Drupal\\Composer\\Composer::generateMetapackages", "Drupal\\Composer\\Composer::generateComponentPackages" ], "phpcs": "phpcs --standard=core/phpcs.xml.dist --parallel=$(nproc) --", "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --parallel=$(nproc) --" }, "repositories": [ { "type": "path", "url": "core" }, { "type": "path", "url": "composer/Plugin/ProjectMessage" }, { "type": "path", "url": "composer/Plugin/VendorHardening" }, { "type": "composer", "url": "https://packages.drupal.org/8" } ] }You will notice an error while updating the dependencies “Your requirements could not be resolved to an installable set of packages.” Following the previously discussed approach: { "name": "drupal/drupal", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "project", "license": "GPL-2.0-or-later", "homepage": "https://www.drupal.org/project/drupal", "support": { "docs": "https://www.drupal.org/docs/user_guide/en/index.html", "chat": "https://www.drupal.org/node/314178" }, "require": { "composer/installers": "^2.0", "cweagans/composer-patches": "^1.7", "drupal/core": "self.version", "drupal/core-project-message": "self.version", "drupal/core-vendor-hardening": "self.version", "drupal-gitlab/header_and_footer_scripts": "dev-3.0.x@dev" }, "require-dev": { "behat/mink": "^1.10", "behat/mink-browserkit-driver": "^2.1", "behat/mink-selenium2-driver": "^1.4", "colinodell/psr-testlogger": "^1.2", "composer/composer": "^2.4", "drupal/coder": "^8.3.10", "instaclick/php-webdriver": "^1.4.1", "justinrainbow/json-schema": "^5.2", "mglaman/phpstan-drupal": "^1.1.34", "mikey179/vfsstream": "^1.6.11", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.10.1", "phpstan/phpstan-phpunit": "^1.3.11", "phpunit/phpunit": "^9.5", "symfony/browser-kit": "^6.3", "symfony/css-selector": "^6.3", "symfony/dom-crawler": "^6.3", "symfony/error-handler": "^6.3", "symfony/filesystem": "^6.3", "symfony/finder": "^6.3", "symfony/lock": "^6.3", "symfony/phpunit-bridge": "^6.3", "symfony/var-dumper": "^6.3" }, "replace": { "symfony/polyfill-php72": "*", "symfony/polyfill-php73": "*", "symfony/polyfill-php74": "*", "symfony/polyfill-php80": "*", "symfony/polyfill-php81": "*" }, "minimum-stability": "dev", "prefer-stable": true, "config": { "preferred-install": "dist", "sort-packages": true, "platform": { "php": "8.1.0" }, "allow-plugins": { "composer/installers": true, "drupal/core-project-message": true, "drupal/core-vendor-hardening": true, "phpstan/extension-installer": true, "dealerdirect/phpcodesniffer-composer-installer": true, "cweagans/composer-patches": true } }, "extra": { "patches": { "drupal-gitlab/header_and_footer_scripts": { "Drupal 10 compatibility": "patches/header_and_footer_scripts_d10.patch" } }, "_readme": [ "By default Drupal loads the autoloader from ./vendor/autoload.php.", "To change the autoloader you can edit ./autoload.php.", "This file specifies the packages.drupal.org repository.", "You can read more about this composer repository at:", "https://www.drupal.org/node/2718229" ], "installer-paths": { "core": ["type:drupal-core"], "libraries/{$name}": ["type:drupal-library"], "modules/contrib/{$name}": ["type:drupal-module"], "profiles/contrib/{$name}": ["type:drupal-profile"], "themes/contrib/{$name}": ["type:drupal-theme"], "drush/Commands/contrib/{$name}": ["type:drupal-drush"], "modules/custom/{$name}": ["type:drupal-custom-module"], "themes/custom/{$name}": ["type:drupal-custom-theme"] }, "drupal-core-project-message": { "post-install-cmd-message": [ "drupal/drupal: This package is meant for core development,", " and not intended to be used for production sites.", " See: https://www.drupal.org/node/3082474" ], "post-create-project-cmd-message": [ "drupal/drupal: This package is meant for core development,", " and not intended to be used for production sites.", " See: https://www.drupal.org/node/3082474" ] } }, "autoload": { "psr-4": { "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer", "Drupal\\Composer\\": "composer" } }, "scripts": { "pre-install-cmd": "Drupal\\Composer\\Composer::ensureComposerVersion", "pre-update-cmd": "Drupal\\Composer\\Composer::ensureComposerVersion", "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump", "drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit", "drupal-phpunit-upgrade": [ "@composer update phpunit/phpunit --with-dependencies --no-progress" ], "post-update-cmd": [ "Drupal\\Composer\\Composer::generateMetapackages", "Drupal\\Composer\\Composer::generateComponentPackages" ], "phpcs": "phpcs --standard=core/phpcs.xml.dist --parallel=$(nproc) --", "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --parallel=$(nproc) --" }, "repositories": [ { "type": "path", "url": "core" }, { "type": "path", "url": "composer/Plugin/ProjectMessage" }, { "type": "path", "url": "composer/Plugin/VendorHardening" }, { "type": "composer", "url": "https://packages.drupal.org/8" }, { "type": "package", "package": { "name": "drupal-gitlab/header_and_footer_scripts", "type": "drupal-module", "version": "dev-3.0.x@dev", "source": { "type": "git", "url": "https://git.drupalcode.org/project/header_and_footer_scripts.git", "reference": "3.0.x" } } } ] } Once there is a Drupal 10 release of the module, remove the above code and add it as usual - “drupal/module-name”: “version”.   Final Thoughts Looking ahead, Drupal 10’s adoption of modern technologies and adherence to industry standards positions it to lead the charge in delivering cutting-edge digital experiences. Incorporating Drupal 9-compatible modules into your Drupal 10 project isn't just about code integration—it's about enabling your site to thrive in the dynamic digital ecosystem of tomorrow. At Specbee, we're dedicated to realizing the full potential of Drupal for your digital projects. Our seasoned experts are well-versed in Drupal 10's advancements and possess the skills needed to seamlessly integrate modules, ensuring your website remains at the forefront of technology. Partner with us to drive your Drupal 10 project forward with confidence and innovation.  

Evolving Web: The Evolve Us Series: 6 Innovations from a Digital Agency’s Ideathon

Image removed.

This summer our digital agency announced a company-wide competition called Evolve Us. It challenged our team members to ideate, research, prototype, and pitch innovative ideas—all with the goal of elevating the way we work at Evolving Web. 

We formed six multidisciplinary teams, gave them full creative licence, and set them loose!

Four weeks later, the teams pitched their ideas to our entire organization. Everyone had the opportunity to watch, ask questions, give feedback, and vote for their favourite. The members of the winning team got a bonus paid day off.

Over the coming months, we’ll work on integrating some of these ideas into the way we work. I’m excited to see how it will help our staff take ownership of improving our organization as a whole!

In the meantime, we’d love to share the six ideas with you! We’ll be publishing a series of blog posts: one for each Evolve Us pitch. We do this in the spirit of open source… and because we feel like showing off a bit!

Take a sneak peek at what’s to come below. Plus, find out where we got the inspiration for Evolve Us and why things like this are a big part of our company culture.

Why We Asked Our Team Members to Evolve Us (Maybe You Could Too?)

The inspiration for Evolve Us came from DrupalCon Pittsburgh 2023 which 14 of our team members attended. They came away buzzing with excitement after hearing the Driesnote on radical transformation and watching people pitch ideas at the DrupalCon Pitch-burgh

A plan was born to hold our own internal ideathon at Evolving Web! We saw it as a golden opportunity to:

  • Discover ways to make our projects more efficient
  • Generate the ambitious, big picture ideas that clients come to us for
  • Energize team members with the chance to try something different
  • Allow people from different departments to connect
  • Encourage employees to develop new skills and showcase hidden talents
  • Show every team member that their input matters
  • Let everyone shine and flaunt their creativity!
  • Embrace the open source ideals that our organization was founded on: collaboration, knowledge sharing, and continuous improvement

Evolve Us is one of many initiatives that keep our team members engaged at Evolving Web. There’s also internal training, mentorship, weekly knowledge sharing sessions, and opportunities to attend events—to name a few! Learn more about joining our team. 

 

 

Image removed.

Just a few members of our 80+ strong team.

 

Explore the Evolve Us Pitches

Here’s an overview of the six amazing pitches presented by the Evolve Us teams. 

Over the coming weeks we’ll publish a blogpost on each pitch and reveal the winner! Sign up for our newsletter to stay in the loop. 

Creating a Unified Component Library With Storybook 

To be published

Component libraries help us hit the ground running and save us from reinventing the wheel each time we build a website. This Evolve Us team identified a gap between the components our designers see in Figma and those available to our developers. The team aims to streamline collaboration between our teams by creating a unified library of components with Storybook.

Doing More With SiteDiff 

To be published

SiteDiff is a tool that crawls plain HTML and is useful for comparing content. Our team currently uses it to validate migrations and upgrades, and to search a website for bugs. This Evolve Us team proposed improving and extending SiteDiff’s functionality. How? By making it pluggable! 

Developing an AI Research Tool for Proposals

To be published

Our RFP team works hard to understand and address a prospective client's needs. This Evolve Us team suggested streamlining the process using an AI-driven tool. They evaluated existing tools and pitched the concept for our own—a tool developed by RFP teams, for RFP teams.

“I enjoyed meeting with and interacting with other team members who I normally don't work with.” 

- Brittany Hambleton, Proposal Writer

Creating a Central Dashboard for Projects

To be published

Evolving Web uses an internal Wiki and Google Drive to store, share, and organize files. This Evolve Us team identified their need for a single source of truth for all stages of a project. They pitched a Project Dashboard that will bring together files, templates, and links in one place, provide clear progress measures and metrics, and allow for more accountability. 

Integrating Redmine, JIRA, and Slack

To be published

Our organization uses Slack to talk to each other and Redmine to track time usage and issues. Some of our teams also use Jira to better integrate with our clients’ development teams. This Evolve Us team proposed setting up integrations between these tools to help our team work and communicate more effectively. 

“Brainstorming was very cool. It was great seeing managers, testers, and developers working together on the development of the idea.” 

- Iskandar Mamadnazaroc, Front-End Developer

Enhancing Drupal’s Layout Builder Module 

To be published

Layout Builder is a powerful module in Drupal core that provides a visual drag-and-drop page-building tool. But there are opportunities to make this tool even easier to use. This Evolve Us team pitched several solutions to take Layout Builder to the next level for content editors, developers, and the Drupal community as a whole. 

Find Out Who Won the Evolve Us Competition!

Stay tuned as we publish deep-dives into the individual Evolve Us pitches and reveal who won. Sign up for our newsletter to have them sent straight to your inbox, along with loads more valuable content!

Explore Careers at Evolving Web

We’re often on the lookout for talented, innovative, enthusiastic professionals to join our team. Could you evolve us and your career at Evolving Web? Find out by learning more about what we do and how we do it.

//--> //-->

+ more awesome articles by Evolving Web

Talking Drupal: Talking Drupal #413 - Drupal Coffee Exchange

On today’s show we are talking about The Drupal Coffee Exchange, How it got started, and How it keeps going with guest AmyJune Hineline.

For show notes visit: www.talkingDrupal.com/413

Topics
  • What’s new with AmyJune
  • What is the Drupal Coffee Exchange
  • How did it start
  • Who started it
  • Where was the first Drupal Coffee Exchange
  • How do you participate
    • Live
    • Mail
  • How is it live
  • Does it have to be ground or whole bean
  • Listener question: Stephen - How can it be added to a camp
  • What was your favorite coffee received
  • What was your favorite coffee given
  • John’s first experience
  • Brick of Shame
  • When is the next Coffee Exchange
  • Where is the schedule
  • Favorite type of coffee
Resources Guests

AmyJune Hineline - volkswagenchick

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Andy Blum - andy-blum.com - andy_blum

MOTW Correspondent

Martin Anderson-Clutz - @mandclu Coffee

  • Brief description:
    • Have you ever wanted to quickly search your Drupal admin UI for the specific page you need to get to? There’s a module for that!
  • Brief history
    • How old: created in Nov 2011
    • Covered as MOTW back in episode #45
    • Versions available: 8.x-1.3 (D9 & 10), 7.x-2.3
  • Maintainership
    • Number of open issues: 53 open, 13 of which are bugs against the 8.x branch
    • Does have test coverage
  • Usage stats:
    • Almost 31,000 sites
  • Maintainer(s):
    • Michaelmol, who appears to have created the module in his first year on drupal.org, now almost 13 years ago
  • Module features and usage
    • With a simple keystroke, (option-d or alt-d) you can start your search, and then see suggestions as you type
    • Can use the arrow keys to move between suggestions
    • Listeners who have used Mac apps like Alfred or Spotlight will be familiar with the experience
    • A very fast way to move between different places in your Drupal admin
    • Also includes :add as a quick way to add content of a specific type
    • Provides a hook you can use to define your own commands
    • There is a Coffee Extras module that adds more commands, but it doesn’t work with Drupal 10 and is marked as no longer developed
    • Also worth noting that the Gin admin theme comes with built-in optimization and formatting for Coffee, so you can enjoy Gin and Coffee together

The Drop Times: Moments in Motion

In a world that thrives on speed and efficiency, time stands as an ever-present force, guiding our days and nights. As we immerse ourselves in the frenzy of productivity, it’s essential to pause and reflect on whether we’re progressing purposefully or merely caught in a whirlwind of activity, as famously echoed in the words of Leo Tolstoy, “The two most powerful warriors are patience and time.”

The paradox of our modern age is that while we may appear constantly moving, our destination often remains obscure. We equate being busy with making progress, but true accomplishment lies in the harmony between our actions and aspirations. It’s a poignant reminder that our relationship with time should be one of mindfulness and intention.

Like the need to infuse meaning into our daily lives, Drupal empowers creators to craft online experiences that align with their goals. Its versatile toolkit allows individuals to shape websites and applications with clear intent, ensuring that each digital endeavour serves a greater purpose. Drupal is thus a platform that embodies the philosophy of purposeful progression.

As you navigate the river of time, consider the currents that propel you forward. Amidst the relentless flow, remember that finding purpose is paramount. Every tick of the clock offers an opportunity to steer your journey in the desired direction. And just as the river finds its way to the sea, let Drupal guide your digital aspirations, ensuring that your online presence reflects the values and visions you hold dear.

Now, let’s dive into the latest stories covered by The Drop Times regarding Drupal.

Today, we published a long overdue interview with Drupal Commerce Guru and President & CEO of Centarro, Ryan Szrama. From the humble beginning of Ubercart to the very ambitious e-commerce distribution of Drupal Commerce, Ryan inspired us and gave confidence to premier merchants to fall upon Drupal as their desired online marketplace. He walks us through the days of Commerce Guys, the birth of platform.sh and the refocusing on the distribution itself through the establishment of Centarro. Ryan Szrama is also a member of the Drupal Association Board of Directors. Read the interview here.

Alka Elizabeth wrote a brief rundown about a 2007 forum posting on yesteryear's Drupal Modules that resurfaced on LinkedIn. It is fun to read.

We reported on a few case studies on Drupal upgrades last week. Valuebound is talking about a migration to D9 in an educational eCommerce space. Meanwhile, ImageX posted a blog compelling higher education marketers to migrate from D7 at the earliest. Another case study is from Specbee, where they write about a real estate developer in the US upgrading to D9 from D7. Specbee also shares a case study on a leading manufacturer of embedded computing systems for the defence industry transitioning from D7 to D9. A migration story that Morpht shares is but from another CMS, TRIM WCMS, to a Drupal distribution: GovCMS

The case study of Joinup becoming the first official European Commission website to move to D10 is phenomenal. They had to migrate 88 Drupal-related packages, including the essential “core-recommended” and Drush. In addition, 67 integrated and patched packages were indispensable for their operations.

A case study from Triplo is about a wedding photography service that used the Domain Access module, allowing them to handle content for multiple sites within a single Drupal database while maintaining individual custom domain names for each site.

Chromatic’s podcast on D7 EOL urges the adoption of necessary D7 modules if you are still running a D7 site. It delves into strategies for identifying high-risk modules and taking immediate action.

An important story from the past week involves updation of ModuleInstaller and ThemeInstaller in Drupal’s Core to address a burning issue: Module and Theme name conflict that would break the system.

Vardot writes about UA parting for GA4. They also introduce the Google Analytics Module in the blog post. Did you know that Drupal 10’s core system includes 52 modules, providing essential functions while permitting the integration of optional modules to extend features, such as forums? Arocom’s blog post is about D10’s extensive module library that simplifies website expansion.

In mid-July, 1xINTERNET spoke about the Content Templates Module; we missed that story then. Solucionex specifies the importance of the Token module for personalized and automated content experiences. Lukas Fischer has a video on the upcoming release of Drupal Content Planner 2.0. Velir, a digital marketing agency, has written about the Views REST Serializer Extra module designed to revolutionize decoupled search experiences.

Herchel discusses websites’ shared challenges in maintaining optimal user experiences, regardless of the underlying content management system, in an article he wrote for Smashing Magazine. It is about refining the Largest Contentful Paint (LCP) metric within the Umami profile. Akabia writes about eco-design, a greener web future, which Drupal pioneers. The accessibility guide from Clarity Partners is not Drupal-specific. All PHP-based CMSs can take a lesson from the web hosting provider Duplika, where they speak about PHP X-Ray functions to pinpoint lethargic plugins, sluggish database queries, tardy functions, or lagging external calls. Five Jars has a blog on automated testing using Codeception.

Discover how Acquia’s prowess in low-code, global content delivery, and extensibility secured top honours in The Forrester Wave™ for Content Management Systems.

That’s all from the past week. Thank you.

Stay motivated, Drupalers!

Sincerely,
Kazima Abbas
Sub Editor, TheDropTimes