Skip to main content

Blog

When There's Not a Module for That: How to Make (and Maintain) a New Module

You've built sites with Drupal and know that with a few dozen modules (and a ton of configuring), you can do nearly everything in modern Drupal.

But what do you do when there's not a module for that? When the modules that exist don't meet your needs, and cannot be made to by contributing changes?

You make your own.

This blog post accompanies helps you take that step. Making a module is something that anyone can do. Every person developing a module is still learning.

Come to the Healthcare Summit at DrupalCon 2024 next week in Portland, Oregon!

Join us for an interactive day devoted to Drupal in healthcare— a relaxed and friendly close to DrupalCon with learning, networking, and discussing.  Whether you are in a pharmaceutical company, a state department of health, a non-profit hospital, a public health organization, or anyplace else in the broad healthcare space, there are unique needs in ensuring security, accessibility, compliance, and availability of important information and tools.

Upload media inline in WYSIWYG editor in modern Drupal 10+ with CKEditor5

It seems like the best practice is that we should try to use the media manager rather than just drop in photos using the text editor method (which doesn't seem to get the photos into the media library), but how do we get the photos in the media library to be able to wrap with text and not be visually separate content?

A large lower case letter i surrounded by tiny words.

Display lists naturally with the In Other Words module for Drupal

It is common for a Drupal site to list multiple items. It could be several authors of a single article, the days that a recreation center is open, or the flavors an ice cream parlor serves. Clean, structured data is a strong point of Drupal, but the display of that structured content is limited. That is why Agaric, with support from DevCollaborative, made In Other Words, a Drupal module that gives site builders the power to configure precise and natural ways to display lists of items.

Micky Metts speaking in a webinar with the Center for Global Justice.

Did the Internet make you a criminal? How can it be proven?

Let's explore digital threats and solutions, including Internet Access, Big Data, and Surveillance Capitalism. Discover how the data collected by big tech can be used to incriminate you and learn practical tips to enhance online privacy. Explore ethical considerations and challenges posed by emerging technologies like AI and social media. Gain a deeper understanding of online privacy and learn to navigate the digital world confidently while protecting your personal information effectively.

A black and white photograph of an elephant's head.

Always run the desired PHP version when your hosting solution has multiple versions available

At Agaric, we perform a lot of Drupal upgrades. These very often involve transitioning away from older versions of PHP. Even when your hosting service provides multiple versions of PHP, you can still run into issues activating the appropriate one for each site: whether that's within the web server, at the command line, or via drush (or other tools). In this blog post, we'll be providing remedies for all of these cases. Most content applies to any PHP application.

A spiderweb covered in dew drops.

How to filter a view by content that references the current node in modern Drupal

A basic step-by-step guide on configuring relationships and contextual filters in a Drupal view.

A red onion sitting on a plate.

The development of Therapy Fidelity

We developed a React.js therapy application that supports evidence based therapy by helping therapists and their clients stay accountable to a standard protocol. This post covers some of the architectural decisions that we made to facilitate a fast time-to-market for this feature rich and carefully secured therapy dashboard.

Painting of a fancy peacock.

Recommendations for social media as Twitter melts down: Host your own community

As Elon Musk destroys Twitter, a lot of clients have asked about alternative social media, especially 'Mastodon'— meaning the federated network that includes thousands of servers, running that software and many other FLOSS applications, all providing interconnecting hubs for distributed social media. Agaric has some experience in those parts, so we are sharing our thoughts on the opportunity in this crisis.

A white cassette tape laying in the grass.

How to add an audio player to a content node in Drupal 9

Getting an audio player to show on your content nodes only takes a few steps. However, like many things in Drupal, knowing what those few steps are can be a bit of a challenge. This short guide will provide a basic introduction for anyone looking to use this core functionality on their site.

Old-fashioned half-used colorful red and blue fireworks box, labeled 'Thunder Bomb' with the warning Caution-Explosive in large capitalized letters.

Drupal 9 Component Plugin ContextException "not a valid context" after CTools, Symfony update

Upgrading to CTools 3.10.0 and/or various Symfony upgrades can break the simple task of adding content on your Drupal site.

A cartoon dinosaur trying to plug two cords together but their arms are too short.

Drupal 9.4 installation with existing configuration fails because "unable to uninstall the MySQL module"!?

How to deal with the error "Unable to uninstall the MySQL module because: The module 'MySQL' is providing the database driver 'mysql'.."

Silhouettes of a people on soapboxes shouting through bullhorns at a crowd, demonstrating stand / deliver, a portable dueling free speech unit, a mobile box equipped with two platforms and megaphones.

Uniting Visions: Kicking off Thursday 3pm ET planning & building sessions for democratic conversation scaling platform, Visions Unite

Hi friends and collaborators, join us today at 3pm ET (or any subsequent Thursday at 3) as we kick off a series of research, planning, discussion, and building sessions for Visions Unite.

Indieweb Drupal logo consisting of the top of the Drupal drop and a stylized i and w.

Here is a social media microblog-sized post just to say we are syndicating to social.coop Mastodon and Twitter thanks to the Indieweb module!

It's great to be here, and there, and there.

Laptop with lock icon.

Create and use a custom permission in your module

You can define your own permissions for the Drupal permissions page (/admin/people/permissions in modern Drupal, Drupal 8, 9, 10, and beyond) and then add conditional options to your code to do different things based on the role of the user and the permissions configured by a site administrator.  See how!

BigBlueButton screenshot.

Why we resist Zoom and choose BigBlueButton for video chat

We can look at the recent popularity of some widely used platforms like Zoom and ask ourselves some questions as to why we still use them when we know a lot of terrible things about them. Agaric prefers to use a free/libre video chat software called BigBlueButton for many reasons, the first one being the licensing, but there are many reasons.

A drawing of a laptop with open tabs extending outside of the laptop as horizontally tiled windows.

Drupal toolbar not working in dev environments in Firefox? Here's why.

Drupal's toolbar not showing due to Uncaught DOMException quota has been exceeded may be due to sites sharing a top-level domain (default for some local development environments like DDEV) combined with a Firefox bug.

""

Upgrade from Drupal 6 or 7 when it is right for you: In the era of modern Drupal, release cycles of major versions have only minor importance

Drupal 7 has a much longer lifespan than the (already pushed back) official date, and Drupal 8 has an essentially infinite lifespan because it can update in-place to Drupal 9 easily and the same will be true of Drupal 10, 11, ∞. There's no reason to rush an upgrade— but there's no reason to wait either.