Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 19 hours 17 min ago

ADCI Solutions: Examples of medical websites that rely on Drupal

Tue, 10/06/2020 - 12:24

A little earlier, we have written several articles about website building on Drupal. This time we made a selection of medical websites that attracted our attention. There will be few clear examples of medical websites with screenshots and author comments. Just move on to the article, and you will see everything with your own eyes.

Read the article “Examples of medical websites that rely on Drupal” and be healthy!

Drupal blog: Drupal in COVID-19 Series:

Tue, 10/06/2020 - 12:11

Continuing again with our series of articles highlighting ways that the Drupal software and its community are building solutions to help combat the effect of COVID-19, today we hear from Justin Emond of Third and Grove. Here, they describe their project for Brown Advisory.

The COVID-19 pandemic may be the most sweeping, transformative global event since World War II. Coronavirus has changed the very nature of work for millions of people almost overnight. Organizations have had to virtualize any mass gathering events that were planned for 2020. As a leader in the industry, Brown Advisory was able to be one of the first financial services companies to virtualize a headline event, to pave the way forward for others.

Brown Advisory is a leading, independent investment and strategic advisory firm serving individuals, families, and institutions in all 50 U.S. states and in 39 countries and territories around the world. Across eleven worldwide offices, all 700+ Brown Advisory colleagues are equity owners who are focused on making a positive and material difference for their clients and communities. 

Brown Advisory launched the Navigating Our World (NOW) Conference in 2008 to mark its 10th anniversary as an independent firm. The conference, normally held live in Washington, D.C. every other year, convenes experts across disciplines who help the firm to learn alongside clients, and ultimately become better investors and contributors to the community. In 2020, the rapid onset of the global pandemic required the firm to shift the format for the NOW conference to an entirely virtual experience. The Brown Advisory team decided that pivoting to a podcast would give their clients access to the in-depth, interactive conversations that they would have experienced during the live event.

With a hard deadline and only weeks, not months, to design, create and launch the NOW podcast and website, the Brown Advisory team leveraged their existing investment in Drupal to build a microsite in record time. Working with their agency Third and Grove, the company took the site from ideation to launch in just three weeks, bringing the NOW experience to the home offices of thousands of attendees across the globe.

  • The podcast download goal was exceeded by 60%, and is on track to exceed by more than 100%
  • 30% of downloads took place on the website instead of podcast streaming sites
  • Podcast listeners exceeded the high water mark of attendees of any previous live NOW event
  • The website experience allowed for a smoother transition from a live conference to digital for non-podcast listeners
  • The NOW website has been a catalyst and provided direction for enhancements to the corporate Brown Advisory website

Jacob Rockowitz: Using a approach to build a single source of truth and a unified Content Management System

Tue, 10/06/2020 - 11:01

This blog post picks up where my previous post about exploring a Schema-First approach to Drupal and Content Management System left off. After more research and thought into the goals and processes for taking a Schema-First approach to the Information Architecture behind a Content Management System, I realized that what I was calling a "Schema-First" approach is more aptly-named a "" approach because I am exploring using to structure reusable data within a "Schema-First" approach to developing software.

To clarify…


Key to the success of a Schema-First approach is "an agreed-upon set of standards and approaches," which I believe for web content (i.e., structured data on the Internet) is

Previously, I highlighted some of the benefits of using to structure a Content Management System's information architecture. The background, reasoning, and process for taking a Schema-First approach to API design is discussed in Kristopher Sandoval's blog post, Using a Schema-First design as your single source of truth. In this post, I want to spend some time talking about an overarching benefit for using a "" approach to create a "single source of truth," leading to a unified content management system.

Single source of truth

The goal of is to unify an organization's data, make it easy to author and distribute content, and to create a "single source of truth."

To create a single source of truth for content, organizations need to create one place for content to be accessed and ideally edited.

Most enterprise organizations have multiple Content Management Systems and authoring tools for creating content. It is no surprise each department's schema for a blog post...Read More

Mobomo: Mobomo redesigns and re-launches website for Pandemic Response on Drupal 9 in an incredible 5 weeks

Mon, 10/05/2020 - 20:06

2020 has been a year full of unexpected surprises and challenges. In March, the coronavirus had reached the United States and had begun spreading quickly causing federal and state governments to take action to ensure public safety, including the development and passing of the Coronavirus Aid, Relief, and Economic Security Act (CARES Act). As the pandemic spread, many more eyes turned to the government to watch how they were navigating this new unmarked territory. 

The Pandemic Response Accountability Committee (PRAC) created to display the details of the $2.6 trillion coronavirus relief spending provided by the CARES Act. The website allows the public interactive tools for understanding who received coronavirus funding, how much they’ve received, and how the funds are being spent. The website also provides tools for the public to report fraud, waste, abuse, and mismanagement of coronavirus relief funding, as well as helpful information to protect yourself against fraudulent activity. 

Mobomo was brought in to perform the redesign and development of the website, which had initially launched as earlier this year. The Mobomo team was able to do a complete overhaul of the legacy platform and re-launch the system in just over five weeks’ time with the new website having been officially launched to the public on September 10th. Since the launch, the website has received thousands of visitors interested in learning more about who, where, and how coronavirus relief funding is being spent. 

“Transparency in government is critical in these uncertain times and the mission of the PRAC strives to provide that public service. I’m very proud of what our team has developed and hope the website helps people see how relief funding is being distributed.” – Brian Lacey, CEO.

Not Your Average Government Website

The Mobomo team redesigned with the goal of incorporating modern theming and a clean design that many of your traditional government information sites lack, but did so while incorporating 18F and US Web Design Standards best practices.  Mobomo’s User Experience team worked with the PRAC to develop mobile-first, responsive design templates that mesh the innovative branding and theming with the high-fidelity interactive visualizations that are key to communicating coronavirus funding activity. 

Let’s Get Technical

The legacy was developed in Drupal 8 and hosted in Amazon Web Services (AWS). For the redesign and re-launch of the site, the Mobomo team decided to rebuild the content management system leveraging the latest version of Drupal 9 and deployed the solution within the Microsoft Azure Websites platform-as-a-service (PaaS) environment. Mobomo developed a number of custom feature integrations with visualization partners Domo and Woolpert, enhanced search indexing for browsing various oversight reports and investigations, and optimized process for users to communicate instances of fraud, waste, and abuse through secure channels. 

In order to meet the tight five-week window for design, development, and deploying the new website – the Mobomo team leveraged containerization and Lando for streamlining local development and hooking into the continuous integration, continuous development (CI/CD) pipeline. Mobomo also worked with the Smartronix Azure Cloud team to architect a zero-downtime deployment procedure to allow seamless promotion of new code the public environment. 

“This is a great team on both sides of the table. For such an expedited delivery schedule, it is critical for all the contract partners and government stakeholders to stay Agile and collaborate effectively to succeed.” – Austin White, VP of Federal Services.

For more information on Mobomo’s work with the Federal Government click here.

About the PRAC

The Pandemic Response Accountability Committee (PRAC) was established by the CARES Act as part of the committee of the Council of the Inspectors General on Integrity and Efficiency (CIGIE). The PRAC has developed a Strategic Plan for the next five years that details how PRAC will serve the public by promoting transparency of funds and by preventing and detecting fraud, waste, abuse, and mismanagement of said funds. The committee will work closely with the Federal Inspectors General to support all affected by the pandemic. 

Our Partners
Pandemic Response and Accountability Committee (PRAC)
Council of the Inspectors General on Integrity and Efficiency (CIGIE)
Grant Thornton

The post Mobomo redesigns and re-launches website for Pandemic Response on Drupal 9 in an incredible 5 weeks appeared first on .

Vardot: How To Build A Growing Digital Community

Mon, 10/05/2020 - 14:43
How To Build A Growing Digital Community Type E-book Firas Ghunaim Mon, 10/05/2020 - 16:43 Image

Online communities by definition are not meant to be static and they often redefine the meaning of an evolving digital experience for the rest of the internet.

As the size of communities grows, the members' needs will evolve and require a more dynamic and engaging experience. Choosing the ideal CMS that provides you with the flexibility to build a digital community that always enjoys the latest UX features and best practices will be critical to lay the foundation for a truly evolving community.

In this eBook, we take a look at the success story of the International Association for the Study of Lung Cancer (IASLC) who heavily relied on content creation and marketing strategy to promote their cause and engage their huge membership.

This eBook highlights the key issues and challenges that the IASLC overcame when they upgraded their CMS to ensure their digital community's growth and scalability.

Form Form title Download Now Solutions by industry Nonprofits and NGOs Solutions by need Drupal Managed Services Enterprise CMS On-Site SEO Social Business Community Related services Web Development Support and Maintenance Drupal Migration and Upgrades DevOps and Engineering Digital Marketing UI/UX Design Digital Strategy Product Varbase

Tag1 Consulting: A robust command line for all Drupal sites

Mon, 10/05/2020 - 13:41

At DrupalCon Global 2020, Moshe Weitzman, Senior Architect and Project Lead at Tag1, and the creator of Drush (the Drupal Command Line), presented his case for a more robust command line tool for Drupal administration. Many Drupal developers and website builders rely on command line tools to get their work done.

Read more lynette@tag1co… Mon, 10/05/2020 - 05:41

Tandem's Drupal Blog: Drupal 8/9 Migration Performance Tip and Tricks

Mon, 10/05/2020 - 01:00
Here are some pointers to make your Drupal 8/9 Migration run quicker and efficiently.

Make Drupal Easy: Drupal 8: How to get a Drupal image style URL from a media field in a twig template

Sun, 10/04/2020 - 10:59

Retrieving the image URL from an image field in Drupal 8 and 9 seemed pretty straightforward too. Even the solution for getting the image style URL from a simple image field can be found quite easily. Getting the image URL from a media field can also be looked up easily.

Kristen Pol: Drupal Initiatives: What are they and how you can help?

Sat, 10/03/2020 - 11:40

Image credit: Aaron Deutsch

The Drupal project relies on the open source community for funding, promotion, and other contributions. As we know, contributing to open source can happen in numerous ways including code, testing, training, mentoring, organizing, speaking, and more. All genuine contributions are valuable.

One way we organize and make progress on the Drupal project is to create "initiatives" for important Drupal features or other focused tasks. You are likely familiar with some initiatives as they are highlighted regularly in the DrupalCon "Driesnotes".

read more

Community Working Group posts: Online Mental Health First Aid Workshop - October 27, 2020

Fri, 10/02/2020 - 18:28

The Mental Health First Aid workshop is an internationally-recognized, skills-based training course that teaches participants about mental health and substance-use issues. The goal of this course is to raise understanding and promote positive, effective responses to those in need. To date, more than three million people have completed this training worldwide. The Drupal Community Working Group (CWG) Community Health Team is pleased to announce that registration is now open for a virtual Mental Health First Aid workshop exclusively for Drupal community members on Tuesday, October 27, 2020, at 1500 UTC. Prior to the workshop, students will be required to complete 2 hours of self-study.

The Mental Health First Aid workshop is currently country-specific. The October 27th workshop will be based on the United States curriculum. All community members are welcome to attend, but if you'd prefer to pursue the workshop customized for another country, please fill out this form and let us know.

The CWG continually looks for opportunities to promote growth in our community. We believe that these types of proactive workshops will help improve our community's mental health literacy and awareness, as well as making it easier for us to have open, honest, and respectful conversations. We can all be empowered to potentially spot signs of when community members are in need of assistance.

The cost of the workshop is $80. If you need financial assistance, please contact us at drupal-cwg at

Participants will complete a 2-hour self-study followed by a 4.5-hour live-instructor Zoom session. The 2-hour self-study must be completed prior to the Zoom portion of the workshop.

Upon completion, participants have a better understanding of the impact mental illnesses and addictions have on a person, their family and communities.

Register for the course today - registration closes on October 20, 2020.

Notes about the registration process:

  • Time zone information is not displayed on the registration page. The virtual portion of the workshop takes place at 1500 UTC (11am ET, 8am PT).
  • On the registration form, there are several options that are not relevant to the virtual workshop. Please ignore (enter "not applicable" or "n/a").
  • In the automated email you will receive confirming your registration, there is a physical location for the workshop. Please ignore.
  • In the days leading up to the workshop, you will receive emails from both the MHFA instructor as well as the CWG Community Health Team with additional information.

Eight Quick Facts about Mental Health First Aid:

  1. Participants learn a five-step action plan to help loved ones, colleagues, neighbors and others cope with mental health or substance use problems.
  2. Mental Health First Aid is designed to provide temporary help to a person either developing or experiencing a mental health crisis until professional treatment is obtained or the crisis resolves.
  3. This is an evidence-based public education and prevention tool designed to improve knowledge and communication.
  4. Originally created in Australia in 2001, it is now international with programs in countries such as the United Kingdom, China, Canada, Finland, and Singapore.
  5. The National Council for Behavioral Health has the goal of making Mental Health First Aid as common as traditional First Aid and CPR are today.
  6. Mental Health First Aid studies have shown that the program:
    • improves people’s mental health,
    • increases understanding of issues and treatments,
    • connects people with care
    • reduces stigma.
  7. Trainees learn a five-step action plan to assess, intervene, and secure care. Trainees also learn risk factors and warning signs.
  8. Certification is valid for three years, after which an online recertification may be completed.

Over the past few years, the CWG has organized proactive community health events, including our on-going Code of Conduct contact training. If you are aware of an organization that provides opportunities you’d like us to consider please contact us at drupal-cwg at

Droptica: Custom Actions in the Views Bulk Operations Module in Drupal 8

Fri, 10/02/2020 - 06:49

The Views Bulk Operations module is used in Drupal agencies when when performing bulk operations on results to tables or other items created with Views. In this example, I will show you how to add your own action that will change the state (Workflows) of selected entries.

The action is performed on all selected entries and automatically performed in Batch queues so as not to overload the system and not to "crash" the page when the process takes too long. If you know what you are doing and you have reasons for it, you can turn off the queuing option in the field configuration.

VBO installation and configuration

The Views Bulk Operations module can be installed by downloading and unpacking the package in the modules/contrib directory or by using the composer command, which will download the latest stable version of the module.

composer require drupal/views_bulk_operations

After installation, the module does not need to be configured in any way, you just add the appropriate field to the page (or block) created by the Views module.

  • Add a new Content view that creates the page.
  • Set the display format to Table. It is not necessary, the checkboxes on the table simply look more natural
  • Add the title field
  • Add the Views bulk operations field

Action configuration for a VBO field

In the field configuration, you can mark which mass actions can be performed on the results. There are over a dozen predefined actions, such as:

  • deleting entries
  • publishing
  • sticking

The above list is compatible when the view displays Content. If you add the view that displays Users, you will notice that the list has different actions.

Adding own action to VBO

The goal is to add your own actions on entries (Content) that will change the state (Workflows) of the selected entries.

Entry states are not available immediately after Drupal installation. In order to do this, you need to enable two additional modules that are directly in Drupal, you do not need to additionally download anything.

Go to the page with modules - admin/modules

Enable the modules: Workflows and Content moderation

Workflows configuration

For the purposes of this post, I will use automatically-defined states for the Editorial type, which is available immediately after enabling the Content moderation module.

All you need to do is enable a given type of state transition for the selected content types.

  • On the page admin/config/workflow/workflows edit the Editorial type
  • Set the Article content type

This operation will add a new field to every add/edit article form.

To the view where the VBO field is, add

  • a field displaying the state of a given entry - Content: Moderation state
  • a filter that will limit the display of entries of the Article type

If added is a filter restricting entries to published only Content: Published (= Yes) then remove it. It will block the display of entries that have a state of e.g. Draftor Archived, which are not being published by definition.

Own action code

Create your own module end enable it. In my case, the module's name is d_workflows

In the module's directory create a directory structuresrc/Plugin/Action

Create in it a new class file for the action to change the state of the entry into Published.

Filename: PublishNodeAction.php

/** * Content moderation publish node. * * @Action( * id = "d_workflows_publish_node_action", * label = @Translation("Publish node (moderation_state)"), * type = "node", * confirm = TRUE * ) */ class PublishNodeAction extends ViewsBulkOperationsActionBase {

Class annotation is important here.

You set in it an id for the action – this can be any unique value. It is worth to include in its name the name of the module and what the given action is doing.

Label is the value that will appear in the VBO field configuration

Type is the type of entity, for which the new action will be available. In this case, it is node, but it can be, for example, user, taxonomy_term, or any other.

This class inherits from ViewsBulkOperationsActionBase

It requires declaring two methods:

  • execute() - what is to be executed for each record
  • access() - who can perform the action

Example of a code for the execute() method

/** * {@inheritdoc} */ public function execute(ContentEntityInterface $entity = NULL) { if (!$state = $entity->get('moderation_state')->getString()) { return $this->t(':title - can\'t change state', [ ':title' => $entity->getTitle(), ] ); } switch ($state) { case 'archived': case 'draft': $entity->set('moderation_state', 'published'); $entity->save(); break; } return $this->t(':title state changed to :state', [ ':title' => $entity->getTitle(), ':state' => $entity->get('moderation_state')->getString(), ] ); }

The first condition checks whether the given entity has the state setting option enabled.

In this case it is only Article. When the action is initiated on entries with no states enabled (empty $entity->get('moderation_state')->getString()) it will be interrupted and an information about it will be displayed.

The condition can be easily extended by e.g. checking the content type for the entity



Further down the code, the current status of the entry is being checked and if the condition is met, the code changes its status into Published.

$entity->set('moderation_state', 'published');

Example of a code for the access() method

/** * {@inheritdoc} */ public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { if ($object instanceof Node) { $can_update = $object->access('update', $account, TRUE); $can_edit = $object->access('edit', $account, TRUE); return $can_edit->andIf($can_update)->isAllowed(); } return FALSE; }

In this simple condition, it is being checked whether you are operating on Node type objects and whether the user performing the action has the authorisation to edit and update it. Otherwise, the code will return a FALSE, and the action will not be executed.

The whole PublishNodeAction.php file looks like this:

<?php namespace Drupal\d_workflows\Plugin\Action; use Drupal\node\Entity\Node; use Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase; use Drupal\Core\Session\AccountInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\Entity\ContentEntityInterface; /** * Content moderation publish node. * * @Action( * id = "d_workflows_publish_node_action", * label = @Translation("Publish node (moderation_state)"), * type = "node", * confirm = TRUE * ) */ class PublishNodeAction extends ViewsBulkOperationsActionBase { use StringTranslationTrait; /** * {@inheritdoc} */ public function execute(ContentEntityInterface $entity = NULL) { if (!$state = $entity->get('moderation_state')->getString()) { return $this->t(':title - can\'t change state', [ ':title' => $entity->getTitle(), ] ); } switch ($state) { case 'archived': case 'draft': $entity->set('moderation_state', 'published'); $entity->save(); break; } return $this->t(':title state changed to :state', [ ':title' => $entity->getTitle(), ':state' => $entity->get('moderation_state')->getString(), ] ); } /** * {@inheritdoc} */ public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { if ($object instanceof Node) { $can_update = $object->access('update', $account, TRUE); $can_edit = $object->access('edit', $account, TRUE); return $can_edit->andIf($can_update)->isAllowed(); } return FALSE; } }

A new action will be available in the VBO field edit


Experienced Drupal developers ensure that adding new actions to Views Bulk Operations is simple and comes down to creating an additional class with two methods. Based on this simple example, you can build more complex mass actions on entities of various types.

PreviousNext: Testing code that makes HTTP requests in Drupal

Thu, 10/01/2020 - 23:37

On the surface, it may seem like code that uses Guzzle to make HTTP requests will be difficult, however thanks to Guzzle's handler and middleware APIs and Drupal's KernelTestBase, it's not that painful at all.

by lee.rowlands / 2 October 2020 Preface

When you write code in Drupal 8/9 that needs to make HTTP requests, you will make use of Drupal's http_client service. Under the hood, this is an instance of Guzzle's client.

Once you start using the service, it may feel like your code can't be tested, because you're making requests to other sites/services on the internet.

However, Guzzle has first class handling for testing HTTP requests, and with Drupal's KernelTestBase, it can be quite easy to wire up a mock handler


The code samples below assume you're using dependency injection in your code to inject an instance of the http_client service.

Getting setup

In your kernel test, firstly you need to mock the http_client service

The code for that looks something like this:

<?php namespace Drupal\Tests\your_module\Kernel; use Drupal\KernelTests\KernelTestBase; use GuzzleHttp\Client; use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; use GuzzleHttp\Psr7\Response; /** * Defines a class for testing your code ✅. * * @group your_module */ class YourModuleTest extends KernelTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'some', 'modules', 'system', 'user', ]; /** * History of requests/responses. * * @var array */ protected $history = []; /** * Mock client. * * @var \GuzzleHttp\ClientInterface */ protected $mockClient; /** * Mocks the http-client. */ protected function mockClient(Response ...$responses) { if (!isset($this->mockClient)) { // Create a mock and queue responses. $mock = new MockHandler($responses); $handler_stack = HandlerStack::create($mock); $history = Middleware::history($this->history); $handler_stack->push($history); $this->mockClient = new Client(['handler' => $handler_stack]); } $this->container->set('http_client', $this->mockClient); } /** * Tests your module. */ public function yourModuleTest() { // ... } }

Let's breakdown what the mockClient method is doing:

  1. It takes a variable number or Responses as an argument. This is using the splat operator to type-hint that each argument needs to be an instance of Response, and that there is a variable number of arguments
  2. Then it's creating a new mock handler, wired to respond with the given responses
  3. Then it's using the HandlerStack's create factory method to create a new handler stack with this handler
  4. Then it's adding a new history middleware, using the $this->history variable to store the request/response history
  5. Next, we're pushing the history middleware into the handler stack
  6. Then we're creating a new client with the given handler stack
  7. Finally, we're setting the http_client service to be our newly created client
Putting this to use

Now, we need to tell the mockClient method what responses we expect, we do this in our test method - like so

/** * Tests your module. */ public function yourModuleTest() { $this->mockClient( new Response('200', [], Json::encode([ 'something' => 3600, 'foo' => 'bar', ])), new Response('500', [], Json::encode([ 'errors => [ 'you did something wrong', ], ])), ); // ... }

This code is wiring up the http client service to expect two requests. For the first request it will respond with a 200 status code, and a JSON-encoded body. For the second request, it will respond with a 500 and a JSON-encoded body containing some errors.

After mocking the client, you would then trigger a code-path in the system you're testing and make assertions about the return values/logic

Inspecting the requests

It's likely that you'll also want to assert that your code was making appropriate requests based on certain input parameters.

To do this, you can work with the $this->history property, which will contain an array of request/response pairs like so:

$last_request = end($this->history)['request']; $first_response = reset($this->history)['response'];

You can access the requests made, and asset that required parameters or headers were set based on passed arguments you used when triggering the code-path you're testing.

See some examples

The Build Hooks module has been recently updated to add a fairly comprehensive test-suite. The module is designed to trigger HTTP requests against remote systems when certain events occur in Drupal. You can see example test code in that module to get a complete sense of how to use this approach in real world scenarios.

Tagged Testing, Drupal 8, Drupal 9

OpenSense Labs: Key modules to start your Drupal 9 website

Thu, 10/01/2020 - 13:36
Key modules to start your Drupal 9 website Tuba Ayyubi Thu, 10/01/2020 - 18:06

The long-awaited Drupal 9 was launched on June 3, 2020. It comes with solutions that empower businesses to take advantage of the power of Drupal. With the thousands of modules that Drupal provides, I will take you through the ones that will help you with the development of the Drupal 9 site.

Here’s a list of the must-have Drupal 9 modules! 


The Token module provides tokens that are not supported by core and also provides a UI for browsing tokens. 

Admin Toolbar

The Admin Toolbar module allows you to improve the administration menu at the top of your website and transforms it into a dropdown menu, to make it easier to access all the administration pages. 


Metatag module allows you to provide structured metadata about a website. It provides support for metatags that gives you control over how your content appears when you share it on social networks.

It supports a large number of commonly used meta tags, including the page title, description, canonical URL, etc. 

Simple XML Sitemap

The Simple XML Sitemap module is needed by every webpage for SEO reasons. It creates a multilingual sitemap for entities, custom links, and views.

This module allows you to create multiple custom sitemaps through sitemap generator plugins along with customizing the URL generation through URLGenerator plugins. Also, the module gives access to automatic submission to search engines and XSL stylesheets for human visitors. 


The Pathauto module allows you to create patterns for your content while creating it. It automatically creates a URL for different kinds of content without the user creating one manually. 

Redirect Module

The Redirect module provides interesting functions like allowing you to create redirects manually and maintaining a colonial URL for all kinds of content, that redirects all other requests to that path. 

This module provides a common API for loading, deleting, and saving redirects. It also provides case-sensitive redirect matching with a hook to allow the other modules to decrease the candidate redirects. 


The Paragraphs module allows the site builders to make things cleaner so that you are able to give extra editing power to the end-users. 

This module has a 'paragraphs' field type that helps to add a new paragraph field on your content and choose which paragraph type should be available to the end-users. You can also add a custom options field and do confidential coding in your CSS. 

With the Paragraph module, end users can now choose on-the-fly between predefined paragraph types that are independent of each other. 

Twig Tweak

Twig Tweak module provides a twig extension that helps in improving development experience. 


The Diff module adds a tab that shows all revisions like standard Drupal, to permissioned users. The tab also shows all added, deleted, and changed words between revisions. 


The Shield module handles Drupal as a 'walled garden' if a user does not know a user name or password. It also creates a shield for the website with Apache authentication. 

If you need to keep unwanted traffic away, shield is the module! 


The Seckit module allows the modification of certain HTTP headers on your website to enhance the security of your site. You can always increase security in other ways. But the Security module makes it easier and more convenient. It comes with many security hardening options and reduces the risks of exploitation of web application vulnerabilities. 

Environment Indicator

With the Environment Indicator module, it becomes easy to work with stage, dev, local, and prod.

If this module is coupled with configuration split and admin toolbar modules, it can display which environment you are working with. It adds a color bar that informs you about the environment you are currently working with. 

Configuration Split

The configuration Split module allows outlining of the sets that will be exported to different directories and get merged together when exporting.

403 to 404

403 to 404 module is designed to show a 404 error when someone tries to access a page that they do not have permission to view. 

Inline Entity Form

The Inline Entity module provides a widget for inline management like modification, removal and creation. It extends the functionality of entity reference fields in Drupal which makes sure that the entities are edited, created and deleted on the go.

Advanced CSS/JS Aggregation

Advanced CSS/ JS Aggregation module improves the frontend performance of your website. It provides stampede file protection and uses locking so that multiple requests for the same thing results in just one thing doing the work. Check out performance optimization techniques of a Drupal website to know more.


The Webform module is responsible for making surveys and forms in Drupal. Emails can be sent to administrators after submission is done. This module has an extensive API to be able to expand its features and it also provides a basic statistical review. 


If you are wondering about navigating through the admin quickly, Coffee is your module! All you need to do is type alt + D to visit start this module and type for the page you'd like to visit. 

Queue UI

The Queue UI module allows viewing queues and the number of items, deleting and processing queues during cron, and also removing leases.

Backup and Migrate

The Backup and Migrate module allows you to decide which table and data to backup. With the help of this module, you can dump all of your databases to a file download or save it offsite and also restore it from the previously saved database. Read about how to migrate to Drupal 9 to know more.


The Devel module allows the execution of PHP code inside the website and also creates dummy content. 


The challenge-response that we often see while signing up or logging in is the work of the Captcha module. The main purpose of this module is to block sign-ups from spam bots that post spam content anywhere they can.

Chaos Tool Suite (Ctools)

Chaos Tool Suite is primarily a set of APIs and tools that help in improving the experience of the developers. This suite contains a module known as the page manager that manages panel pages, and as it grows, it manages more than just panels.

RESTful web services

The RESTful Web Services module provides a customizable RESTful API of data managed by Drupal. It allows you to interact with different content entities like users, comments, nodes, etc along with watchdog database log entries. Read everything about Decoupled Drupal and its approaches to know more.


The JSON:API module helps in formatting JSON responses. It allows users to customize how their content is arranged on a page and even create landing pages with an easy to use drag and drop interface.

Layout Builder

The Layout Builder module allows content builders to quickly create layouts to display content. You can easily customize your content’s arrangement on a page or across different kinds of content and even create landing pages that have an easy to use drag and drop interface. 

Media module

Media module is a replacement of the Drupal core upload field that has a unified user interface wherein administrators and editors can manage their files and multimedia assets. 

Media library module 

The media library module comes with additional features to find and use existing media items and enhance the media list. This is specifically designed for sites with a lot of content where all the media assets can be reused. 


Claro is a clean and accessible administrative theme. It is a part of the Admin UI and JavaScript modernization initiative. 


There is so much more that Drupal modules provide for your website to become an interactive one. All of these modules are actively maintained and compatible with drupal 9. You can use them to build something great. For an interactive and great user experience for your website reach out to us at

blog banner blog image Drupal Drupal 9 Drupal 9 modules Blog Type Tech Is it a good read ? On

OpenSense Labs: Developer Relations: The Ultimate Guide

Thu, 10/01/2020 - 06:27
Developer Relations: The Ultimate Guide Gurpreet Kaur Thu, 10/01/2020 - 10:57

All of you must have a fair idea as to what marketing is, it is the art of selling through persuasion. The consumer may not have a need for a product, but could still be compelled to buy it with the right kind of marketing. This is a concept that starts with product designing and ends at consumer satisfaction and feedback to improve the design, it is the cycle of product life.

This is not an article which consists of some age old marketing tactics. Rather I will be talking to you about the new age of marketing in a domain where facades don’t really matter, but features do. Yes, I am talking about technology, more specifically people who are working towards building and improving technology. These are the developers, these are people who are not easily fooled by the hyperbolic ads the non-developers might believe. These people are too smart for that and their intellect is one reason for the emergence of the vogue of Developer Relations.

If you have a muddled definition of this topic, don’t worry I will clear all the murkiness for you. All you have to do is continue reading.

Decoding Developer Relations 

Before getting into the depths of the Developer Relations concept, I wanted to give you a glimpse of what DevRel can actually do for you. Nexmo, now Vonage, is the prime example of DevRel’s positive impact. Within a year, the company had enhanced its profitability through DevRel.

A glimpse of the success attained through Developer Relations | Source: Nexmo

Such a success is not unheard of with Developer Relations. Now, you might be wondering how this could be possible. So let us get right into it.

In simple terms, Developer Relations is merely a job title; however, it is a job title that has become increasingly important in the technological business, where innovations from developers are the driving force. Developer Relations, also known as DevRel, can be described as a job that creates a connection between a company and the community. You should know that when I say community, I mean a specific category of people. Since DevRev pertains to companies, its community encompasses the employees, the customers and the prospective customers; some would say there aren’t many people left behind and they just might be right.

One area that Developer Relations concentrate on more than others is the contact with external developers. You must be wondering why, especially when these companies have so many internal developers with them and you are right to do so. For Developer Relations to do its job properly, external developers are integral. For the IT and tech sector, it is important to be in the know-how of what is happening in the market. Their internal developers cannot do that on their own, so external developers act like outside counsel for them. Remember I said something about community? External developers are at the heart of that community.

So, who benefits here?

The entire community because this is a concept that aims at strengthening the entire developer community. Having conceptualised in the eighties, it has come a long way from its Apple days. Being a proponent of technology, it allows you to learn everything you can, from coding to public speaking to new technology tools. Isn’t it great? 

It is not just me who thinks that Developer Relations is important for the community. Many influential personalities and Developer Advocates have voiced their perception of this job and all of them have a positive outlook towards it. Following are some thoughts of influential persons on DevRel as stated in The New Stack:

Lorna Mitchell, IBM Developer Advocate, emphasises on the power of words in DevRel. These words have a significant impact on the reader, their reach is unparalleled, unfettered by time and space. Opening a dialogue in the community becomes quite easy.

Michael Ludden, a program director and senior manager at IBM’s eminent Watson developer program strategy, explains DevRel as “a hybrid role that requires a unicorn to fill.” The title holder needs to be competent with software engineering, public speaking and community participation, thus the use of the word hybrid.

Quoting Phil Leggeter from Nexmo, “Developer relations is like the force - you can’t see it and can't feel it - you just have to believe it.” And this belief almost always pays off.

Jess Rose, Developer Relations Advocate for believes authenticity is important,if interactions between people are to feel real and hold value. According to her, the measurement of authenticity is indeed difficult, but taking care of yourself, slowing down the pace and focusing on really important things can make a difference.    

Now, let me tell you about the two essentials of Developer Relations. 

Its other name, that of Developer Marketing, will give you a hint. This is a job that essentially marries two very different fields and that are engineering and marketing. Since DevRel deals with only developers, you have to have knowledge about this. And DevRel also focuses on promoting the products, so marketing skills and that too great ones are pivotal for the job holder.

Who Comprises the Developer Relations team?

Developer Relations is indeed a job title, but it isn’t a single man’s job. It could be, if you happen to have all the necessary skills for it. The role of a DevRel is quite multifaceted, so it mandates a lot of different roles within it. 

Let us have a look at them.

The DevRel TeamDeveloper Evangelist

Yes, this term has a religious connotation, but in the business setting, it means the voice of the company and its causes. The role of a DevRel is nothing short of being an ambassador for the developers. So, an evangelist acts as the connection between the company and its developers, both in-house and outside, creating a buzz about their company and its products. To become an effective evangelist, 

  • you would need to be aware of the technicalities a developer faces, 
  • you would need to have excellent communication skills 
  • and you would need to be extremely social, this is so that you can build new connections and keep them satiated. 
Developer Advocate

This is the role that advocates the company’s platform to the outside developers, compelling them to make use of it. The end goal is to build a product that unifies the efforts of the entire community of developers with the internal team. External feedback, demos, sample codes are a few examples of the things a developer advocate would collect to ensure the product is as good as it should be.

Developer Experience

You must be familiar with User Experience and what it entails, right? Developer Experience or DX is somewhat similar to that, with the user being a developer. DX will let you know how good your product is and how well its API or SDK function. Developer experience is important because a good DX ends up becoming the talk of the town and your goodwill grows.

Developer Marketing

Marketing is also quite important for DevRev. It allows your brand to attract an audience of developers, which is what is needed for the growth of a technical company. Organising events, getting paid sponsors along with effective content and competent advocates are how you do marketing in the developer realms. 

An example of an effective DevRel team can be found in Google. Google has a global DevRel team that includes developers from all across the globe teaming up to build something truly inspiring. You can simply visit to get an idea, it fulfilling developer content is bound to impress you. From participating in forums and conferences to writing blog posts, API docs and sample apps, the DevRel team does all that it has to do and the constant buzz around Google is proof of their competence.

Why Does DevRel Need to be Capitalised?

The present world is being dominated by technology, with digitalisation overtaking every nook and corner of the technological markets; even the non-technical businesses are not totally distanced from this trend. So, with technology expanding at such a fast pace, developers have taken up an important role. Consequently, the need for Developer Relations has risen over time.

Let us understand the need a little more. The IT and tech companies are constantly developing new products and upgrading the existing ones. Have you ever wondered how they decide what should be done and what not? If you have not, then let me tell you that all of the developmental decisions in the IT and technology industry are taken by the developers, since their heart and soul lies with technical innovation. Their growing influence is why Developer Relations has become a trending vogue all across the world, as it allows companies to make sustainable connections with global developers.

DevRel has been consistently making efforts in opening a dialogue between companies and external developers and these efforts have only proven to be fruitful.

  • The DevRel team is able to make the target audience, being developers, aware about their company’s present products and future goals.
  • The awareness allows the developers to come into play through guidance and feedback and the DevRel team soaks up every word and implements all that can be.
  • When the DevRel is constantly in touch with the developer’s community, they often come across many talented developers and resultantly, recruit them to work in-house. A win-win for both.

Developer Relations is not a one-time job, it's a perpetual undertaking that continues to build trust and convince the end users to take up their company’s products.

The importance of Developer Relations  | Source: TechRepublicHow Does DevRel Come into Play?

Now that you have become familiar with DevRel and all of that it can do for you, it is time to understand how it can do all of that. Just having knowledge of a trending topic is not enough, you also need to be implementing it, and the implementation needs to be flawless. That is why I am here because the audience you will be targeting is a tough one to impress. 

So here are some of the most fruitful ways to luring and sealing the attraction of all the developers you target through Developer Relations, let us begin.

Understanding the developers needs 

DevRel is a trend that is for the developers, so understanding their needs becomes integral. So, whenever you are thinking about a topic that could interest them, stop and reevaluate your decision with the aid of a developer. You would have to involve actual developers because they would know and understand the needs better. Ask them to give you their concerns, ask them to check your work before posting, ask them to simplify something you did not get. At the end of the day DevRel is all about developers, so in order for you to do your job, you have to know what they want. And who better to ask then the developers themselves.

Getting trustworthy insights

As I have already mentioned more than once I believe, DevRel combines two very different worlds, that of marketing and engineering. So, you need to marry the best of marketing to the best of engineering. However, that becomes a problem when the best of marketing is something that the developers are fond of. The excessive use of superlatives is what marketers excel at and it is also what developers abhor. You have to let the product speak for itself, you need not use phrases like ”The best in this genre,” nobody believes that. And how do I know this, my constant contact with developers is one of the reasons. Your company must have several internal developers as well, go to them and ask for insights and change your marketing tactics.

Along with this, you have to know that you cannot get the technical stuff wrong EVER. So, when you think that you are out of your league with the technical jargon, go to a developer, ask him or her whatever it is you need and quote him or her verbatim. There is no chance of going wrong then because they are the experts. 

Enunciating the road map 

Developers are all of facts and figures, they do not need you to go around in loops, they would much prefer it, if you could come straight to the point and that too without exaggeration. So, when catering for the developer audience, focus on the road map they can follow and how it has to be done instead of the reasons to do so. This could be done through a guide of a kind, which would tell them all the things they need to know, for instance how a product is lacking in features and how it can be improved. This way they know what is needed of them and they will start working on it.

Making the developer feel important 

When you write for the developers, you have to make them feel like they are the centre of attention for you. A simple way to do so is to dedicate an entire section of your website to them, wherein, everything that you post, pertains to them. Such kind of action will also help in cultivating a sense of loyalty amongst the entire community. They would know that they can rely on you, simply because you have given them the importance they need.

Making yourself a part of developer’s community 

This one is probably the most important out of them all. A major of DevRel is building contacts with external developers. And you can only do that if you become involved with the community of developers. You do not really have to be a coder yourself to make that happen, rather if you have knowledge about what a coder actually does and how crucial his work can be, consider yourself qualified enough. Also, being a DevRel, you would continue to learn and grow.  

To be an active member of the community, you would need to attend developer events, where you can socialise and actually talk with developers and make contacts. Going on tech events and spending time with the tech guys is the only way the DevRel can do his job properly. Even in COVID-19, there were numerous virtual events for the developers, DrupalCon being one of the biggest. 

Apart from this, many companies have taken to social media to make the community connection all the more faster, although e-mails are also quite handy. Platforms like Facebook, Twitter, LinkedIn, Instagram and Snapchat, all act like the gateway to success in DevRel, since a vast majority of developers are active here. This is another tactic that the COVID-19 could not put a damper in.

Commanding respect with knowledge

More times than not, DevRel is a team, with knowledge, diversity and excellence in communication. If you have one person, who satisfies all of these, good for you. If not, you need to find people excelling at each of these. The DevRel team deals with engineers everyday and engineers are often not fond of non-engineers. So, you have to have the knowledge to command their respect. As part of the job, you could be asked to give your input on code or an API design and review the same, and without knowledge you cannot do that. So, the inclusion of engineers in the Developer Relations team is absolutely necessary, only then will the developers take it seriously.

The Crux of DevRel

So, what does the essence of DevRel come down to? If I had to choose three words to describe this trend, I would choose education, content and outreach. 

Developer Relations is a trend that is intent on building the company by educating its employees through in-house educational programs about the company’s products and its future goals. It is also about educating the customers by making them aware about what the company is all about through effective and meaningful content that they can find with ease. Lastly, DevRel is about knowing what the customers want and making that happen with the help of internal and external developers.

If you think about it, developer relations is not a very complicated job, at the heart of it, there is only one thing and that is ensuring the company’s technological developments never fail. That should not be too difficult, should it? I do hope our guide helped you in comprehending the trending concept.

blog banner blog image Developer Relations Developers Web Developers Blog Type Articles Is it a good read ? On

Chapter Three: Drupal 8/9: Media entities, private files and broken access control

Thu, 10/01/2020 - 03:20

Recently, I came across an issue where private files in media entities, that were embedded in a paragraph, were accessible by anonymous users. While a user could not get access to the page, access was allowed via direct URL to the file.

In Drupal 8/9, when a file is attached to an entity, it receives some assumptions regarding its general access. That access generally follows the permission access rules of the entity that it's attached to. While this has its benefits, and certainly made sense back in the days when files were directly attached to nodes, it can create a situation where a private file can be directly accessed because its parent entity type is publicly accessible. 

In my case, a paragraph type that allowed for embedding different media entities was set to be viewable by all. Even though the parent node of the paragraph was set to a private access control, the extra embed levels of paragraphs and media items created an access override. (Updated for 2020) So, When Do I REALLY Need to Upgrade From Drupal 7 (or 8)?

Thu, 10/01/2020 - 03:04

Two years ago, we had a blog post with the same title: So, When Do I REALLY Need to Upgrade From Drupal 7? A lot has changed in the past two years. In the world, of course, but also in Drupal.

Drupal 7 was released on January 5, 2011. It's nearly 10 years old and going strong!
Drupal 8 was released on November 19, 2015 which itself is nearly 5 years old!

Where do our legacy and most used Drupals stand? Read on...

Drudesk: Best Drupal 8/9 modules for intuitive website navigation

Wed, 09/30/2020 - 13:59

Good website navigation is the best way to provide an enjoyable user experience. To create intuitive website navigation on Drupal 8 or 9, you should use the appropriate website navigation modules.

As we have already mentioned in our previous blogs, if you want users to be comfortable using your site and find all the information they need, you should develop website navigation that would be easy for children to use.

Srijan Technologies: Learnings from Drupal Contributions: What mistakes we made

Wed, 09/30/2020 - 12:47
Our Drupal contributions history

Srijan has been part of the Drupal community for over 12 years. From very early on, we (Srijan) have been contributing to the Drupal project in multiple ways, from sponsoring nearly all DrupalCons since 2013, to regularly contributing code to core and contrib projects.

Third & Grove: What's Going On With Drupal 10?

Wed, 09/30/2020 - 08:26

Drupal 10 is targeted for release in June 2022, but why is it necessary so soon after Drupal 9, and what will be in it?

Kristen Pol: A first impression of Drupal 9 managed hosting providers

Wed, 09/30/2020 - 00:04

Image credit: Aaron Deutsch

I just started the process of preparing my Drupal 6 (!) site for migrating to Drupal 9. One of the first steps of my migration process was to figure out where to host my Drupal 9 site. Right now is on Pantheon. Yes, Pantheon supports Drupal 6! Maybe they don't want me to advertise that though. :)

In this post, I'll discuss my initial impressions of surveying some of the biggest Drupal managed hosting companies. If your favorite hosting provider isn't covered here, let me know and I might do a follow up post.

read more