The Drop Times: Unmanaged Files in Drupal: Rendering via a Twig Template (Part 4)
Mario Hernandez: Normalize images captions in your website
Caption text in website images is one of those things that may not seem like a major issue, but it always needs to be addressed globally within your project—otherwise, it’s not going to be a pretty picture (pun intended).
The problemBy default, even when using semantic markup, an image's caption text would expand as wide as it can unless it is restricted by its parent container. Wouldn't it be nice if the caption text did not grow any wider than the image's width?
The <figure> and <figcaption> elements (recommended semantic markup for images and captions), are both "block-level elements", which means by default they both would span as wide as their containers. Although you can solve this problem by managing the width of the container, the solution I am interested in is for the caption text width to never exceed the width of the image no matter the width of the parent container.
The solutionLet's start with the standard and semantic markup for an image and its caption.
The markup<figure> <img src="image-path/image.webp" alt="Image alt text" /> <figcaption>Image caption text.</figcaption> </figure>The <figcaption> is the element which provides the accessible name for the parent <figure>. So not only is the markup above semantic, but it is also important for accessibility as well as SEO.
The CSSfigure { inline-size: fit-content; figcaption { contain: inline-size; } }That's it!
DDEV Blog: DDEV on Linux in 10 Minutes
This screencast walks you through setting up a complete DDEV development environment on Linux, starting completely from scratch. Whether you're new to DDEV or local development environments in general, this step-by-step guide will get you up and running quickly.
Video OutlineHere's the video table of contents (opens on YouTube):
- Introduction (0:00)
- Install Docker CE (0:30)
- Docker Post-Installation (1:47)
- Install DDEV (2:34)
- Configure HTTPS Certificates (3:20)
- Create Project (3:45)
- Project Startup (5:00)
- Launch Project (6:52)
- Install PhpStorm (8:10)
- Configure Xdebug (10:56)
- Test Step Debugging (12:14)
- Recap (13:19)
Here's what happens in this screencast. You can do it yourself in just a few minutes. We're using DDEV's get-started, but of course there is far more detail in the DDEV docs, explaining how to use other distros or other install techniques.
- Install Docker CE. Use the apt repository technique from Docker's docs.
- Do the post-install one-time action:sudo usermod -aG docker $USER`
- We could log out and log back in, but instead for now:newgrp docker
- Install DDEV, using the apt repository technique from get-started.
- ddev --version shows us being working fine with current stable.
- One-time mkcert -install helps your browser trust DDEV's HTTPS certificates.
- Check out a project. I used rfay/d11, a trivial demo Drupal 11 project. (DDEV's quickstarts show many different project types with quick startup.)
- ddev config the project. Most of the time you can take the defaults. But most of use use a non-interactive command like ddev config --project-type=drupal11 --docroot=web.
- ddev start the project. The first time on a new system you get the downloading of the Docker images.
- ddev composer install for most projects
- ddev launch and install with the web UI. On another project I might have used ddev import-db to load a database dump instead of doing an install.
- sudo snap install --classic phpstorm
- Open the project and set a breakpoint in web/index.php.
- Click the "Listen for PHP Debug Connection" button in PhpStorm.
- ddev xdebug on
- Visit the site in the browser. PhpStorm wakes up and asks us to map the code from the host/workstation side to the mount point in the container. The default usually works.
- Debug, step over, step in, view variables, etc.
Use your own IDE, including VS Code: I used PhpStorm here, but VS Code works great.
This demo used Ubuntu, but people use lots of distros: The differences for major platforms are shown in the docs, but the ideas are all the same, and people use all of them, including other Debian/Ubuntu, Fedora, and Arch Linux distros.
Cross-Platform Compatibility: DDEV works the same on macOS, Linux, Traditional Windows, and WSL2, see Getting Started. Your whole team can work on their preferred environment without friction. See DDEV on Windows in 10 Minutes and DDEV on macOS from Scratch.
Support for almost any PHP-based project and many Node.js environments DDEV supports development of so many different web environments, so you're not stuck with using separate tools for different CMSs.
More Extensive Docs:
Support the DDEV Project: DDEV is fully open-source and free to use, and run by the nonprofit DDEV Foundation. We ask you to help make us a sustainable project by sponsoring yourself or getting your organization to sponsor the project. Sponsor us on GitHub.
Questions? Issues? We're here to help:
- Discord is great for real-time help: Join our Discord
ImageX: Spam Protection for Your Drupal Forms: A Guide to CAPTCHA and reCAPTCHA
Spam bots are one of the banes of today’s web. They crawl across sites looking for open forms to exploit, leaving behind junk content, malicious links, and unwanted traffic. Without protection, even a simple contact form can quickly become a gateway for spam, security risks, and wasted resources. That’s why Drupal provides multiple tools that detect and block spam bots.
1xINTERNET blog: Start with Drupal and AI. Up and running with the AI ecosystem in Drupal in no time
AI is changing the way we create and manage digital experiences. In this interactive workshop, Christoph Breidert (1xINTERNET) and Frederik Wouters (Dropsolid) will show you how to bring AI into your Drupal projects quickly and effectively.
1xINTERNET blog: Field widget actions: bring functionality closer to content editors
The Field Widget Actions module makes content editing in Drupal smarter and more efficient. In this session, Artem Dmitriiev (1xINTERNET) will show how to add actionable buttons to any field in Drupal, streamline repetitive tasks, and create custom plugins that bring practical tools directly to your editors.
1xINTERNET blog: From chaos to consistency: streamlining data analytics in Drupal multisite projects
Managing analytics across dozens of sites can quickly turn messy. In this case study session, Daniil Borysenko (1xINTERNET) will show how a single, reusable framework built with Google Tag Manager (GTM) and Google Analytics 4 (GA4) powers tracking for 50+ Drupal websites.
1xINTERNET blog: Make your own Drupal CMS: from distribution/profile to recipe based installation
No more Drupal from scratch. In this session, Maksym Yemets (1xINTERNET) and Artem Dmitriiev (1xINTERNET) will show you how to create your own Drupal CMS quickly and efficiently, using custom and contributed recipes.
1xINTERNET blog: Drupal AI - strategy and application
Drupal has become a leading open-source AI orchestration platform. In this session, Christoph Breidert (1xINTERNET) and Frederik Wouters (Dropsolid) will introduce the fundamentals, highlight real business use cases, and show why Drupal is driving this industry shift.
1xINTERNET blog: Leading through the storm: my journey with mental health to the C-suite
The unspoken burden of mental health can silently shape our lives and careers. In this session, Diego Costa (1xINTERNET) will share his personal journey from childhood challenges to becoming the COO of 1xINTERNET.
1xINTERNET blog: Leaving work at work. How to successfully finish your working day without thinking about work in your free time
Great code starts with a well-rested mind. In this interactive session, Norman Kämper-Leymann (1xINTERNET) and Svitlana Fedchenko (1xINTERNET) will share practical strategies and real-life routines that can help everyone create healthy boundaries between work and personal life.
The Drop Times: Top 13 Drupal Modules for AI Automation and Workflow Management
Droptica: Drupal implementation questions. What customers ask about in 2025?
Choosing a content management system is a strategic decision for any organization. Since the beginning of 2025, we have received approximately 200 inquiries regarding the implementation of new projects based on Drupal. After analyzing these messages, we identified 10 categories of questions that most frequently arise among companies considering implementing this CMS. In this article, I will present these questions along with their answers. The text is based on my video from the Nowoczesny Drupal channel.
DDEV Blog: Upsun Support for DDEV in a New Add-on
We're proud to announce that DDEV now has an Upsun add-on with extensive support for Upsun Flex and Upsun Fixed (Platform.sh-style configuration)!
Although DDEV has had ddev pull upsun support for Upsun projects for a couple of years, the add-on provides a more complete integration. It reads your Upsun configuration and automatically configures matching services in your local DDEV project, mirroring what your upstream project uses.
Getting StartedGetting started is straightforward:
- In your existing Upsun project directory, run:ddev config ddev add-on get ddev/ddev-upsun ddev start
- The add-on will read your .upsun/config.yaml or .platform.app.yaml and configure your local environment automatically.
For more details, see the README.
What the ddev-upsun Add-on DoesWhen you do a ddev add-on get ddev/ddev-upsun the add-on reads your .upsun/config.yaml or .platform.app.yaml file and configures your DDEV project to match the upstream environment. This requires careful translation between Upsun's cloud architecture and DDEV's local environment.
- Use the same PHP version and extensions.
- Use the same database type and version (supporting multiple versions of MariaDB, MySQL, and PostgreSQL).
- Detect the use of Redis, Memcache, and Opensearch and configure DDEV add-ons to mimic the Upsun configuration.
Although many Upsun-hosted sites are basic nginx-fpm-database sites that DDEV has easily supported for years, the more complex ones have required special handling, like having to explicitly set PHP version, database type, etc. Now the add-on can do much of that for you.
For example, if your Upsun project uses PostgreSQL 15 with Redis and a specific PHP version, previously you'd need to manually configure each in your .ddev/config.yaml. Now, the add-on detects and configures all of this automatically.
Upsun is a great platform for developers, and so many of you use it in the new "Flex" style and the previous "Fixed" style (Platform.sh-style). The add-on makes it easy to use both with a single add-on.
And of course Upsun is the lead sponsor of DDEV, so we always delight in making it work for you.
The Future of ddev-upsunA sophisticated platform like Upsun has many possibilities, and we want most things to work on most projects. The scope will be limited to PHP for now. However, we want to add:
- Versioning for add-ons (Redis version will be supported in ddev/ddev-redis add-on, for example).
- More service support, like Elasticsearch and Solr.
- Even more extensive automated tests. Currently we have a very extensive set of tests based on a Drupal setup, but want to add tests for other frameworks and CMSes.
DDEV v1.24.8 (required) adds support for add-ons written mostly in PHP. Originally, all add-ons were written in Bash, with Go templating. It worked great for so many simple add-ons, but was way too complicated for sophisticated ones. PHP is a familiar and powerful language for many add-on developers, so now provides a much more expressive way to write complex add-ons.
The ddev-platformsh add-on forced the issue on this. Every time we went back to it to maintain it we had to remember how Go templates worked and sort out complex Bash logic. Bash and Go templates are a lousy combination for maintainability. PHP should be much better. The ddev-upsun add-on will replace ddev-platformsh and supports both the Flex and Fixed Upsun configurations.
If you're currently using the ddev/ddev-platformsh add-on, you can migrate to ddev-upsun by removing the old add-on with ddev add-on remove ddev-platformsh and adding the new one with ddev add-on get ddev/ddev-upsun.
What's Next- Check out the full documentation for advanced configuration options.
- We'd love your feedback — open issues or contribute PRs if you encounter any edge case.
- If you like it, give us a star on GitHub.
Thanks as always to Upsun for their financial support and for the great products, and for access to testing accounts. Their continued support makes DDEV development possible.
If you're not already an Upsun user, try an Upsun free trial.
Stay in the Loop—Follow Us and Join the ConversationReviewed with assistance from DDEV Contributors and Claude Code.
Centarro: Drupal Commerce Now Supports PayPal Fastlane
The latest release of Commerce PayPal integrates Fastlane by PayPal, a payment gateway and checkout flow specifically designed to optimize the checkout experience. It streamlines the guest checkout experience, but for customers who opt in, Fastlane creates a unified profile that can accelerate checkout across participating sites.
We expect this integration to be particularly valuable for merchants transitioning away from PayPal's legacy solutions. It’s also a great opportunity to adopt a more modern checkout experience as popularized by other platforms and mobile wallets.
What makes Fastlane differentFastlane allows users to complete their purchases in just a few clicks, potentially reducing cart abandonment rates.
- For first-time customers: Fastlane provides a streamlined guest checkout where customers can optionally save their payment method and shipping information by providing a mobile number. This creates a Fastlane profile that's shared across participating merchants.
- For returning customers: When a customer with a Fastlane profile shops at any participating merchant, they simply enter their email address. If a profile is found, they receive a one-time code via SMS to authenticate, and their saved payment and shipping details are instantly retrieved.
As part of our Fastlane integration, we implemented single-page checkout functionality. This feature actually advances a goal we've had for Drupal Commerce for a long time. Most modern e-commerce platforms now use single-page checkout to help reduce cart abandonment, and we plan to extend this approach to other payment gateways.
Read moreTag1 Consulting: Using Artificial Intelligence to Improve the Usability of Drupal’s AUTO_INCREMENT Alter Module
At Tag1, we believe in proving AI within our own work before recommending it to clients. This post is part of our AI Applied series, where team members share real stories of how they're using AI and the insights and lessons they learn along the way. Here, Mauricio Dinarte, inspired by a video by Dries Buytaert, explores using Claude Code to add a graphical user interface to a contributed Drupal module previously available only via the command line.
mauricio Wed, 10/01/2025 - 05:01Gizra.com: Make Impossible States Impossible (in Drupal Theming)
The phrase “Make Impossible States Impossible” is often used in typed languages such as Elm and Haskell. Since these are typed languages, the typical approach is to first “Model the problem” and then implement the solution, which usually feels natural after modeling. The concept behind “Make Impossible States Impossible” is to design your logic so that it prevents the possibility of ending up in an incorrect or invalid state.
Imagine this function:
function isAllowedAccess(bool $is_trial, bool $is_paid) : boolThis function nearly makes sense, but it has a flaw in its design.
is_trial is_paid Meaning Valid? false false No subscription ✅ true false Trial user ✅ false true Paid subscriber ✅ true true Trial and PaidCheppers: Drupal: The CMS for Responsible AI
Dripyard Premium Drupal Themes: Dripyard product launch webinar video recording is up!
We’re thrilled with the turnout for our Dripyard themes product launch! The response has been incredibly encouraging as we kick off this new business.
We had 170 total registrations, with about 100 attendees joining live at any given time. We even sold our first themes during the event!
The full recording is available below. If you catch it soon, there’s still a chance the launch coupon codes will be active!
mark.ie: My LocalGov Drupal contributions for September 2025
A good amount of contributions made this month, including getting LocalGov Replicate into a stable state.