Planet Drupal
Evolving Web: Highlights and Insights from DrupalCamp New Jersey 2024
DrupalCamp New Jersey unites hundreds of attendees with varying professional backgrounds to share their knowledge, ideas, and passion for the Drupal project. My first DrupalCamp NJ was in 2023 and it was also my first experience of presenting at a conference! It was a nerve-wracking but fun experience—and since then I’ve delivered 9 conference presentations across Canada, the U.S., and France on topics like accessibility, caching, migrations, and discovery.
Fast forward to March 2024: I returned to DrupalCamp NJ to present another session and deliver training. Eight of our team members piled into a minivan to make the 700 km road trip from Montreal to New Jersey. The event was held in Princeton University’s Robertson Hall—a stunning piece of architecture set in a beautiful plaza. We joined more than 150 participants for the three-day event, which featured 23 incredible talks and three days of training.
Read on for our highlights! Plus, learn what to expect from your first DrupalCamp.
Princeton University hosted DrupalCamp New Jersey, so we got to revisit our client’s stunning campus.
What We Presented
What Non-Developers Should Know About Content Migration
I co-presented this session with my colleague Marien Regnault, Drupal Developer. We shared insights that our team has gained from dozens of complex migrations over the years, including Drupal 7 to Drupal 10 migrations. We helped a non-technical audience understand the process at a high level with a focus on planning, preparation, dealing with common challenges, and collaborating with developers.
Harmonizing Creativity and Code: Collaboration in Design Systems
This session was delivered by my colleagues Bryenne Kay, UX/UI Designer and Robert Ngo, Solutions Architect. It looked at building and maintaining a design system from both a developer’s and designer’s perspective. Bryenne and Robert dived into creating libraries of reusable Single Directory Components (SDCs), streamlining workflows, and improving collaboration between teams.
Bryenne at her first ever DrupalCamp, waiting with Robert to begin their presentation on design systems.
Use Drupal as No-Code Content Platform for Your Next(.js) Decoupled Project
Our Director of Technology, Simon Morvan, talked about the core principles of a decoupled Drupal architecture and why it improves performance, user experience, SEO, and security. He demonstrated that this approach doesn’t require back-end development, making Drupal a low-cost alternative to other no-code options like commercial cloud SaaS solutions. Simon used our collaboration with Planned Parenting Direct (PPD) as an example. Interestingly, the co-founder of Pantheon—which hosts the PPD website—was in the audience! This led to some interesting additional questions and answers at the end of the session.
Revamp or Redesign: Navigating the Crossroads of Website Evolution
Evolving Web has a long-standing relationship with Princeton University, so I was delighted to co-present this session with the institution’s Assistant Director of Web & Digital Initiatives, John Cloys, along with Alex Dergachev, Co-Founder and Technical Lead at Evolving Web. We explored the ever-changing nature of the digital landscape, and addressed the challenge of deciding when to update your website, how, and how much.
Drupal Site Building & Tools for Digital Asset Management
It was so much fun to deliver this training session with my colleague Marien and Acquia’s Senior Solutions Architect, Martin Anderson-Clutz. It was my first time providing training in-person since I started at Evolving Web, and I really enjoyed the advantages of being physically present; I was able to see people’s reactions and give more personal support than is possible over Zoom. The course gave participants a run-through of the Drupal site building process—including creating an information architecture in Drupal, and leveraging media management and Acquia DAM on top of Drupal.
“This was my first DrupalCamp. It made me realize that the Drupal community isn’t just a source of modules I can use—it’s a community of people with common goals who collaborate with and support one another.”
– Marien Regnault, Drupal Developer, Evolving Web
What We AttendedIntermediate Drupal Front End Development
Led by Ashraf Abed at DebugAcademy.com, this course shed light on some of the most powerful aspects of Drupal's front-end system, including render arrays, caching, and twig. It was fascinating to discover how powerful render arrays are for piling on properties all the way down the stack. We heard about useful tools like Twig Xdebug, which allows you to use Xdebug breakpoints with Twig templates. And we learned some best practices for security, such as only translating hardcoded strings to avoid exploits from user-generated content.
Led by Mandee Englert and Jill Moraca, this talk provided an impressive example of a highly complex migration and the planning, organization, and post-migration processes that made it a success. We left with plenty of useful ideas to implement and recommend to clients.
Ray Saltini and David Hernandez explored key reasons and considerations for adopting a Digital Asset Management (DAM) solution. We really enjoyed their practical insights into preparing, optimizing, and scaling a DAM solution, as well as an exploration of alternatives. Overall, a DAM good session.
Protecting your site with Automatic Updates
We were excited to hear updates from Acquia’s Ted Bowman on his almost-complete work to bring automatic code updates to Drupal deployment. Ted gave a refresher on the Automatic Updates module, including how to determine if your hosting is compatible and ensure your site is configured to run it securely.
See what you missed at DrupalCamp Florida 2024, too!
“It was my 9th visit to Drupalcamp NJ so one of the best parts is seeing old clients, collaborators, and dozens of other amazing Drupal community members who have become friends.”
– Alex Dergachev, Co-Founder & Technical Lead, Evolving Web
What to Expect From Your First DrupalCampDrupalCamps are regional, community-driven events that foster innovation, collaboration, and skill enhancement within the Drupal ecosystem. Each has its own style and flow, but they all have consistent themes at their core:
- Knowledge sharing. DrupalCamps are a great place to swap ideas, gain skills, and learn best practices. Sessions, workshops, and trainings provide more structured learning, but there’s also a treasure of wisdom to be found simply by chatting to fellow participants at lunch. Success stories and case studies also serve as valuable inspiration for future projects.
- Community building. DrupalCamps encourage professionals to connect, collaborate, and develop valuable relationships. The organizers emphasize inclusivity, welcoming the participation of diverse groups and finding ways to lower barriers and increase accessibility.
- Volunteerism. DrupalCamps are organized and run by volunteers, making them a sustainable model and a true reflection of the Drupal community’s interests and values. Volunteering opportunities are also a great opportunity to gain exposure and experience through speaking, training, or organizing.
- Collaboration. DrupalCamps often feature hackathons, collaborative workshops, and contributions days focused on improving open source projects such as Drupal core, modules, and themes. These activities foster team-work beyond the event, too. More than one Drupal initiative has started out as a conversation at a DrupalCamp or DrupalCon.
- Innovation. Participants are encouraged to collaboratively solve real-world problems, and informed about new technologies, trends, and challenges. It’s a chance to not only get ahead of the curve but also to help shape open source innovation.
- Feedback. DrupalCamps serve as platforms for gathering UX feedback on community-driven initiatives that support Drupal’s growth. As a Drupal user, this is an opportunity to ensure your needs and priorities are considered.
- Professional development. DrupalCamps are a friendly space where you can connect with potential employers, find mentorship, and gain insights from peers and experts. There are sessions where you can develop your technical, strategic, creative, and leadership skills. Also, volunteering to lead a session or workshop can help you gain industry exposure and carve out a niche.
Interested in attending? Visit drupal.org to find a DrupalCamp near you.
If you’re looking for an event that covers a wider variety of topics, with fewer simultaneous talks, check out EvolveDrupal! This unique summit fosters open source innovation and digital transformation with sessions on technology, UX design, digital strategy, content, marketing, higher education, and much more. The next EvolveDrupal summit is taking place in Atlanta on April 12. We hope to see you there!
+ more awesome articles by Evolving WebThe Drop Times: Inspiring Inclusion: Celebrating the Women in Drupal | #3
From advocating for web accessibility to fostering diversity in tech leadership, their stories reflect a collective aspiration for change and renewal within the Drupal ecosystem and beyond. Join us in this inspiring journey as we explore the powerful narratives of these remarkable women, each contributing to the vibrant tapestry of Drupal. It's a call to inspire inclusion, celebrate achievements, and embrace the diverse voices that propel the community forward. Don't miss this insightful finale of "Women in Drupal" – let's inspire inclusion together!
Dries Buytaert: Sydney Opera House using Drupal
Across its 50-year history, the Sydney Opera House has welcomed musicians, dancers, actors, playwrights, filmmakers, contemporary artists, and thinkers who have both challenged and defined the cultural scene. As a result, the Sydney Opera House draws millions of visitors from around the world each year.
Not only is the Sydney Opera House of incredible cultural importance, it's also an architectural masterpiece. Its unique design makes it one of the most iconic buildings in the world, and has earned it a place as a UNESCO World Heritage Site.
Last year, the Sydney Opera House chose to migrate its website to Drupal. Today, it is running Drupal 10. The decision by such a prestigious institution to relaunch their website on Drupal highlights Drupal's flexibility, security, and ability to manage complex websites.
A couple of weeks ago, during my visit to Australia, I met with the Drupal team at the Sydney Opera House. I was particularly impressed by the team's dedication to using Open Source to expand cultural access and their enthusiasm for collaborating with other arts and cultural organizations. Their focus on innovation, inclusivity, and collaboration perfectly aligns with the core values of Open Source and the Open Web. Drupal is such a great solution for them!
Salsa Digital: Steve Worley at DrupalSouth 2024
Acquia.com - Drupal Blog: Final Takeaways from DrupalCon Lille
Acquia.com - Drupal Blog: All Eyes on AI at DrupalCon Lille
Acquia.com - Drupal Blog: DrupalCon Lille: Why Accessibility and Inclusion Matter
Acquia.com - Drupal Blog: Driesnote Lille 2023: Recapping the Tale of Drupal
Dropsolid Experience Cloud: 10 things you probably didn’t know about Drupal
Dropsolid Experience Cloud: Mautic for Developers: connecting Drupal content to Mautic email marketing
Dropsolid Experience Cloud: Everything you need to know about headless Drupal
Dropsolid Experience Cloud: How to add metatags to your headless Drupal project
Dropsolid Experience Cloud: The road to fully headless Drupal
Dropsolid Experience Cloud: Dropsolid DXP, the most open Drupal powered DXP for enterprises with a low entry barrier
Dropsolid Experience Cloud: What is a Digital Experience Platform (DXP) and why do you need one?
The Drop Times: Navigating the Currents of Change: The Multidimensional Journey of Preston So
The Drop Times: TDT Named Official Media Partner of DrupalCon Barcelona
The Drop Times: TDT an Official Media Partner for Drupal Iberia 2024
Drupal Atlanta Medium Publication: How to Configure the SMTP Module in Drupal 10 with Gmail, Since Google Removed Less Secure Apps
To ensure your Drupal 10 website can send emails, like password reset links, you must configure the SMTP Module, especially after Google’s policy change on September 30, 2024, which prohibits the use of less secure apps. This guide will show you how to set up the SMTP Module in Drupal 10 for sending password reset emails and other form submissions via Gmail.
Before you begin, ensure you have the necessary tools. You will need Composer and Drush installed on your computer. Additionally, you must have access to a Gmail account and its password, which will be used to send the emails. Follow these steps to configure SMTP in Drupal 10, ensuring your site’s email functionality is uninterrupted by Google’s security updates.
Note: The instructions below are for a standard Gmail and have not been tested on a Google Workspace email address.
Download and Enable the Module- First, you must download and enable the module.
- We are going to use composer to download and then a drush command to enable it. Or you could just enable the module in the
drush en smtp -yConfigure the SMTP Module in Drupal
- Navigate to the configuration page admin/config/system/smtp
- Under Turn this module on or off select On.
- Under SMTP server enter the following smtp.gmail.com. Leave SMTP backup server blank
- Under SMTP port enter 587
- Under Use encrypted protocol select Use TLS
- Under E-MAIL OPTIONS use the same Gmail address as you did above and enter an E-mail from name
- Login to your Gmail account at https://myaccount.google.com/
- On the account homepage, click Sign-in & security or navigate to https://myaccount.google.com/security
- Turn on 2-factor authentication and enter your phone numbers
- Visit https://myaccount.google.com/apppasswords
- Name your app — XYZ Drupal Website
- Copy the password and enter this password into the SMTP Module password location.
How to Configure the SMTP Module in Drupal 10 with Gmail, Since Google Removed Less Secure Apps was originally published in Drupal Atlanta on Medium, where people are continuing the conversation by highlighting and responding to this story.
ComputerMinds.co.uk: Format Drush output for easy wins!
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 that into our PHP automatic update script. Here are two examples - one getting just a single property of a block placement, and another for the whole settings object for a module.
# Get the visibility conditions of my block. drush config:get block.block.myblock visibility --format=var_export # Get the whole settings singleton for my module. drush config:get mymodule.settings --format=var_exportThe var_export format provides the output using PHP's traditional array syntax, instead of the default YAML (which matches the format of config export files). Here's an example of the output for another type of configuration, an action:
array ( 'uuid' => 'faaaea7f-d377-4b9c-bbfb-bd1b9c562050', 'langcode' => 'en', 'status' => true, 'dependencies' => array ( 'module' => array ( 0 => 'mymodule', ), ), '_core' => array ( 'default_config_hash' => 'vvt7bzrXEwxrTfY--axzCfSRPzggH0o4hahUY9Kh0z0', ), 'id' => 'mymodule_foo_action', 'label' => 'An example action', 'type' => 'webform', 'plugin' => 'mymodule_foo_action', 'configuration' => array ( ), )Then I could just copy the output and paste it into a post-update hook. My IDE makes it easier to prettify the code to match Drupal's coding standards and switch to PHP's newer short array syntax. I also removed all the bits that I could leave to be dynamic; like the uuid, _core, and empty configuration properties in the action example above. I can then either use the entity storage for my type of entity to save the configuration, or just use the Configuration Factory service more directly:
$data = // (Paste & adapt the output from drush for this variable.) // Example of using the config factory. $config = \Drupal::configFactory()->getEditable('block.block.myblock'); // Using `setData()` will replace the entire config array. We could instead // use `set()` for individual properties. $config->setData($data)->save(); // Alternatively use the entity type storage and specific methods, when // available. Create new entities with `$storage->create($settings)->save()`. $storage = \Drupal::entityTypeManager()->getStorage('block'); $storage->load('myblock')->set('settings', $data['settings'])->save();We tend to automate Drupal core's configuration management on most of our projects - but not always. Even where we don't, there is usually some config that we exclude from the automated management - usually to allow clients to make changes in the admin UI without needing to access the codebase. So this is a handy trick to have available when you just need to script some changes outside of config management.
Under the hood, the consolidation/output-formatters library is what provides output formatters. If you run drush help version you can get a list of other standard formatters, which includes:
-
yaml
-
The key-value format usually used for configuration exports.
-
csv
-
Comma-separated values; ideal for simple lists
-
php
-
The format that PHP's internal serialize() method produces.
-
var_dump
-
Probably my new favourite; as produces coloured syntax highlighting in the terminal output! It is powered by Symfony's VarDumper component. I have found this particularly useful recently when debugging the output from a remote API endpoint, to help me visually parse clumps of output.
As a bonus, this can be useful for quickly loading up an entity to inspect its field values:
getStorage('taxonomy_term')->load(11)->toArray());" --format=var_dump`" data-entity-type="file" data-entity-uuid="9930f0b8-e138-4ae8-8432-1e42a2e7086b" src="https://www.computerminds.co.uk/sites/default/files/inline-images/drush-var-dumping.png" width="692" height="834" loading="lazy" /> My output from drush php-eval "return array_filter(\\Drupal::entityTypeManager()->getStorage('subscriber')->load(127)->toArray());" --format=var_dump
...which feels rather like a good case for a custom drush command, just taking an entity type and ID as arguments ;-)
What other handy uses of specifying an output format can you come up with? Let me know!