Drupal articles

Views Data Export: Re-maintainership

Part of the series
Views Data Export
6th Dec 2024

Views data export is a module that's in use by over 100,000 sites but hasn't been maintained very well by me over the years. This is the story and the plans for getting back into healthy maintainership.

Read more

DDEV, solr, and platform.sh

5th Dec 2024

We use platform.sh to host many of our client Drupal sites, and many of those sites use Solr.

In this guide we talk through quickly matching the Solr configuration used by platform.sh and DDEV.

Read more

Cyber essentials and MAMP Pro

28th Nov 2024

We recently went through the process of applying for Cyber Essentials. Cyber Essentials is a program created by the UK government to help businesses get on top of their Cyber security. It was an interesting process for us to go through, and certainly helped us to formalise and document practices we had been doing for years.

We did hit a bit of a blocker tho for our developers, specifically on point A7.6 Use of Administrator Accounts...

Read more

Putting 1000 sites behind Cloudflare

27th Nov 2024

Keeping a PaaS product online at all times comes with a high level of responsibility. In early 2024 we set up a proof of concept setup with Cloudflare, which would allow us to make a significant ongoing cost saving whilst also playing with some really cool APIs.

Read more

Automatically generate forms from config schema

2nd Oct 2024

Drupal's form API has been brilliant for many years. Still, recently I found myself wondering why I needed to build a configuration form if I already had a schema for my config. Defining a schema facilitates API-first validation (including some pretty smart constraints), specific typing (e.g. actual booleans or integers instead of '0' or '1' strings), and even translation in Drupal. 

That last part got me thinking; if Drupal automatically provides translation forms for typed configuration, why must I build a form? I started diving into the code and found config_translation_config_schema_info_alter() which maps certain config data types to element classes...

Read more

My text filter's placeholder content disappeared!

19th Jun 2024

When I upgraded a site from Drupal 10.1 to 10.2, I discovered a particularly serious bug: the login form on our client's site vanished ... which was pretty serious for this site which hid all content behind a login!

Read more

Format Drush output for easy wins!

3rd Apr 2024

Drush, the brilliant command-line tool for Drupal, is capable of giving you its output in several ways. Its global --format parameter can be set to a type that you can use in useful ways. Most recently, I found this incredibly useful when I had made some configuration changes through Drupal's admin pages, and needed to then script those changes to automatically apply to hundreds of sites on a platform we manage.

I simply asked Drush for the value of the configuration I had set, formatted as the PHP code to set those values. Then I could drop...

Read more

Webform Protected Downloads

11th Mar 2024

I recently produced the first release of the Webform Protected Downloads module that is compatible with Drupal 10. It provides the ability for sites to have 'gated' content which users can download once they have filled out a form for their details. This can convert engaged visitors into leads, set up licenses for customers, or simply validate a user for access to a file. Put simply, as the project's description says, this module could be useful to you if:

  • You want to offer some files for download to either anonymous or registered users
  • You don't want those files to be...
Read more

Aegir 3 and Drupal 10: just about working

26th Feb 2024

In my previous article I outlined that I really needed to get Drupal 10 sites running in Aegir 3. I had no time to wait around for other solutions, and I was going to try to decouple Aegir from running Drupal sites, so that it wouldn't be tied to Drupal versions.

Since writing that article and actually sitting down to do this work, I realised that it's quite an undertaking, and the approach outlined by Omega8cc in various github issues was worth a second look.

It works!

But it's wild. It comprises three main things:

  1. A custom/forked version of...
Read more

Aegir 3 and Drupal 10: eeek!

26th Jan 2024

Aegir is a hosting system built in Drupal, for Drupal.

It lets you easily create new Drupal sites and create databases, filesystems, virtual hosts etc. for the sites. You can manage hundreds or thousands of sites using a simple Drupal based UI. As simple as you would manage a list of 100 blog posts, you can manage 100 Drupal websites.

Currently the latest released version of Aegir is: Aegir 3.

Aegir 3 relies on Drush 8, which means it can work with: Drupal 7; Drupal 8 and Drupal 9. But not Drupal 10. Oh.

I have need for it to...

Read more