Oct 16 2019
Oct 16

The topic of migration from Drupal 7 to Drupal 8 is getting hotter than ever. After all, there is already the ninth Drupal version on the horizon. The best way to prepare for it is to upgrade to Drupal 8 now. See why, and also discover a case study of migrating a career website to Drupal 8 performed by our team.

Why it’s high time for migrating your website to Drupal 8

Drupal 8 was released in November 2015, and Drupal 9 is planned for June 2020. All websites that are still on D7 are lagging a little behind, and soon this breach will be more and more noticeable.

Here’s why it’s worth migrating to Drupal 8 now:

  • This paves the way for easy and instant upgrades in the future. Drupal 9 is will be almost like the latest version of Drupal 8, with just a good clean-up from deprecated code and the introduction of the latest libraries.
  • Migrating your website to Drupal 8 as part of preparing for Drupal 9 is recommended by numerous experts. For example, Drupal creator Dries Buytaert pictured D7 with an abandoned rail track, while the D8 track leads to D9 and beyond, so “you will never have to change the tracks again.”
  • By migrating your site now, you are not wasting time but enjoying numerous and irresistible Drupal 8’s benefits for business. D8 is mobile-first, multilingual, open to integration with third-party apps, handy in content creation, respective of web accessibility standards, clean and efficient in code thanks to using OOP, Twig, HTML5, and so on.

Case study of migrating a website to Drupal 8 

Of course, we take care of migrating our customers. One of them is the international multidomain online store — JYSK. It has Danish roots and owns 2,740 stores in 39 countries across the globe.

JYSK international online store

All JYSK websites inside this huge multidomain “machine” needed to be migrated to D8. Today, we will describe one of them — the JYSK career website. Let this simple case study become one of our future blog series about migrating websites to Drupal 8!

JYSK career website

The website offers careers in various departments of the JYSK chain:

  • the store
  • distribution center
  • customer service
  • headquarters

Among the sections of the grid menu, there are also ones about the student programs, internship, JYSK values, and more.

JYSK career website menu

The position descriptions are accompanied by the stories of real people who work on them:

JYSK career website job description

For this website, we performed all the classic steps of migrating a website to Drupal 8

  • migrating the functionality
  • migrating the configuration
  • migrating the content

We would now like to emphasize the most interesting points in this particular Drupal 8 migration case. 

Database migration

During the database migration process, we used the Drupal 8 core Migrate module, as well as contributed modules such as Migrate Tools and Migrate Plus that extend the core migrate functionality.

To migrate the databases, including content nodes, users, user roles, and taxonomy terms, our development team created a custom module specifically for the JYSK job site migration.

The migration module is interesting because it approaches migration in terms of entity configuration. First, we create migration groups (for the nodes, users, taxonomy terms, etc.) and then create configuration for each subgroup (content type, taxonomy vocabulary, etc.). The plugin maps the Drupal 7 and Drupal 8 fields and is responsible for the field change during the migration.

Code rewriting

However, one of the most challenging steps was migrating the functionality. The job.jysk.dk website features were provided by a number of custom modules. They all needed a good rewrite to meet Drupal 8 standards.

Namely, Drupal 8 has many functions and APIs deprecated, which we needed to replace. And, all custom modules were rewritten according to the OOP (object-oriented programming) style adopted by D8. The eighth version also introduced the use of plugins, so we needed to perform code refactoring.


We used the contributed module Twig Tweak to change the page templates in accordance with Drupal 8’s new template engine — Twig. The module improved the development experience by offering useful functions and filters.

We rebuilt the main website’s theme on the basis of the Bootstrap theme. It builds a bridge between Drupal and the Bootstrap Framework — a powerful and intuitive, mobile-first front-end framework.

Migrate to Drupal 8 with us!

If you are still on Drupal 7, consider migrating your website to Drupal 8 now. No matter is your website is simple or complex, our Drupal team will smoothly and carefully upgrade it to Drupal 8, as well as help you prepare for Drupal 9.

Oct 03 2019
Oct 03

Your website’s pages live in the World Wide Web. However, not all of them and not always should be displayed to users just as they are. There are plenty of reasons to control how they are accessed and displayed. 

In this post, we explain why, as well as describe how your website can benefit from one of the most interesting Drupal 8 modules for user access and page display control — the Rabbit Hole.

Why is page access control important?

There are slight nuances of page access control, some of which may not be obvious at first glance. Let’s look at a few.

  • Website page access control enhances your website’s security by prohibiting the views of restricted pages. They may contain sensitive or personal information that should not be seen.
  • Being able to control page access allows you to create interesting access-based functionality (like subscription content).
Paid subscription page in Drupal 8
  • This takes care of your website’s attractive look. Sometimes there are “building blocks” of a page layout that should not be seen by users because, for example, they are not properly themed.
  • For similar reasons, some pages should be hidden from from indexing by the search engines, so page access control also helps your SEO. 

All these and many other tasks can be entrusted to the Rabbit Hole module in Drupal 8. You can always rely on our Drupal team for installing and configuring it on your website and taking care of all page access nuances. In the meantime, let’s take a tour at how the module works. 

The essence of the Rabbit Hole module in Drupal

The Rabbit Hole module in Drupal really stands out from other modules by offering interesting options of what happens when someone is viewing a particular Drupal page (or entity). 

Instead of displaying the Drupal entity, the module can:

  • redirect the user to another page (with the possible use of tokens)
  • show “Page not found”
  • show “Access denied”

This Drupal module’s name might remind you of Alice in Wonderland's story or the concept of parallel universes. The expression “go down the rabbit hole” often means getting into a surreal situation. All this makes sense — with the Rabbit Hole module, your Drupal entities exist but their display is different. 

A few common scenarios (now exactly from the Drupal point of view):

  • You want to grant or deny user access to entity types or specific Drupal entities based on user roles — for example, to display paid content to users with a subscription. Special user roles can be allowed to bypass the Rabbit Hole action.
  • You want to hide the full display of nodes that only serve as building blocks for a Views slideshow or other Drupal page. They also should not be indexed by Google.

So let’s take a closer look at its work and go down the rabbit hole a little bit.

How the Rabbit Hole module in Drupal 8 works

Rabbit Hole module installation

The Rabbit Hole is a complex Drupal module that works with different types of entities — nodes, taxonomy terms, users, etc. 

So, when installed, it offers a bunch of submodules to be enabled alongside the main module. For most common situations, i.e. for working with content, we need the “Rabbit Hole nodes” submodule enabled. However, it depends on the task.

Being able to control page access allows you to create interesting access-based functionality (like subscription content).

Intalling the Rabbit Hole module in Drupal 8

Rabbit Hole module configuration

Rabbit hole settings for an entity type

The module’s page display and user access control settings are found in the entity type’s “Edit” page. You can set the behavior as:

  • Page redirect
  • Display the page
  • Page not found
  • Access denied

After selecting the behavior and clicking “Save,” you can check the result by opening the node page in an incognito window. You cannot see the result as admin, because the admin has the default permission to bypass the Rabbit Hole action. 

Rabbit Hole module options in Drupal 8

The special “Page redirect” option

If the “Page redirect” option is selected, we can enter the redirect path or use available tokens. For the latter case, the Token Drupal module also needs to be installed. 

Using page redirect, we can, for example:

  • redirect the users to the specially created subscription page asking them to subscribe to view the content
  • use one of the tokens like [site:login-url] that will take the user to the login page showing them they need to register to view the content
  • redirect the users from the individual nodes that are part of the slideshow to the slideshow page itself or the homepage.
Rabbit Hole module page redirects in Drupal 8

Rabbit hole settings for an individual entity

On the same dashboard, you can also check or uncheck “Allow these settings to be overridden for individual entities.” 

With this enabled, Drupal Rabbit Hole settings are also found on the particular entity’s “Edit” page.

Drupal 8 Rabbit Hole settings for an individual entity

Rabbit Hole permissions

To give permissions for particular roles to bypass Rabbit Hole action or to administer its settings, go to People — Permissions.

For example, you can create the VIP user role who will be able to view the specific content type, while others will see “Access denied,” be redirected to a subscription page, or login page.

Rabbit Hole module permissions in Drupal 8

Use the best options for access control in Drupal 8 

There are no limits to how deep this rabbit hole goes. The most fine-grained scenarios of page display and user access control in Drupal 8 are possible with the Rabbit Hole module. 

Just ask our Drupal team to create them for you, configure the module, or develop custom modules for your specific ideas!

Sep 23 2019
Sep 23

The friendliness of Drupal 8 for content editors and website administrators grows every day. New handy features come thick and fast — updated Media Library interface, built-in drag-and-drop Layout Builder, media embed button in CKEditor, and so much more. 

Today, we are happy to announce another lucrative improvement — a new and modern administration theme Claro is supposed to come to D8.8 core! 

Why Drupal 8 needed a new administration theme

The idea of a new administration theme arrived as part of the Drupal team’s striving to make Drupal more competitive in everything. 

Drupal creator Dries Buytaert wrote that he had talked in 2018 to almost a hundred Drupal agency owners to discover their key stumbling blocks in selling Drupal. One of their common replies was about the admin interface having an outdated look. 

The admin UI theme, Seven, had been created back in 2008-2009 in the time of D7, with a few updates in D8. Since then, a lot of water has passed under the bridge and plenty of modern UI design trends have appeared.

There was also an admin UX study performed in 2018 when content editors where asked in detail about their impressions from working with Drupal and they suggested many improvements. According to the famous contributor who worked at this study group, Suzanne Dergacheva, Drupal 8 for content editors is “notoriously intimidating” when it comes to newbies. 

So the great minds of the Drupal community agreed that the admin UI really needed a good brush-up and a new, clean, and modern theme.

The Claro theme in Drupal 8: a good core candidate

One of the results of the above-described decisions was the appearance of the Claro theme. It is a clean, concise, responsive theme with a modern look and an enhanced level of web accessibility. It is being built on top of the Seven theme. 

New Claro admin theme in Drupal 8.8

It is now a contributed project, but there is a proposal to add the Claro theme to Drupal 8.8.0 core as an experimental theme.

The development is in full swing, with the project’s new version, alpha 5, released in September 2019. The maintainers actively welcome any feedback and bug reports about the new theme to brush it up. 

Claro theme principles and features

Here are some features of Claro, both completed and planned:

  • a new, colder color scheme
  • higher contrasts
  • touchscreen readiness
  • the Quick Edit, Toolbar, and Contextual Links components
  • redesign of content pages and all their components
  • redesign of the file and image upload widgets

The Claro theme is built in accordance with the Admin UI & JavaScript Modernisation Initiative. It strictly follows the new Drupal 8 admin theme design guidelines:

  • precise shapes and good contrasts
  • clear hierarchy and relations between elements
  • the clear purpose of each element
  • rational use of white space
  • optimal readability
  • emphasis on what matters
  • visual clues
  • friendly and cheerful colors

and more.

New admin theme Claro expected in Drupal 8.8

Claro at the Drupal Usability meeting

The theme is receiving special attention at the Drupal Usability meeting, according to Gábor Hojtsy’s tweet. The meeting experts are asking to get more feedback, so it looks like the new project is going to be polished to perfection.

Gábor Hojtsy about the new Claro admin theme

Claro as part of the top Drupal 8 distribution

Claro is already having a good test drive because is it part of the most popular D8 distribution, or installation kit — Lightning

By the way, speaking about Drupal 8 for content editors, we must admit Lightning is a distribution well-tailored to their needs and great for media and publishing websites. It is actively used by almost 3,000 websites. By itself, Claro is installed on 500+ sites today.

New admin theme Claro is coming to Drupal 8.8

Use the benefits of Drupal 8 for content editors with us!

As you see, the present and future features of Drupal 8 for content editors are very lucrative. To keep up with them, you can contact our development and support team will smoothly update your website to all new releases. 

Sep 11 2019
Sep 11

The news about the forthcoming Drupal 9 release in June 2020 becomes the hottest topic in the Drupal world. Website owners and developers start planning for Drupal 9. One of the key points in this plan is to prepare for Drupal 9 with the Upgrade Status module to make sure the site uses no deprecated code.

We are glad to announce that there is one more big advancement in the Drupal 9 readiness field. The newly released 8.7.7 version introduced the core versioning support. It allows developers to declare their project compatibility both with Drupal 8 and Drupal 9. More details are coming right now.

Drupal 9 readiness: how are things going for modules?

The community is gradually building D9 in D8 while deprecating older APIs and functions and supporting new releases of third-party dependencies. Among examples are the drupal_set_message() function deprecation or the Drupal 8.8.x-dev compatibility with the new Symfony 4.3.3.

Being up-to-date with all that means complete and instant Drupal 9 readiness for modules and themes. And it's great to notice that more contributed projects are D9 compatible! 

According to Gábor Hojtsy, a famous Drupal contributor and product manager, their number increased from 48% in March to 54% in July 2019

Core version requirement key introduced in Drupal 8.7.7!

As of Drupal 8.7.7, providing Drupal 9 readiness reaches a new level. So if anyone asks what’s new in Drupal 8.7.7, it’s the core versioning support that comes to mind first. Gábor Hojtsy devoted a special blog post to describe this innovation and called it “huge.” 

The key point is that all module and theme developers will need to add one more line to their info.yml file — the core_version_requirement key. 

Using it, developers can specify the multiple core versions their projects are compatible with. For example, they can mark both Drupal 9 readiness and compatibility both with the eighth version. Here is how the lines might look for such a project:

name: Module Name
type: module
core: 8.x
core_version_requirement: ^8 || ^9

The new key allows being even more specific about the version compatibility by specifying minor versions (8.7.7, 8.8.3. etc.), which was not possible with the traditional “core: 8.x” key. 

new feature in drupal 8 7 7.jpg

If a project only works with the 8.7.7 version or later, the developer will need nothing but the new key to mark its D9 readiness:

name: Module Name
type: module
core_version_requirement: ^8.7.7 || ^9

However, versions older than D8.7.7 do not support this improvement. So if a project is also meant to work with them, the traditional “core: 8.x” key should be listed along with the new one in the info.yml file.

Let your website’s Drupal 9 readiness be ultimate!

With so many opportunities for full Drupal 9 readiness, it’s time to start. Our development and support team will assist you in:

  • updating your site to version 8.7.7 and always keeping it up-to-date with fresh releases
  • checking your website for deprecated code and giving it a cleanup
  • marking the Drupal 9 readiness of your projects according to the newly introduced requirements

Contact our developers to keep your website prepared — and let it fly swiftly and effortlessly to the ninth version in June 2020!

Sep 05 2019
Sep 05

We love to say that Drupal 8’s logo resembles the infinity sign, which means infinite opportunities for websites. It includes plenty of ways to make your website user-friendly and engaging. 

One of the techniques used in this area is infinite scrolling, which can be implemented through a nice Drupal 8 module called Views Infinite Scroll. Let’s see what infinite scrolling is and how to design it with the help of this Drupal 8 module. 

A glimpse at the technique: what is infinite scrolling? 

Infinite scrolling means continuous content uploading as the user scrolls down the page. This can optionally be accompanied by the “load more” button at the bottom of the page, which infinitely uploads the content upon click.

Endless pages make the user’s interaction with the website more natural because it is convenient to not have to click on the next page. This technique is especially popular with content-rich websites, social networks, e-commerce stores, etc. It is incredibly useful for long pages and mobile navigation. 

However, infinite scrolling should be used carefully so it does not annoy the user, distract their attention from their main goal, or block the calls-to-action. For example:

  • If the footer “disappears” together with your contacts every time your user scrolls, consider using a sticky footer or move the key links to the sidebar. 
  • Try the “load more” button to give the user more control and never block anything.
  • You can also add more usability by letting the user choose the number of displayed items before hitting “load more.”

All this and more is provided by the Views Infinite Scroll module in Drupal 8, which we will now move on to.

Introduction to the Views Infinite Scroll module in Drupal 8

The Drupal 8 Views Infinite Scroll module works with the Drupal Views. This allows you to present any Drupal data you wish — collections of images, articles, products, lists of user-profiles, or anything else.  

You can:

  • let the content be infinitely uploaded upon the scroll
  • add a “load more” button with any text on it
  • expose some viewing options to users

The Views Infinite Scroll module is available both for Drupal 7 and Drupal 8. However, the Drupal 8 version has a special bonus — it uses the built-in AJAX system of Drupal Views and requires no third-party libraries. In the next chapter, we will look more closely at how it works.

How the Views Infinite Scroll Drupal module works

Installing the module

We start by installing the Views Infinite Scroll Drupal module in any preferred way and enabling it. In our example, we are using its 8.x-1.5 version.

Installing the Views Infinite Scroll module

Creating the Drupal view

Now let’s prepare our Drupal view with a few elements in it. In our case, the grid view will show two columns of car images. 

When creating the page, we choose the “create a page” option. The default “Use a pager” and “10 items to display” settings can remain unchanged so far — we will take care of this in the next step.

Drupal 8 Views

Setting up the Drupal Views infinite scrolling

On the Drupal Views dashboard, we select the Pager section and open the “Use pager — mini” option.

Setting Drupal 8 Views pager to infinite scroll

There, we switch the pager to “Infinite Scroll.”

Setting Drupal 8 Views pager to infinite scroll

Next, we configure the settings for the Infinite Scroll. We set the number of items per page to 4.

And, most importantly, we can check or uncheck the automatic loading of content. If we uncheck it, there will be a “load more” button, for which we can write our custom text. “View more luxury cars” sounds good for this example.

Configuring infinite scroll in Drupal 8 Views

After saving the view and checking the page, we see 4 cars on page with a nice “View more luxury cars” button. Success!

View more button in Drupal 8 Views

Exposing choices to users

In our Infinite Scroll settings, there is the “Exposed options” section. By checking its options, you will allow users to:

choose the number of items displayed
see all items
specify the number of items skipped from the beginning

Exposed options in Drupal 8 infinite scroll

With these applied, our collection now looks like this.
Infinite scroll in Drupal 8 Views with exposed options

Additional CSS tweaks will make the view look exactly the way you want as far as colors, fonts, distances between elements, etc.

Apply infinite scrolling on your website

Make your customer satisfaction infinite through the use of the infinite scroll technique! So if you want to:

  • install and configure the Views Infinite Scroll module
  • customize the output with CSS
  • create a custom Drupal module for your ideas in scrolling
  • design the scrolling effect from scratch using the latest techniques

contact our Drupal team!

Aug 27 2019
Aug 27

Congrats, Drupal 9 release is planned for June 2020! In the meantime, you should ensure that your platform is ready for the upgrade. Although it should arrive easily and smoothly, your website still needs a plan.

The team at WishDesk explains how to get ready and plan for Drupal 9.

What should I know about Drupal 9?

Dries Buytaert, the Drupal creator, announced the planned release of D9 for June 3, 2020. This new version is developed in the same codebase as D8, which means that migration from Drupal 8 to Drupal 9 will be painless. What about D7 and D8? They will reach their end-of-life in November 2021. This means that there will be no official support and no more updates for these versions.

plan for Drupal 9

We recommend upgrading to Drupal 9 by November 2021.

How to plan for Drupal 9 if you are using Drupal 8

If you are using D8 and keep it updated, the migration will be no harder than a minor release. When planning for Drupal 9, make sure that all your modules are updated and deprecated code is removed from the codebase.

Why will migration from Drupal 8 to Drupal 9 be effortless?

  • there will be no need to rewrite the whole code for D9
  • regular D8 updates will keep your platform up-to-date and ready for migration
  • D8 modules will be compatible with D9

How to prepare for Drupal 9 if you are on Drupal 7

Things are more difficult for those whose website is still built on D7. We strongly recommend starting the upgrade process now if you want to have fewer problems when planning for Drupal 9. There are numerous reasons to upgrade to D8:

  • better development experience
  • powerful layout building
  • easy upgrades
  • improved media management
  • improved theming experience
  • decoupled content delivery
  • improved performance
  • and more!

Although the best option for D7 website owners is to migrate to Drupal 8, you can contact a web development company for support of your Drupal 7 website even after the official end-of-life.  

Plan for Drupal 9 with WishDesk!

Get ready for Drupal 9 with the web development specialists at the WishDesk team! No matter what version of this CMS you are using now, we will help you plan for Drupal 9, as well as perform the migration process effortlessly. Just contact our experts!

Aug 08 2019
Aug 08

If you have a local business — a restaurant, a bar, a dental clinic, a flower delivery service, a lawyer's office, or some other business — you will benefit immensely from a strong online presence. In this post, we will discuss why Drupal 8 is a great choice to build a local business website. Read on to see how numerous Drupal 8’s benefits will play in favor of your local business.

Some stats about why your local business needs a website

Local businesses once used to rely on word-of-mouth marketing. But the new digital era has changed the game. Customers widely use local Google search to find places, services, or products, they trust online customer reviews, and otherwise rely on the Internet for their decisions. 

So consider these stats about how things are going for local businesses in the digital world:

  1. Users rely on search engines for finding local information. According to Google's study, 4 in 5 people do this.
  2. Local searches are also very goal-oriented. The same Google’s study says that 50% of users who performed a local search on their smartphones visited the store within the next 24 hours. 
  3. Mobile local searches are growing like crazy. According to Statista, the number of mobile local searches are forecast to reach 141.9 billion in 2019 compared to 66.5 billion in 2014. At the same time, the number of desktop searches will drop slightly (62.3 and 66.5 billion, respectively).
  4. Smartphone shoppers love local search. Statista also shows that 82% of smartphone shoppers in the US have used their device for local search with the “near me” keyword as of 7/2018.
  5. Customers read reviews for local businesses. According to the study by BrightLocal, 86% of people do this.

Reasons to build a local business website on Drupal 8

  • SEO-friendliness with plenty of useful modules

First of all, local businesses shouldn’t miss their unique opportunity — they need to make the best of SEO. Google has special approaches to local search. When users search by adding a city name or the “near me” keyword, Google lists the best results near the top of the SERPs in a variety of rich ways. Among them:

  1. the Knowledge Panel
  2. locations on the Google Map
  3. carousels with images, news, reviews, etc.

Moreover, users are able to get all the necessary information like your business hours, get your contacts, read a review, get direction, book an appointment, and so on, without even clicking to your website (zero-click SERPs).

Local Google search on a mobile phone

How to get to these results? Among the recommendations are:

  1. provide detailed information in Google My Business listing
  2. have an optimized Knowledge Graph for your website
  3. optimize content using local keywords
  4. optimize content so it fits Google’s rich snippets
  5. and, of course, follow overall general best SEO practices 

Here is where the Drupal 8 CMS can be your very helpful assistant. In addition to being SEO-friendly out-of-box, Drupal 8 has a wealth of useful SEO modules for various purposes. They include:

  1. SEO Checklist
  2. Metatag
  3. XML sitemap
  4. RobotsTxt
  5. Real-time SEO
  6. Pathauto
  7. Redirect
  8. Google Analytics

and many more.

  • Content easy to manage

Unique and relevant content, regularly updated and optimized with local keywords is one of your most important local SEO secrets. The richer the content is, the richer it looks in Google local search results. In addition, trimming your content to fit Google’s rich snippets is the key to optimizing your website for voice search

In Drupal 8, it is easy to create, edit, and present content in attractive ways. Drupal 8 offers you:

  1. quick edits directly on the page
  2. the Media Library to easily enrich your content with images, videos, and audios
  3. handy content previews
  4. drag-and-drop page layouts with Layout Builder
  5. Drupal Views grids, slideshows, and carousels for the attractive content presentation
  6. content revision history
  7. mobile-friendly admin interfaces
  8. content moderation workflows

and much more.  

Media Library in Drupal 8
  • Mobile optimization out of box

In addition to the above mobile statistics, we have a few more for you. The mobile share of organic search engine visits has reached 59% in 2019, versus 27% in 2013. So your successful local business absolutely needs a mobile-friendly website.

Here is where Drupal 8 wins hands down. It has been built around a mobile-first approach. The CMS features built-in modules for creating responsive web design — the Responsive Image and the Breakpoint. 

The responsive web design technique allows your website pages to adapt to any user’s screen by showing a different layout. The page elements resize, change their position, or disappear to provide the smoothest viewing experiences for everyone. 

  • Multi-language to attract more guests

Let’s suppose you run local business in your country in your local language. Consider adding English as an international language or another language based on your touristic audience. See how you can attract your city guests as they use Google search.

Drupal 8 is the best option for multilingual websites and allows you to easily add as many languages as you wish. Drupal 8 supports a hundred of them out-of-the-box with the interface translations included. 

Thanks to Drupal 8 Multilingual Initiative (D8MI), Drupal 8 has four powerful modules responsible for every aspect of translation. 

  • High accessibility standards

According to the CDC (Center for Disease Control and Prevention), 26% (1 in 4) adults in the US have some form of disability. This a quarter of your potential customers. Moreover, they are the ones who may need your local services more than others — for example, local delivery.

To be accessible to all users without barriers, your website should adhere to accessibility standards. Drupal 8 focusses on them and offers advanced accessibility features including the use of WAI-ARIA attributes, accessible inline form errors, aural alerts, obligatory ALT text for images, and much more.  

  • Presence in multiple channels

Local businesses often benefit from the digital presence in multiple channels — imagine, for example, a pizza delivery mobile app connected to your website. 

Drupal 8 offers amazing opportunities to exchange your website’s data with third-party applications. It has five powerful built-in modules for creating REST APIs and sharing Drupal data in the JSON, XML, or other formats needed by the apps. 

  • Easy social media integration

It’s no longer possible to successfully manage a business without a social media presence. Drupal 8 allows third-party integration with any systems, and social networks are not an exception. 

It is incredibly easy to add social media icons to your website pages, provide social share buttons for your content, embed social media feeds, and much more. Social media modules in Drupal 8 are very numerous and useful. 

Among them, Easy Social, AddToAny Share Buttons, Social media share, Social Media Links Block and Field, and many more. In addition, there are network-specific modules like Video Embed Instagram, Pinterest Hover button, Facebook Album, and plenty of others.

Social media posts can also be embedded in your content using the Drupal 8 core Media module as a basis. 

Build a local business website on Drupal 8 with us!

The above reasons to build a local business website on Drupal 8 are just a few of a thousand. Contact our Drupal team and let’s discuss in more detail how we can help your local business flourish!

Jul 29 2019
Jul 29

Good images can be your website’s best friends if you treat them well. But they can be your website’s enemies if you have never heard about image optimization. 

Happily, there are many useful optimization tools. The 8th version of Drupal has a number of great ones out-of-box. This is one of many Drupal 8’s benefits that make website owners want to upgrade to Drupal 8.

So let’s talk about the reasons to optimize images and the ways to use the image optimization in Drupal 8 via the core features. 

Why image optimization is vital

  • Optimized images do not overload your website and significantly increase its performance compared to that with “raw” ones. Optimization saves precious seconds of your user’s browser loading time.
  • Conversions are potentially increasing because users do not leave a slow website. That’s why great attention is paid to e-commerce product image optimization. However, the ability for users to reach their goals is vital for every type of site and business.
  • Image optimization with mobile devices in mind significantly boosts your audience.
  • It is beneficial for SEO because search engines consider website speed as a ranking factor. Properly formatted images also have more chances to show up in image search results.
  • Automatic optimization will save a lot of your editorial staff’s work on content moderation.
  • Finally, needless to say that your customer satisfaction and brand reputation wins from fast-loading and trimmed visual assets. 

Image optimization in Drupal 8 core at a glance

Drupal 8 has the image styling feature out-of-box that allows you to trim original images for various scenarios. All uploaded images will be automatically formatted in the specified ways.

For example, if all users upload profile pictures, there will be no “chaos” in their dimensions. You can “ask” Drupal to show their thumbnails on the list of users, the pictures of specified sizes on the account page, and so on. 

To trim the original pictures as part of optimization, Drupal 8 applies effects such as scale and crop, resize, rotate, and more. 

It is also possible in Drupal 8 to create responsive web design and show different image styles according to device dimensions. You can have high-resolution Retina images and small ones for mobile devices. All this is created by Drupal 8’s built-in modules Responsive Image and Breakpoint.

You can always entrust image optimization in Drupal 8 to our Drupal developers, so all your visual assets are optimized for all use cases and all devices.

Drupal 8 image optimization at a closer look

Creating image styles

Let’s imagine someone uploads a profile picture with large dimensions and plenty of extra space.

large image to be optimized in Drupal 8

In terms of optimization, the scaling and cropping could be perfect here. And we can apply it automatically to all our Drupal users’ pictures. 

In Configuration — Media — Image Styles, we see Drupal 8’s default ones (“thumbnail,” “medium”, and “large”) and can add any others. So we:

  • create an image style and call it “User picture”
  • select the “scale and crop” effect for it
  • click “add” and “save”

Creating an image style in Drupal 8

When we edit this style, we can choose the width and height, as well as the part of the picture to retain during the crop. A good default is the center.

Specifying dimensions in Drupal 8 image style

Assigning image styles to use cases

So let’s use the newly created “User picture” style as a standard for user accounts. The styles can be assigned to an image field wherever it appears — in content types or their particular view modes (e.g. article teaser), in Views (e.g, a collection of articles), and so on. 

In our case, this is the “Picture” field in the user account (Configuration — People — Account settings — Manage display). Next to the field, we click on the cogwheel and select the “User picture” style.

Assigning Drupal 8 image style to image field

And now our user Spiderman will have his picture scaled and cropped to 400х400, and the same automatically applies to all other user pictures, old or new. A nice optimization!

Image optimization for user pictures in Drupal 8

Providing responsive design

Trimming the pictures to 400х400 looks pretty nice, but all devices are different. To have different styles for different device dimensions, developers enable the Responsive Image module and also use the Breakpoint module in Drupal 8 core.

We specify the breakpoints (or “turning points” in device dimensions) at which Drupal 8 will start to show a different image style. We do it in the theme’s breakpoint.yml file. Thanks to this, all devices show the picture well.

When the breakpoints are ready, we create a responsive image style in Configuration — Media — Responsive Image Styles, select the name of the theme in “Breakpoint group,” and attach image styles to breakpoints. The final optimization accord is assigning the responsive image style to the image field. 

Let’s optimize your Drupal 8 images

Image optimization in Drupal 8 is organized perfectly. D8 is equipped with user-friendly interfaces, but at the same time the optimization process looks a bit tricky to non-developers, especially in the responsive design part.

So our Drupal team is ready to do all the necessary optimization on customers’ websites. To do this, we can use Drupal 8's core capabilities or other tools from our large developer’s arsenal. 

With us, you can also migrate to Drupal 8, which has image optimization and responsiveness as a priority. 

Enjoy the benefits of having your images optimized!

Jul 18 2019
Jul 18

We love to say that Drupal has modules for absolutely everything. Some modules are simple but still important because they cover specific details in the website’s work. They are like the missing pieces of the puzzle that makes your website more user-friendly, secure, reliable, and so on. One of them is Registration Confirm Email Address, which that we will describe today.

What is the Registration Confirm Email Address module for?

The Registration Confirm Email Address module is meant to create an extra field in the user registration form. As you might have guessed, this field asks users to confirm their email address during registration. They type the address twice, so they are protected against a misspelling or other error.

email confirmation field

Everyone’s happy — the users are not missing out on important emails, and the marketers are happy twice! ;) However, it’s much more than about marketing, because correct email addresses can be really crucial in different scenarios. They might need to manage their user cabinet, keep track of orders, and so on.

Who created the module?

We are happy to say that our Drupal developer knyshuk.vova is the co-owner of the Registration Confirm Email Address module. Together with the owner montesajudy, they have made it easy to confirm email addressess on Drupal websites.

Our parent company InternetDevels and our country’s Drupal Ukraine Community are listed as supporting organizations for the Drupal 8 branch of the module.

What makes the module special?

The Registration Confirm Email Address Drupal module extracts the email confirmation feature from another module — LoginToboggan. The latter is a complex module that offers numerous modifications to the Drupal login system.

However, if you only need the feature to confirm email address, you can install the Registration Confirm Email Address module instead of using the complex LoginToboggan module.

Having only the features you need, nothing less and nothing more, is good for usability and does not overload your Drupal website.

A closer look at the module’s work

1. Enabling the module

First, we install the module and enable it on the Drupal website.

enabling registration confirm email address drupal module

2. Enabling the option to confirm email address

After the module is enabled, we can select to use its functionality at admin/config/people/accounts. Under the “Confirm email address”, you need to check "Use two e-mail fields on registration form."

enabling option to confirm email address on drupal website

3. Creating test user accounts

When it’s configured, we can test the result by trying to create a Drupal website user account. As we see, the registration form now requires the user to retype the email address field. It says “Please retype your email address to confirm it is accurate.”

confirm email address field on drupal user registration form

Use the desired registration features on your website

Our Drupal developers are ready to help you install and configure the Registration Confirm Email Address module on your website, or select other modules in this sphere. If there is no desired module available, we will create a custom one for you that will work exactly as you wish.

Let your website’s registration process fully reflect your requirements, and make you and your users happy. It’s easy with our Drupal team!

Jul 09 2019
Jul 09

Our great “drop” keeps moving to the future. While we are enjoying Drupal 8’s benefits, it’s already time to start preparing for Drupal 9. And every single contribution makes Drupal move faster and get better! 

We were interested in what Drupal experts and contributors think about Drupal. So we decided to ask 10 of them 3 questions in a blitz interview. We are very grateful to each of them for their answers and happy to share them with you.

These experts work with Drupal every day, maintain big or small Drupal modules, fix issues, speak at conferences, take part in code sprints, or mentor younger talents. Each of them contributes in their own way, but they are all united by the fact that they love Drupal and know it from the inside. This makes their thoughts especially valuable. So let’s go.

What Drupal contributors say about Drupal

Matt Glaman (mglaman)

  • What do you think is the greatest Drupal benefit?

The greatest benefit using Drupal is the community and the opportunities the community brings. The community is not just the people building Drupal but all of the businesses using and building with Drupal — from freelancers, to agencies, to clients. Once I started working with Drupal, the community has opened so many doors. 

Freelancing on the side brought me to DrupalCamp Atlanta, my first Drupal event — ever. I got hooked. Eventually attending the Milwaukee meetup and making connections led to a referral which let me move on from my agency work to a company building a web hosting platform using Drupal. Through active contributions I ended up with an offer to join Commerce Guys, now Centarro, and am looking forward to marking my fourth year with the company.

Through Drupal I have had the pleasure of making friends across the United States and the world. I have traveled to places I never imagined I would be, nor that I would have been able to visit Europe. Working with Drupal has changed my life and provided some amazing experiences.

  • Do you have a favorite Drupal module?

I am biased, but my favorite module is Drupal Commerce. My first Drupal site was an e-commerce site and I installed Commerce Kickstart. Drupal Commerce has been my point of reference for code since my earliest days. There is always an example for some kind of use case or problem solved.

Developing Drupal Commerce also provides interesting challenges. It has driven development of various popular contributed modules (Address, Profile, Entity, Inline Entity Form in Drupal 8 alone).

  • What do you expect from Drupal in the future?

I expect Drupal to become the flagship open source CMS used for robust experiences. We are going to move up in the market and lose some users. But we are going to gain more at the same time. Drupal needs to — the bottom market is being taken over by static site generators, not just WordPress or Squarespace. 

There also aren’t many open source eCommerce + CMS options out there. I am excited for the future of Drupal and Drupal Commerce for a fully integrated content, marketing, and ecommerce package.

Jacob Rockowitz (jrockowitz)

  • What do you think is the greatest Drupal benefit?

Many people would say "Community", but I feel that the community's "Collaboration" to create great software is Drupal's greatest benefit.

  • Do you have a favorite Drupal module?

The module which I have installed on every single Drupal site I have ever built is Honeypot, which mitigates spam form submissions using the Honeypot method. It is a reliable module that does exactly what it is intended to do, with great support from Jeff Geerling (geerlingguy) and the Drupal community.

  • What do you expect from Drupal in the future?

To accomplish some of Drupal's ambitious goals and initiatives, we are going to completely rework some old, outdated APIs and code. While improving or redoing Drupal APIs, I am optimistic that the Drupal community can collaborate and devise solutions that impacts and solves problems and challenges affecting all Open Source projects. More organizations will have to step in to lead and fund different initiatives to help make Drupal and Open Source more sustainable.

Mateu Aguiló Bosch (e0ipso)

  • What do you think is the greatest Drupal benefit?

It's difficult to choose one, but I think my favorite feature is the flexible yet robust way Drupal allows you to define any data model. It's the best content modelling tool for a CMS I have tried or heard of.

  • Do you have a favorite Drupal module?

There are many fantastic modules out there. All serve a specific purpose. My favorite is the one I need at any given time.

Among the ones I wrote, I have devoted a lot of time to JSON:API, but now that one is in core I'm turning my face towards Simple OAuth.

  • What do you expect from Drupal in the future?

To stay relevant for 20 more years. For that we need to make an effort to become more multi-channel and less web-specific.

Nick Veenhof (Nick_vh)

  • What do you think is the greatest Drupal benefit?

The greatest Drupal benefit is the ecosystem that is thriving around it. It is a massive pile of code snippets and working proof of concepts that you can take inspiration from, and on the other hand it is full of really stable, mature modules to build your base application on. The fact that it is can output not just html but also json for every resource is mind-blowing.

The reason why I stayed with this technology, and it sounds like a cliche, is the community. I’ve been involved in the Drupal ecosystem for over 12 years and it is has been a guide in my life. I started in Belgium and was welcomed in this community. Not much later I moved to Spain and was welcomed with the same open arms as I encountered before in Belgium. I repeated this pattern 2 more times in Portugal and Boston and from all these encounters I made quite some good friends. Not only in the community events but also as colleagues.

Drupal not only stays relevant when it comes to technology, it also thrives because there is more to it than technology. This is unique.

  • Do you have a favorite Drupal module?

I do not have a favourite module but I have a favourite ecosystem within Drupal. If you look at my profile you will see a pattern arise and that is Search. I did my Master-thesis around Drupal and Solr and if you look deep enough in my github account you can still find some gems in there. I’ve helped with upgrading Search API and Search Api Solr and all others to Drupal 8 and it is dear to my heart. I love the interoperability that it offers you to connect Drupal to Solr but also to connect external datasources to Drupal. It acts like a gate that reaches way beyond just search. Due to this reason and the people that have been crucial in this ecosystem this set of modules are my favorite. Also, not to forget, because of these modules I’ve been involved early on in Drupal 8 and got ahead of the curve in terms of knowledge and gave me a boost in my career for sure. I can recommend everyone to not just have a favorite module but to actively participate in an ecosystem or a specific module. 

  • What do you expect from Drupal in the future? 

My expectations are that extending Drupal for Content Editors/Marketeers will have to become a lot easier. Automatic updates are a massive pain but will have to be solved someday for Drupal to break out to the masses. What I think is that site builders can somehow have access to an App-Store’ish thing to more independently add functionality to their website. This will be supported by either a DIY solution or by companies like Dropsolid, Acquia or others. The work that is being done for the automatic updates, or even the work that is in the works from the association (Drupal Steward) leans very much towards these mechanisms already. Automatic updates first, adding of functionality next.

Balazs Janos Tatar (tatarbj)

  • What do you think is the greatest Drupal benefit?

“Come for the code, stay for the community.” After being in the Eastern part of Europe, visiting DrupalCamp Belarus and right after the DrupalCamp Kyiv ‘19 conferences, I couldn't be more happy to see how local communities make this saying an unquestionable truth. Sometimes people don’t fully understand what is written in the code, because of having less experience or just simply being a newcomer on the field: the Community behind Drupal is one of the strongest arguments that we always can use when promoting the project and involving newer pair of eyes and hands.

For me personally, working in the Mentoring Team, helping first timers to step up and start their contributions, guiding experienced ones to mentor others and supporting event organizers to shape a ‘Contribution day’ at their local camps always give me the joyful moments.

Earlier this year we started to promote mentoring activities by asking local events and their contributors who help others doing dev or non-dev contribution to the Drupal project to step up and let the Community know what did the do! In the Mentoring project in drupal.org, we have dedicated issues for all Drupal events this year. One of our goals is to get in touch with mentors who we might not yet know personally and hopefully meet them at DrupalCons, being part of the Mentors and have a truly unique experience when we all show our passion: Staying for the community.

  • Do you have a favorite Drupal module?

It’s a quite tricky question :)

Being not a coder for a while, but a security researcher, helping the Drupal Security Team with reporting issues and also acting as a regular speaker, wearing the (apart of many others) hat of a provisional member, my favorite Drupal modules are the ones that have a stable release and hosted on drupal.org.

You might ask why? It’s easy to answer: These are the contributed projects that have coverage by the Drupal Security Team.

Whenever someone finds a vulnerability in them, it’s going to go through a procedure and will be released in a coordinated way, one of the coming Wednesdays. Out of the security team members, the reporter(s) and the maintainers of the project, no one else know about the issue before it gets publicly disclosed, following our Disclosure Policy.

Apart of having a few contributed modules where I’m the maintainer (everyone loves their own children, right?) I would highlight the modules where I’ve reported issues and say thanks to all maintainers who helped fixing vulnerabilities and acted super professionally in the private queue — it’s never a blaming game when there is a security bug in a contrib but a great possibility to learn how it could be fixed in a secure fashion.

So overall, I would say my favorite Drupal modules are where I could have been involved to make them more secure: Facebook Like Button, Skype status, Yandex.Metrics, Mosaik, Cloud, bootstrap_carousel, Feedback Collect, Node feedback, ComScore direct tag, Taxonomy Term Reference Tree Widget, FileField Sources, Entity Reference Tab / Accordion Formatter, SVG Formatter, Entity Delete, XML Sitemap, PHP Configuration, NVP field, AddToAny Share Buttons and Back To Top - Thank You All to be responsive and kind with me during the period of remediation and even later, meeting in real life at Drupal events!

  • What do you expect from Drupal in the future?

I see many local communities that work hard to be recognised and their core teams to show why they love Drupal.

The Community Working Group (CWG) states they are present to maintain a friendly and welcoming community for the Drupal project (source). They appreciate the work that individuals do for the Community by maintaining the Aaron Winborn Award. This year I had the honor to give the Mentoring t-shirt to Leslie Glynn at our Mentor Booth at DrupalCon Seattle before she got the Award and it made my eyes wet seeing her on stage the next day. She is a perfect example for all of us about humanity, respect, kindness and overall commitment to the Community. Congrats and Thank You, Leslie!

Apart of many successful stories that I see in the Drupal project, one of the best is to see people stepping up and helping each other to contribute. AmyJune Hineline is one of the many Mentors who is not a technical person, shows us an awesome dedication to the Drupal Community. It makes me believe that the future of Drupal depends on individuals and their activities: come and be part of it at DrupalCon Amsterdam this October and “Get ready for another level of awesomeness!”.

Bram ten Hove (bramtenhove)

  • What do you think is the greatest Drupal benefit?

Being able to serve both site builders and developers. This is a tough balance to maintain, but Drupal seems to be doing this quite well.

On one hand site builders are able to create Drupal sites that are relatively easy (once you get the hang of it) to set up and configure. And on the other hand there is a lot of freedom and extensibility available for developers, making it a great choice for many organizations.

  • Do you have a favorite Drupal module?

I like the Group module. I’ve been using it extensively over the last years and I like how the architecture is designed. It’s also good to know that the maintainer, Kristiaan Van den Eynde, has been working on some core issues to make the module much better. These core issues should also have a larger development impact.

  • What do you expect from Drupal in the future?

There are a few features I’m eager to see added to Drupal. Having Automatic Updates will make it easier for, for example, site builders and smaller organizations to have a secure website. It will definitely decrease the maintenance burden. The Workflow and Layout features will add quite a bit of value to Drupal out-of-the-box, and having the Configuration Management 2.0 roadmap goal delivered would be pretty cool as well.

Furthermore I expect to see more work going towards making Drupal API-first, several huge steps have already been taken which have led to an increase in decoupled Drupal sites. And the Drupal ecosystem will hopefully more and more make use of modern web APIs, like what you see with Progressive Web Apps.

I also hope to see more (standardized) Drupal integrations happening with the Internet of Things. For example Drupal and voice-based services sound pretty cool.

Drupal contributors from our team

Andrew Zahura (shkiper)

  • What do you think is the greatest Drupal benefit?

I think Drupal's main advantage is its community, because it’s the people who support and develop Drupal. They share their work, knowledge, and experience. Thanks to the very large and developed community, Drupal has gained such popularity and has such a large number of modules, features, and themes. Due to the fact that the Drupal community is very open and friendly, anyone can easily find information about a topic of their interest or ask directly on the forum. It is also very easy to promote your ideas and achievements.

  • Do you have a favorite Drupal module?

It is impossible for me to choose only one module, because there are thousands of them and each does an important job. Every year, more modules are added to the Drupal core, which shows that all modules are an important and useful part of the system.

  • What do you expect from Drupal in the future?

Programming, and especially web development, is changing very rapidly. We can see the emergence of new areas of development, frameworks, and libraries. So I expect that Drupal will continue to grow and develop, use the best achievements in other fields, and engage more talented and active people in the community.

Oleh Raban (Zemelia)

  • What do you think is the greatest Drupal benefit?

Its benefits are the community, a relatively easy learning curve, the object-oriented programming approach in Drupal 8, a great selection of tools in the core, and plenty of ready-made contributed solutions.

  • Do you have a favorite Drupal module?

This the Admin Toolbar module. Anyone who works with the Drupal admin dashboard will have tough experiences without this module. So I recommend it to everyone.

  • What do you expect from Drupal in the future?

I would expect the improved UI support for JS libraries out-of-the-box (for example, React). This would mean full-fledged “frameworkness”, if I may say so. But generally Drupal's trends are very cool. It keeps pace with time and with all that multitude of technologies. Perhaps it would even be interesting to see Drupal in some other programming language than PHP. Of course, this sounds unreal, but who knows :)

Ivan Tibezh (tibezh)

  • What do you think is the greatest Drupal benefit?

I think that Drupal’s great benefit is its architecture. Drupal’s architecture (here I mean version 8) is very well thought-out in terms of scalability. You can replace any item with your own one or, in some cases, replace the existing functional elements with your own ones. Of course, Drupal has a foundation that cannot be modified. Still, Drupal is very versatile if compared with other frameworks or CMSs/CMFs.

Even more, due to scalability, Drupal is a versatile system that is not limited to particular tasks (for example, like Magento is only specific to online stores). With this versatility, we can cover a large market. One experienced Drupal developer can easily make business card sites, catalogs, online stores or even social networks based on Drupal. This is also supported by a wealth of Drupal modules for any industry.

  • Do you have a favorite Drupal module?

A simple answer to this question will be “the Views module.” After installing Drupal, every beginner, almost immediately or in the very near future, begins to learn this module. This module can display any information from the database on the website, and it has the flexibility to output anything, in any way.

If you take something "fresher," then it will be the Commerce module for Drupal 8. Everyone knows that the module consists of submodules with a large code. I like Commerce because it gives me inspiration for interesting tasks. There are cases when you need to implement a certain functionality, and something like this already exists in Commerce. So you look into the module and take a similar example, the coding style to solve your task, or just interesting solutions/functions for yourself.

  • What do you expect from Drupal in the future?

I expect, although I'm not quite sure, that Drupal moves in the direction of React. React is a pretty good thing that will make Drupal even faster and, in some cases, more flexible in development. If this happens, it is necessary that everything is implemented well on the backend part (as is the case with Drupal Ajax framework). Here I mean that the vast majority of Drupal developers know PHP and can use jQuery but do not know JS well enough to work with React, and do not even know React itself.

And here is not an expectation but rather a wish. It would be nice to have a built-in Donation system for modules. I am the maintainer of some projects and there is always too little time to deal with then. And if there will be a little incentive system (for customer, a customer needs some feature in the module and can invest, say, $50 into this task) this would be a great system to motivate developers and develop Drupal. A project like this already exists somewhere, but it is specific to the GitHub repository, if my memory does not fail me.

And finally, I expect the 9th version of Drupal :)

Oleksandr Chernyi (BlacKICEUA)

  • What do you think is the greatest Drupal benefit?

In my opinion, Drupal's greatest advantage is its comprehensiveness and extensibility. To me, Drupal, this is primarily a CMF (Content Management Framework), or even rather a pure framework. With custom modules, you can implement virtually any task, from content management to AI applications.

  • Do you have a favorite Drupal module?

I can’t say for sure that I have a favorite module because I'm trying to create new modules — albeit in the context of client projects. The following modules are often used: Paragraphs, Field Group, Selectize.js, Select 2, Chosen, Admin Toolbar, Devel, Configuration Split, Config Ignore, and Config Filter.

  • What do you expect from Drupal in the future?

I am looking forward to switching to Symphony 4 or 5. It works with PHP version higher than 7.1.3, which will lead to the cutting out the outdated methods and functions from the core. I think, this will speed up Drupal.

I also think that there will be a complete transition from hooks to EventSubscribers, which in turn will lead to greater structuring and flexibility when used.

Final thoughts

Hopefully, you also enjoyed reading this blog post with the thoughts of Drupal contributors about Drupal. We would like to emphasize again how valuable they are to us. We wish them all the luck with Drupal development!

With any questions or website ideas, contact our Drupal team.

Jun 24 2019
Jun 24

It is crucial for website security and usability to determine who is allowed to view, edit, or delete content on your platform. Things become easier with the configuration of user access if you are using Drupal. This CMS offers out-of-the-box user roles, as well as contributed modules for such functionality.

Today, the team at WishDesk explores user access modules in Drupal 8 — the latest Drupal version.

What is user access?

User access means that the user possesses a particular role on a website that lets them access certain areas of the site, as well as see the specific elements displayed on each web page after logging into the site.

Top Drupal 8 user access modules

Here is a list of the most popular user access modules for Drupal 8. Check out this information before choosing one for your website! The choice of this module depends on the functionality you want to add.

top Drupal8 user access modules

  • Permissions by Term

Permissions by Term is the Drupal module that lets you restrict or allow access to the specific website content on the basis of taxonomy terms. These permissions can be applied to user roles, as well as individual users and work for nodes, views, menus, etc. With the help of this module, taxonomy terms can be coupled to specific accounts.

  • Node View Permissions

The Node View Permissions module simply adds two types of permissions to every content type: "View own content" and "View any content." Besides, it can be easily combined with other user access modules.

  • Menu Admin per Menu

If you need certain users to add, edit, or delete particular menus, without access to other menus, the Menu Admin per Menu module is for you. Note, that users without full admin permissions may not see all the menus, so you need to move the necessary items to the root of the Management menu or somewhere else where it can be seen by those users.

  • Block Content Permissions

The Block Content Permissions module allows you to set permissions to custom block types, as well as create, update, or delete specific types of block content.  

  • Protected Pages

Protected pages is the Drupal 8 user access module that allows the administrator to protect certain web pages with a password. Some interesting features include global password setting, session expire time setting, bypass permission to skip password protection, and more!

Configure user access on your website with WishDesk!

This is just some of the Drupal 8 user access modules available — the choice depends on the type of website you have and the content you provide. Our Drupal team is always here to choose the most suitable modules for your platform and configure it to meet all your needs. We can also create custom modules for you if none of the existing ones fulfill your requirements!

User access in Drupal 8 is easy, especially when you have a reliable web development agency at hand. Contact us for any kind of digital help or assistance.

Jun 21 2019
Jun 21

Your website, like a king, should look good in any situation — and on any device that users might be accessing it from. Thankfully, there is responsive web design.

With responsive web design, all images, buttons, columns, and other layout elements change their size and position to adapt to the device dimensions. This creates the smoothest user experiences, as well as improves website performance.

A special reason to be happy is that responsive design in Drupal 8 is thriving. Drupal 8 has been built with mobile devices in mind. It has responsive default themes, responsive admin interfaces, and powerful opportunities for mobile-friendly design. Great Drupal 8 modules are very helpful in implementing any ideas in this area.

Responsive design

Drupal 8 core modules for responsive design

Of course, we need to start with the powerful built-in modules that arrived at the core with the release of Drupal 8 to everyone’s applause.


The Breakpoint module allows you to specify the breakpoints, for example, screen dimensions (minimum or maximum width), at which your website should start showing a different layout. The module is enabled out of the box in Drupal 8.

Breakpoints should be defined in the theme’s themename.breakpoints.yml file. Default themes like Bartik are known to be responsive out-of-box, so they already have this file with a set of ready breakpoints. For custom Drupal 8 themes or modules, this file needs to be created in the theme’s or module’s root directory.

Breakpoints in Drupal 8

The module manages the height, width, and resolution breakpoints. It enables modules and themes to use each other’s breakpoints.

Responsive Image

The Responsive Image module provides the appropriate image display for each breakpoint. The module is part of Drupal 8 core but needs to be enabled.

According to Drupal image style capabilities, images can be automatically scaled, cropped, resized, and so on, to be used in different scenarios. With the help of the Responsive Image module, these different image styles can be served for different devices based on breakpoints.

It’s just necessary to:

  • create the desired image styles in Configuration — Media — Image Styles

Image styles in Drupal 8

  • create a “Responsive image style” in Configuration — Media — Responsive Image Styles, choose the theme name in “Breakpoint group,” and assign image styles to breakpoints

Assign image style to breakpoints

  • assign the responsive image format to the image field of the desired content type in Structure — Content types — *Content type name* — Manage display

Assign responsive image format to image field

The Responsive Image module uses the HTML5 "picture" tag. It once used to be known as the Picture contributed module.

Contributed modules for responsive design in Drupal 8

Alongside the strong core features, there are contributed modules available in Drupal 8, each of which adds its own touch to responsive web design creation. Let’s review a few nice ones.

Simple Responsive Table

The Simple Responsive Table is a lightweight module that instantly makes Drupal website tables responsive. All that is needed to do is set the maximum screen width for which tables should be responsive. You can also optionally enable or disable this feature for Drupal admin pages.

Simple Responsive Table

Sidr: Responsive Menus

The Sidr: Responsive Menus module for Drupal 8 integrates a JavaScript plugin called Sidr, which is great for creating responsive side menus and more. The module should be installed together with the Sidr libraries.

With the help of this module, you can create configurable Sidr “trigger” blocks on your website. They can be placed anywhere in your theme region and configured to your liking. Their essence is that when a trigger is clicked, the Sidr side menu slides out or slides back in.

Sidr: Responsive Menus


The Viewport is a simple Drupal 8 module that offers a user interface for adding a viewport meta element to the HTML header. The viewport element instructs the browser on how to display the visible part of the page on the users’ screen. Viewport varies from device to device.

The Drupal Viewport module’s interface allows you to specify the viewport values and the pages for which the element should be added.

Viewport module Drupal 8

Juicebox HTML5 Responsive Image Galleries

Here is a nice module for creating responsive image galleries and sliders. The Juicebox HTML5 Responsive Image Galleries module integrates the famous Juicebox library. The library is known for its full responsiveness, touch gesture support, embedding features etc.

The module provides a field formatter and a views style plugin that allows image fields and Views to be formatted as Juicebox Galleries. It features multilingual support, integration with the Media module, search engine friendliness, and much more.

Juicebox HTML5 Responsive Image Galleries

Fulfill your responsive design ideas

Responsive design in Drupal 8 is easy for developers to set up and enjoyable for users to work with. So contact our Drupal team if you are interested in:

  • building a responsive theme for your Drupal 8 website
  • making your current theme responsive
  • configuring any responsive design modules
  • providing responsive layout for any elements on your website
  • migrating your website to Drupal 8 that has so much for responsive design

The era of convenient web is here!

Jun 13 2019
Jun 13

It’s an undoubtable truth that images have a strong power to engage customers. And there are plenty of ways to enhance this engagement, one of which is image hover effect (aka mouseover effect). 

Features like this are meant to add a creative and interactive touch to your website, spark users’ interest, save space, make your website more user-friendly, and increase conversions.

Drupal 8 has easy content creation as a priority, and there are also many useful modules for creating image hover effect. Let’s take a look at a very simple but nice one — the Imagepin button module.

The Imagepin button Drupal module’s brief overview

The Imagepin button module combines image hover effect with an interesting image pinning effect. It allows you to add pins to images that will show some text when someone hovers the mouse over them. 

During content creation, editors will have a special option — “Pin widgets on this image.” They can create as many pins as they wish, write the text for them, and position them anywhere throughout the image.

Pins appear on the image:

Pins on image with Imagepin Drupal 8 module

Text appears as you hover the mouse over each pin:

Image hover effect with Imagepin Drupal 8 module

The module’s extensibility

Out-of-box, the Imagepin button module cooperates with the Slick module and displays all widgets as a carousel. But it’s just the beginning. The module is extensible with custom widgets, and the use of JavaScript can add more interactivity. 

So it is easy to adjust the module’s behavior to your website’s particular needs with the help of a good Drupal team. Let’s now see the module’s “classic” work on a simple example.

Creating image hover effect with the Imagepin button module

1. Installing and enabling the module

It begins with installing the Imagepin button module — either via Composer or by downloading it from drupal.org. Then it should be enabled in the “Media” section on the module list.

Enabling Imagepin Button Drupal 8 module

2) Enabling the Imagepin for a content type’s image field

We go to the Manage Display tab of a content type that contains our image field and click the cogwheel next to this field. We need to check “Enable users to pin widgets on this image.” While doing this, we can:

choose in which image style we will be pinning the image

optionally set breakpoints for mobile devices

Enabling Imagepin for image field Drupal 8

3) Creating pins for images

Next, when we add content, we see the “Pin widgets on this image” button and click it.

Adding pins to images with Imagepin Drupal 8 module

This button brings us to the “Pin widgets” UI where we see available widgets (none added yet). Let’s click “Add new” and submit the text we want to display. 

For example, on our image of Europe Travel Map, we could pin sightseeing objects — and start with “Eiffel Tower.” So we write its name in the text field.

We check it in the “Available widgets” and it turns orange, which means it is active. So we can drag the position of the pin to the place where we want to see it. And then we click “Save these positions.”

Adding pins to images with Imagepin Drupal 8 module

As we save the content item, we can see our pinned images.”

Pins on image with Imagepin module Drupal 8

As we hover over it, we see the image hover effect in action — the text shows up.

Image hover effect with Imagepin module Drupal 8

Get nice image hover effect created for your Drupal website!

We have shown you a simple example of image hover effect in Drupal 8 created by the Imagepin button module. Of course, it can be fully customized to meet your ideas. 

So if you need any help with:

  • configuring the Imagepin button module
  • extending it with custom plugins
  • creating image hover effect using other tools 

contact our expert Drupal team!

Jun 06 2019
Jun 06

Drupal keeps moving ahead. In June 2020, we hope to see the release of Drupal 9. Innovation often has a “flip side” — cumbersome upgrades. But not this time! Upgrades from Drupal 8 to Drupal 9 will be quick and easy, and this is one of Drupal 8 benefits. However, there is a condition all websites should meet — and there is a wonderful Upgrade Status module that will help them with that. 

Deprecated code removal = easy upgrades to Drupal 9

All Drupal 8 websites will have silky smooth upgrades to Drupal 9, if their core, modules, and themes are up-to-date and not using deprecated code. A very lucrative reason to migrate to Drupal 8 now if you have not yet ;)

Deprecated code is one that is no longer in use and has more modern alternatives. The functions and APIs that are marked as deprecated continue to exist alongside with these alternatives — until they are removed. The release of Drupal 9 will see a major cleanup from deprecations.

Modules and themes without deprecated code will be immediately ready for Drupal 9. Those with deprecated code should have it replaced before Drupal 9 arrives.

Dries about deprecated code and preparing for Drupal 9

Drupal creator Dries Buytaert encourages everyone to update their code to the latest and greatest APIs today — without waiting for Drupal 9. And here is where the Upgrade Status module comes in.

Upgrade Status module to check your site for deprecated code

The Upgrade Status module was developed on the basis of the powerful command-line tool called drupal-check, which scans your codebase for deprecations. 

But the Upgrade Status module makes the process handy for everyone thanks to its graphical user interface. It is easy to run the checks directly from the admin dashboard and get informative results.

There is even a chance we may see Upgrade Status module in Drupal core some day. A fresh issue about it has been created in mid May 2019. 

More details about Upgrade Status module’s work & features

Installation notes 

The Upgrade Status module uses third-party PHP dependencies, so it is highly recommended to install it via Composer package manager. The Update Manager and Git Deploy modules will also need to be enabled. When installed and enabled, the Upgrade Status module’s UI is available at /admin/reports/upgrade.

Checks for deprecated code

The module will scan your core, contributed, and custom modules and themes and tell you which ones have deprecated code. 

It tells the “status” of each project, which is either “No known errors” or “Errors found” (with their amount). When you click “View errors,” you are taken to the page with the information about the particular deprecated function or API.

Upgrade Status module to prepare for Drupal 9

Checks for available updates

It also shows you the available updates for contributed projects. These updates are highly recommended to perform, because Drupal projects’ maintainers resolve deprecation issues with time. 

Drupal developers who find deprecated code in a contributed project can also create an issue on drupal.org (if it does not exist yet) or help with patches.

Checking the whole site or particular projects

In addition to the full check, the module also allows you to check individual projects. You can also rerun the report on specific projects that you are currently working at. So you can avoid spending a long time to run the full check. This was mentioned among the module’s benefits in the blog post by one of its main creators — Gábor Hojtsy.

Handy reporting

The Upgrade Status module allows you to export the full report about the check or individual reports for projects.

Continuous integration opportunities

The module cannot be integrated with your continuous integration processes for now. However, the tool behind it, drupal-check, is suitable for this purpose. So the status check can be part of your automated workflows. 

Prepare for Drupal 9 with the help of our team!

So what will be the upgrade status of your website? It’s time to find out!

If you need any help with using Upgrade Status module or with cleaning up your website from deprecated code, our team of Drupal experts is there for you. 

May 30 2019
May 30

Only a few years ago it was a challenge to manually integrate marketing services into a website. However, a perfect marketing automation tool cannot exist without the ability to be integrated across multiple channels. Nowadays, marketing tools can be digitally integrated with any platform, including Drupal-based websites. This is possible because Drupal 8 provides custom modules for most of such services.

Today, the team at WishDesk explores the most popular marketing automation tools that integrate with Drupal 8.

What is marketing automation?

Marketing automation is a tool that automates repetitive marketing actions, such as social media, email, tracking processes and others. In such a way marketers are able to focus on more urgent tasks and increase productivity.

This study by Social Media Today states that 75% of business currently use automation tools.

businesses that use automation tools

Key features of marketing automation tools

Marketing automation tools let marketers get rid of routine manual tasks. The key points and advantages of them are:

  • tracking visitors
  • email marketing
  • lead scoring
  • customizable workflows

Marketing tools that integrate with Drupal 8

Drupal is a universal CMS and has modules for any feature which will definitely benefit your business. Drupal cares about marketers as well. Here is a list of Drupal 8 marketing modules that can be integrated with a website.


HubSpot is the most popular inbound marketing platform on the internet.

HubSpot Integration for Drupal 8

With the help of Drupal 8 HubSpot module, this service can be easily integrated with Drupal. Website owners can create content on HubSpot and display it on Drupal 8’s front-end.

Key features:

  • submit any Webform to the HubSpot Leads API, as a lead to be tracked by HubSpot
  • easily embed the HubSpot JavaScript tracking code in Drupal website
  • see your latest leads in the Drupal admin dashboard 
  • extensive documentation is available


MailChimp is an email marketing tool. MailChimp allows you not only to set up mailing lists based on multiple preferences but also retrieve mailing lists from a database. Users who sign up on your Drupal 8 website will automatically be stored in your site’s database. You can use these emails for a newsletter and use the MailChimp integration to send emails without manually creating a list of such users.


There’s the MailChimp module available for Drupal 8. It helps easily integrate marketing automation tool with Drupal.

Key features:

  • connect a MailChimp List to any entity with an email address field 
  • display subscription forms or status for Lists on entities
  • subscription controlled on Entity creation
  • create forms to allow site visitors to sign up for any Mailchimp List or combination of Lists
  • create Pages, Blocks, or both to display forms
  • create campaigns containing any Drupal entity
  • send campaigns created in Drupal through Mailchimp or Drupal interfaces
  • campaign statistics


Salesforce is a software company that specializes in customer relationship management (CRM) that can benefit both small and large businesses. The Salesforce platform has functionalities for sales management, partner relationship management, and customer service. It allows users to synchronize contacts, calendars, emails, and various tasks.

saleforce integration module for Drupal8

Drupal 8 offers the Salesforce Suite of modules to integrate with your Drupal website.

Key Features:

  • supports pushing Drupal data to Salesforce as well as pulling, or importing, Salesforce data into Drupal
  • marketing and sales lead synchronization
  • OAuth 2.0 authorization to maximize access control and safety
  • real-time visibility

Google Analytics 

Google Analytics is a powerful tracking tool that creates all imaginable statistics for your website. With the help of this marketing automation tool, you can track users, average session duration, bounce rate, conversions, traffic source, locations, type of device, and much more!

GoogleAnalytics integration for Drupal8

Drupal 8 offers the Google Analytics module that turns the integration of this marketing tool with Drupal into an easy task.

Key features:

  • single/multi/cross domain tracking
  • selectively track/exclude certain users, roles and pages
  • monitor what files are downloaded from your pages
  • demographics and interests support
  • anonymize visitors IP address
  • DoNotTrack support (non-cached content only)
  • Drupal messages tracking
  • access denied (403) and page not found (404) tracking

Check out this post on how to integrate Google Analytics with Drupal 8.

Crazy Egg

Crazy Egg is another helpful marketing automation tool that generates a heatmap of your site. It shows where visitors spend most of their time on your website. Crazy Egg also shows where visitors scroll and where they click the most.

CrazyEgg integration for drupal8

The Crazy Egg module for Drupal 8 allows easy integration of the tool with your Drupal site.

Key features:

  • scroll maps so you can see where people are scrolling
  • session recordings that allow you to watch recordings of your visitors interacting with your website
  • A/B tests

Social Auth Google

Social Auth Google allows users to register or login to the Drupal site with the help of their Google account. This module allows websites to request any scopes so that any tasks requiring authentication with Google services can be performed.

social auth google integrated with drupal8

A path user/login/google redirects users to Google Accounts for authentication.

Integrate marketing tools with Drupal 8!

These are just some of the examples of marketing tools that integrate with Drupal 8. You definitely need them on your website if you want to keep your business on top.

Please get in touch if you need any help with integrating marketing automation tools with Drupal website.

May 10 2019
May 10

There is an ideal blend of usability and attractiveness — this is Media Library in Drupal 8.7 core. That’s what comes to mind when we see Drupal Media Library’s updated UI. Managing media on websites will now be easier and more enjoyable than before!

Drupal Media Library allows you to:

  • save photos, audios, tweets, local videos, remote videos from YouTube or Vimeo etc.
  • manage all items in the Library
  • easily add them to content at any time you wish

So welcome to take a closer look at how the new Media Library interface looks and works in Drupal 8.7.

Media Library’s new UI impresses the world

As soon as the demo video of the new Media Library UI was posted by Webchick yet in March, Drupal core contributor, it gathered many compliments from the Drupal community. “Brilliant,” “wonderful,” “amazing,” “totally huge” are just some of the feedback. It’s interesting to know what you will say, so welcome to leave comments!

A closer look at new Drupal Media Library interface in release 8.7

The Media Library works in pair with the Media module. To start using it, we enable both the Media and Media Library modules.

Drupal shows a warning about the experimental status of Media Library. The module is expected to be stable in Drupal 8.8 after a few fixes and adding WYSIWYG support.

Enabling Media and Media Library modules in Drupal 8.7

With these modules enabled, we can see that the site’s structure now has media types. There are five default and preconfigured ones (and it is also possible to add custom media types):

  • Audio
  • File
  • Image
  • Remote video
  • Video

5 media types in Drupal 8

It’s time to add some media of the available types. All media items will be stored in Media Library for further convenient use. You can add it in two ways:

  • from the admin dashboard “Content — Add content — Media.”
  • directly from the “Media” tab in “Content” where you will see the entire Media Library with all media that you have added.

Media Library new UI in Drupal 8.7

The new Media Library interface can display your media in the Grid view and in the Table view:

Media Library Drupal 8.7 table view

It is easy to filter and sort the media by various criteria, as well as select particular items to do actions with them (delete, publish, save, unpublish).

Media Library Drupal 8 selecting items

Adding media from Media Library to content

Here comes the most interesting part of managing media with the Media Library story — embedding media into content. In fact, it is not only content, but all fieldable entities (for example, user profiles or media itself).

To get this working, the basic necessary thing is to add a “Media” field to the desired entity type. Let’s add it to user account settings and call it “My pet's photos.”

Adding Media field to Drupal contentAllowed number of values will define how many items can be embedded.

Number of values in Media field Drupal 8

You need to select the media type for the field. According to the official documentation, it is completely legal to have multiple media types in the same field.

Selecting Media type for Media field in Drupal 8

Now, every time a new user account is created, it has the “Add media” button that brings in the Media Library interface. Media can be added in two ways (and even at the same time!):

  • You can select Media in the Library:

Selecting uploaded media from Media Library in Drupal 8.7

  • And you can bulk upload media from PC:

Bulk uploading media to Media Library Drupal 8

You can choose “Save and insert”, or “Save and select” to insert them later.

Selecting media from Media Library Drupal 8.7

Once inserted, the media items are displayed on the user account as the user’s favorite pet’s photos. And you can do the same with all kinds of media in all kinds of content.

Media added to user account Drupal 8.7

Enjoy the new interface for Media Library in Drupal 8.7

Well, the new Drupal Media Library interface in release 8.7 is really user-friendly, stylish, and classy. Managing media with it will be fun for content editors.

Our Drupal team is ready to help in configuring the Media fields for your website’s content, creating a custom media type to fit your business needs, and, of course, updating you to Drupal 8.7. Enjoy the newest Drupal features!

May 01 2019
May 01

Online stores with decoupled architecture have all the chances to gain more happy customers. How does this work? Let’s see in this post. The “decoupled” or “headless” architecture is an increasingly popular trend in the Drupal world — especially now that the JSON:API module is in the core. So welcome to this review of the principles of decoupled Drupal Commerce and how it helps online stores engage users.

What is decoupled Drupal Commerce?

In decoupled, or headless Drupal Commerce, the presentation layer is separated from the e-commerce backend. Fast and reactive JavaScript interfaces communicate with powerful Drupal backends via a REST API. Decoupled, or headless architecture gives developers unlimited flexibility to create enhanced shopping experiences.

Decoupled approach as a priority for Drupal Commerce

Commerce Guys, the creators of Drupal Commerce, clearly focus on JavaScript-based solutions for online stores. They have a special team engaged in this area, including lead developers Bojan Živanović and Matt Glaman.

The team keeps polishing Drupal Commerce for headless setups and improves Drupal core in this process as well. They complete the documentation, help developers with their projects, and create an ecosystem of contributed projects in the “decoupled” sphere. Among them:

Commerce Demo project

Let’s see in more detail, with examples and quotes, what benefits make decoupled Drupal Commerce deserve so much attention.

The benefits of decoupled Drupal Commerce

Super high speed

“One thing we’ve all heard about it is it's fast and reactive. You get a quicker response time and the person is more engaged. Customers have an attention problem, so they get easily distracted on a website. So the faster you can give them what they want, the more likely they are to give you their credit card.”

Nothing to add to the words of Matt Glaman, the main creator of the Commerce Cart API and the Cart Flyout modules. He shared this in his speech “The road to a headless Drupal Commerce future” at Drupal Europe 2018.

It is already a known and undoubtable fact that JavaScript front-ends are very quick. In addition, this setup does not overload Drupal, which is reflected in performance.

Matt Glaman said his demo’s product page began to load faster from 130 milliseconds to 60 milliseconds with the decoupled cart. One of the reasons was Drupal no longer had to render a form. All actions with the cart are done on the client side and do not involve the Drupal rendering system.

“The pages are so much faster now because we don’t have to be concerned about Drupal rendering a form or the cart block and all this extra data,” said the developer.

It’s nice for performance that caching can be done without Drupal. According to Matt Glaman, “your product page can be behind the Page Cache module or behind Varnish, and you never have to hit the server to render the cart form, because the JavaScript will do it for you.”

Rich and interactive features

Decoupled Drupal Commerce allows developers to enrich the shopping interfaces with interactive features. Users who enjoy the shopping are more likely to make conversions.

Among these features are:

  • push notifications
  • real-time updates for the shopping cart and all the other forms
  • real-time previews with changed product attributes (like the clothing colors)
  • the ability for the customer to change the order details without the page reloading

and much more.

For example, on the Commerce Demo project, every time a user clicks “Add to cart” or clicks on the cart icon, the cart flies out and shows the contents. The price is updated dynamically as the user changes the product quantity. We see the Commerce Cart API and the Cart Flyout in action.

Commerce Cart Flyout

On the Eldum Rétt website, the price is dynamically updated when the user selects the package size, and cart sidebar also flies out. This project uses a React native app combined with decoupled Drupal Commerce.

Dynamic cart updates in decoupled Drupal Commerce

Freedom in front-end changes

With a decoupled approach, front-end developers are free to implement experiments and changes to improve user experience and application design.

While implementing them, they do not interfere with the backend setup and do not have to worry about it at all. There is no need to edit the database and the code, or redeploy the ecommerce platform.

So, in addition to the flexibility of customizations, decoupled or headless Drupal Commerce saves your time and money. Even small changes in traditional setups would often require the editing of several layers of code.

Front-end technologies of your choice

Your headless ecommerce store can send its data to a mobile app, web app, static site, and so on. You can also enjoy omni-channel commerce with the same store data presented in many ways. Hence the large choice of front-end technologies.

You will not be restricted with what is offered by only one platform. When combined, platforms multiply their benefits.

Your decoupled Drupal Commerce setup is here

If you are interested in decoupled Drupal Commerce tailored to your business needs, contact our Drupal team. We love to create ecommerce projects and work with the latest JavaScript technologies.

So entrust us with any kind of tasks in this area — from decoupling your commerce to creating a new decoupled website from scratch.

Apr 04 2019
Apr 04

Views added to Drupal core is one of the most frequently mentioned Drupal 8 benefits. Drupal Views gives us a UI for creating data collections based on any desired criteria. One of the ways to fine-tune the results is to use Drupal Views filters. A level higher from regular filters stand contextual filters that accept dynamic values. This helps us create flexible and interesting solutions. Let’s review Drupal 8 Views contextual filters in more detail.

Contextual filters & their difference from regular filters

  • Drupal 8 Views regular filters can only use one static value at a current moment. For example, we can filter all cars with the brand name “Renault.” We can also allow website users to choose this manually if we make the filter “exposed to visitors.”
  • Drupal 8 Views contextual filters are able to use the dynamic values that change with context. For example, each logged-in user can see “Renault”, “Volkswagen,” or/and “Nissan” cars based on the preferences they put in their user profile. So the same Drupal View will show different results to all at the same moment. 

Thanks to the Drupal Views UI, configuring the contextual filters requires no coding skills. They can be created and configured on the “Advanced” tab of the View. However, contextual filters demand a deep understanding of Drupal and should preferably be created by Drupal developers rather than by website administrators.

Contextual filters in Drupal 8 Views UI

An example of creating Drupal 8 Views contextual filters

We will now create a simple task tracker with Drupal 8 Views. On the “My tasks” page, each user will only see the ones assigned to them. This setup will take a few preparatory steps but they will be fun. Those who are impatient can jump directly to the “Contextual filters” part a few paragraphs below. 

1. Preparatory steps for this setup only

1.1. Creating test users

Let’s start with going to “People — Add new user” and creating test users Jack Sparrow and Frodo Baggins. 

Creating a Drupal userCreating a Drupal user (2)

1.2. Creating the “Task priority” taxonomy vocabulary

Every decent task tracker needs task priority options. Let’s go to “Structure — Taxonomy — Add vocabulary” and add these options as taxonomy terms: Blocker, Critical, and Minor.

Taxonomy in Drupal

1.3. Creating the “Task” content type

Let’s create the “Task” content type in “Structure — Content types — Add content type” and add fields to it. The “Title” field will be available by default. 

Here are the needed fields and the field type in brackets:

  • Assigned to (user)
  • Due date (date)
  • Task priority (taxonomy — with the specified vocabulary)
  • Task image
Fields for a content type in Drupal 8

1.4. Creating tasks

Let’s create a few tasks in “Content — Add content — Tasks”, select Jack Sparrow and Frodo Baggins in “Assigned to,” as well as fill in all the other fields. 

2. Creating our Drupal 8 Views contextual filter

2.1. Organizing all tasks into a Drupal 8 View

And we will not organize all tasks into a View in “Structure — Views — Add new view”:

  • View Settings: “Content” of type “Task”
  • Page Settings: Create a Page
  • Page Display Settings: Table of fields
Drupal 8 Views creation

Then we save the View. As it shows fields, we need to add all Task fields to it. And here is how our unfiltered task tracker looks. We only applied a simple sorting by task priority to show “blockers” above “critical” one. But still, our Views shows tasks for all users. 

Drupal 8 Views results

2.2. Creating and configuring a Drupal 8 contextual filter

Both Jack Sparrow and Frodo Baggins would appreciate a page with their own tasks, for which we will use a contextual filter. In “Advanced — Contextual Filters — Add”, we select the “Assigned to” filter argument and save the filter.

Adding a contextual filter in Drupal 8 Views

We are immediately taken to the contextual filter configuration page. 

1) For the “When the filter is not in the URL” option, we select “Provide default value”. There, we select “User ID from logged in user” from the dropdown menu. 

Drupal 8 Views contextual filter

2) For “When the filter is in the URL or default is provided”, we select “Specify validation criteria — User ID.” In the “Action to take if filter does not validate, we specify “Display contents of “No results found.”” 

Drupal 8 Views contextual fllter (2)

2.3. Testing the Drupal 8 contextual filter

Let’s check what all users see if they visit the “my-tasks” page. We visit it in an incognito window and log in as Jack Sparrow. Success — he can only see what’s assigned to him. He will need to save Elizabeth Swann and find the Fountain of Youth.

Contextual filter by user in Drupal 8 Views (2)

Let’s now log in as Frodo Baggins. Good, he knows he needs to take the ring to Mordor and destroy it in the fire of Mount Doom.

Contextual filter by user in Drupal 8 Views

Hopefully, the guys understand their epic missions, so that’s how a properly made contextual filter may save lives ;) A properly made Drupal contextual filter is what you will always have if you contact our Drupal team!

Get assistance with contextual filters

We have shared a simple example of using Drupal 8 Views contextual filters. Our Drupal experts ready to help you configure any kinds of contextual filters for your website and create interesting user experiences.

Mar 19 2019
Mar 19

Drupal 8.6 became one of the most interesting releases in Drupal 8’s history. It brought us the oEmbed feature, the Media Library, the Workspaces module, and more. But it’s time to move forward, and in May 2019 we expect Drupal 8.7. Its “alpha” version has just been released. Although an alpha version is not the final one, we will gladly take a look at it and discuss what to expect in Drupal 8.7.

Drupal 8.7: the alpha version

Drupal 8.7.0-alpha1 came out on March 14, 2019. Alpha versions are far from being ready for production sites. They are just preliminary releases that allow developers to do a good testing, receive feedback, make final preparations, and fix bugs.

After the “alpha,” we are supposed to see the “beta” version of Drupal 8.7 in the week of March 25. Next, the RC (release candidate) phase will begin in mid April.

When everything is tested thoroughly and polished to perfection, we will enjoy the stable version of Drupal 8.7 on May 1! Let’s see what to expect in Drupal 8.7 now that we are looking at Drupal 8.7.0-alpha1.

Expected features of Drupal 8.7

  • End of support for PHP 5.5 and 5.6

Websites are officially becoming lighter and faster due to the use of PHP 7.1+. Drupal 8.6 was the last release to support PHP 5.5 and PHP 5.6. Drupal 8.7 is definitely the time to say goodbye to these obsolete versions of the programming language.

According to Drupal 8.7 alpha 1 release notes, they will officially stop being supported in Drupal 8.7 beta. So those who are using PHP 5.5 and PHP 5.6 will need to upgrade to PHP 7.1 or higher, and our Drupal support team can help.

  • End of support for Internet Explorer 9

The support for Internet Explorer 9 and 10 was stopped back in Drupal 8.4. However, there was a workaround left in Drupal 8.5 and Drupal 8.6 that allowed 32+ stylesheets to be included.

Drupal 8.7 has now officially removed this workaround, so goodbye to Internet Explorer 9. Those who rely on it will need to enable CSS aggregation or install the IE9 Compatibility Drupal module.

  • No more automatic entity updates

As of Drupal 8.7, automatic entity updates are no longer supported by Drupal core. This is meant to avoid conflicts and preserve data integrity. For updating the entities, the Update API should be used. In addition, the drush entity-update (drush entup) command is also not supported anymore. 

  • New UI for the Media Library module

The Media Library module lets you save various multimedia and use them in your content to make it more engaging. It’s possible to embed multimedia directly into content types using the “media” field.

The Media Library works together with the Media module that is already stable. Stable Media Library was first scheduled for Drupal 8.7 but we are likely to see it in Drupal 8.8 after a number of fixes and WYSIWYG support added. 

However, we can enjoy a new and interesting Media Library admin interface in Drupal 8.7. Its features have mostly made it to Drupal 8.7.0 alpha 1 but the completed UI will be available soon in alpha 2 or beta 1.

New Media Library admin UI for Drupal 8.7New Media Library admin UI for Drupal 8.7
  • Adding JSON:API to Drupal 8 core

The JSON:API contributed module is meant for creating high-performance APIs to expose Drupal data in JSON. It immediately creates API endpoints and requires no configuration. The module instantly accesses all Drupal entities.

According to Drupal development roadmap, JSON:API is meant to join the core in Drupal 8.7. JSON:API will look great in Drupal core’s ecosystem of web services that are responsible for third-party integration.

Joining Drupal core is a serious step for any module, especially for a complex one like JSON:API. There has been a hard work done on fixing the last issues related to adding JSON:API to Drupal 8.7 core, and all are fixed now.

Although we don’t yet see the module in the Drupal 8.7 alpha 1 admin dashboard, we will probably see it in alpha 2 or beta. So congrats to JSON:API! Update for 21/03: JSON:API has just landed in Drupal core!

  • Improvements and stabilization for the Layout Builder 

The Layout Builder module in Drupal 8 core allows you to build layouts like Legos by using ready multi-column layouts and Drupal blocks. 

These can be layouts for content, users, contact forms, and other fieldable entities. You can have a specific layout for a content type (e.g. all articles), for an individual node (e.g. one article), or for a display mode (e.g. article’s teaser).

The module arrived in Drupal 8.5 core marked as “experimental.” For Drupal 8.7, it has received important bug fixes in the area of saving layouts for the default content layouts and individual nodes, saving layout overrides, using layouts for different display modes, and more. CSS classes have also been renamed to meet the BEM standards.

Drupal development roadmap has the Layout Builder moving from experimental to stable in Drupal 8.7. We don’t see this happening yet in Drupal 8.7 alpha 1, but we expect this in the near future. Update for 29/03: Layout Builder has reached stability in Drupal 8.7 core!

Layout Builder in Drupal 8
  • Updates to the Guzzle library

The Guzzle HTTP client library arrived in Drupal 8 to replace the drupal_http_request() function in Drupal 7. It makes the process of communicating with RESTful web services easier.

Guzzle offers a modern way of making HTTP requests. It is extensible with plugins, easy in use, and based on object-oriented architecture.

In Drupal 8.7, Guzzle has been updated from 6.3.0 to 6.3.3 and http_client service has begun to support empty headers. Additional updates are also planned in Drupal 8.7 beta.

  • Changes to the Stable and Classy themes

The Stable or Classy are among the Drupal core themes in addition to Bartik, Seven, and Stark. If your website’ theme has been created as a subtheme of the Stable or Classy themes, you will need to pay attention to their changes in Drupal 8.7.

They are related to JavaScript message template and pagination header CSS ID. Specifically, if your theme overrides the messaging or pagination templates, you will need some manual changes, and our Drupal experts are ready to provide them.

  • Better Symfony 4 and 5 compatibility

Drupal 8 includes Symfony components for more modern and fast web development. Drupal 9 will completely move to the new Symfony 5.

Drupal 8.7 is getting ready for it. It is providing better compatibility with both Symfony 5 and Symfony 4. This includes changes in the Container and TranslatorInterface Symfony components, as well as resolving critical compatibility issues.

Be ready for a smooth update to Drupal 8.7!

So we now know in a nutshell what to expect in Drupal 8.7 that is coming in May 2019. Of course, you can rely on our Drupal team for a smooth update. 

In the meantime, we can help your website prepare for it, if there is a need to:

  1. update to PHP 7.1+
  2. take care of Internet Explorer 9 issues
  3. apply changes to your Stable and Classy subthemes
  4. check the compatibility of any other website components 

Contact our Drupal team!

Feb 08 2019
Feb 08

Drupal 8 is known for the extensive third-party integration opportunities it gives to websites. One of the tools for this is the contributed Drupal module JSON:API. It helps developers build high-performance APIs for various purposes, including multi-channel content or decoupled Drupal and JSON API setups (which is one of our Drupal team’s areas of expertise). This winter has seen a new release — Drupal JSON:API 2.x. Let’s take a look at what the module does, what makes it useful, and how it has changed in the 2.x version.

JSON:API: principle and benefits

JSON API is a specification, or a set of rules, for REST APIs. It defines how data is exchanged between the server and the client in the JSON format. This includes how the client requests the resources, how they are fetched, which HTTP methods are used, and so on.

JSON (JavaScript Object Notation), in its turn, is the most popular format for APIs. It is very lightweight, consistent in structure, intuitively understandable, human-readable, and easily consumable by machines. At the root of all the requests is a JavaScript object.

The JSON API specification optimizes the HTTP requests and gives you better performance and productivity. JSON API eliminates unnecessary server requests and reduces the size of the data packages.

The specification supports the standard CRUD operations that let users create, read, update, or delete the resources. It is also accepted by all programming languages and frameworks.

crud operations

A glimpse at Drupal JSON:API module’s work

The Drupal JSON:API module offers Drupal’s implementation of the JSON API specification. The module provides an API in compliance with the JSON:API standards for accessing the content and configuration entities of Drupal websites.

The JSON:API module is part of Drupal 8’s ecosystem of web services, and also an alternative to Drupal’s core REST. JSON:API resolves some of the core REST limitations (for example, complex setup, confusing URLs, hard-to-configure collections of entities etc.). At the same time, it only works with entities.

Let’s note some important points about the benefits of the JSON:API work:

  • no configuration is needed (enabling the module is enough to get a full REST API)
  • instant access to all Drupal entities
  • URLs provided dynamically for entity types and bundles so they are accessible via standard HTTP methods (GET, POST, PATCH, DELETE etc.)
  • support for Drupal entity relationships
  • support for complex sorting and pagination
  • access configured in Drupal core role and permission system

As we see, the main philosophy of the module is to be production-ready out of the box. For configurations, there is a related contributed module JSON:API Extras module that lets developers set up every detail they need.

Drupal JSON:API 2.x: what’s new?

Drupal JSON:API 2.x module is getting ready to become part of Drupal 8 core in the near future. Thanks to this, the ecosystem of web services to build high-performance APIs in Drupal 8 core will soon be more complete and diverse. It is also great that Drupal will have a NIH (not invented here) API in its core that follows a very popular specification.

The creators of the JSON API module have had a busy time preparing the 2.x module version for Drupal 8 websites. Overall, 63 contributors took part in that. And there is still a big roadmap ahead.

They issued two beta versions in August and September, then three release candidates from October to December of 2018.

Finally, the stable 2.x version came — JSON:API 2.0 in January 7, 2019, bringing big changes. Websites will benefit from:

  • serious performance improvements (including sparse fieldsets)
  • better compatibility with JSON:API clients
  • more comprehensive test case coverage (including edge cases)
  • backwards compatibility with JSON:API 1.x
Drupal JSON API 2.x improvements

As well as:

  • the ability to see labels of the inaccessible entities
  • information about the user available via “meta.links.me”
  • error response cacheability
  • the config entity mutation feature moved to the JSON:API Extras module
  • a final farewell to the _format parameter in the URL
  • custom "URL" field to no longer added to file entities
  • filter paths closely match JSON:API output structure
  • URLs become objects with `href` keys

and more

Drupal JSON:API 2.0 was soon followed by a new one — JSON:API 8.x-2.1 in January 21, 2019. This is now the latest stable version. Drupal JSON:API 2.1 added two new features:

  1. support for file entity creation from binary data
  2. support for fetching non-default entity revisions.

We should also note that Drupal JSON:API 2.x module is part of the Contenta CMS decoupled distribution that uses best practices of decoupled architecture. JSON:API is immediately available with all new installs of the Contenta.

The related module JSON API Extras for customizing APIs is also fresh and updated. It has had a new 8.x-3.3 release on January 21.

Let’s build the optimal JSON:API setup

As we see, there are plenty of means and tools to build high-performance APIs. Our Drupal developers are keen in this area, and will select the optimal ones for your website. It can be the Drupal JSON:API 2.x module, core RESTful web services, GraphQL, and more. Contact our Drupal team!

Jan 15 2019
Jan 15

Let us invite you to an imaginary city that follows the Drupal Way! ;) Using the names of real Drupal modules, themes, and distributions, we at WishDesk team created the Drupal City map. Today we celebrate Drupal’s 18th birthday, so it’s a great opportunity to invite you there!

The idea and mission of Drupal City map

The world of Drupal modules is incredibly interesting, and we decided to show it to everyone. Our Drupal Map is much more than entertainment. It is meant to promote Drupal and give inspiration to developers, users, and customers.

And, of course, Drupal City will let anyone learn Drupal modules in a cheery and engaging way. You can click on the module images, see their brief descriptions, and visit their pages on​​​​​​​ drupal.org (then click again to close). Here and there, we also left little hints as to how these modules work. So the Drupal City map contributes to Drupal education.

Drupal City map

Welcome to Drupal City!

Just look around the​​​​​​​ Drupal City — it has everything you can imagine. You could walk along the Commerce CCAvenue, turn to the Beale Street, pass the Simple Columns and reach the Beach and the Sea, from which flows a mighty River of Tweets leading to the Waterfall Views.

It is possible to have a chat at the sociable Sticky Sharrre Bar, take a ride on the Owl Carousel, get some calories for Drupal ideas at the local Restaurant or Bakery, and lose extra calories in YG Fitness Gym.

You could also admire the Christmas Lights at the Commerce Square, visit the Open Church, and replenish your skills at the Library. And this is just the beginning!

The choice of modules for Drupal City

It was amazing to see how all these modules, themes, and distributions fit into the Drupal map like in a puzzle.

Some module names matched their map objects exactly, while for others we used a little wordplay. For example, the Commerce Square module does integration with the Square payment service — and it is a beautiful city square on the Drupal map. It makes the map even more interesting!

Drupal has so many fabulous modules that at some moments it was hard to choose between them. There were multiple awesome modules for particular objects — for example, carousels or fields. With real hard decisions to make, we chose the modules whose names better fit the map concept.

If you would like to see other Drupal modules, themes, or distributions on the Drupal City map, you are welcome to share your ideas, and we will consider adding them. Drupal City is truly welcoming, and it belongs to the Drupal world.

See you in Drupal City! It’s just an awesome little place on the Drupal Planet ;)

Created with love for Drupal by WishDesk team.

Jan 04 2019
Jan 04

Websites can be incredibly convenient and time-saving for administrators, and thus efficient for businesses, especially when it comes to websites on Drupal 8! Its latest release, 8.6, has become a true sensation in terms of editorial experiences. In addition to such new features as the oEmbed feature, Media Library, Layout Builder improvements, there is also the Workspaces module in Drupal 8.6, which we want to give an overview of right now. Get ready to read and enjoy! Of course, you can also upgrade to Drupal 8 or update to Drupal 8.6 with the help of our Drupal support team — and enjoy Workspaces and other new modules in action!

The purpose of the Workspaces module in Drupal 8.6

Workspaces is a new experimental module built into the Drupal 8.6 core. It lets website administrators review and edit the content and then publish unlimited amounts of it all at once.

They can switch between so-called environments, or parallel website versions. The built-in environments are “Live” and “Stage,” with “Live” as the default one. Other workspaces can also be created.

Editors can work with as many content pieces as needed while staying on the “Stage” environment. When all the content is reviewed and ready, it can be deployed to “Live” with just one magic button.

It is very convenient to see all the content just the way it will appear to visitors, instead of reviewing the pieces one by one. The staged content is not visible to others until the “Deploy to Live” button brings it to “Live.”

Workspaces vs Workflows: two Drupal 8 core modules to never confuse

Workspaces module in Drupal 8 core is sometimes confused with another one for content reviewing experiences. After all, Workspaces sounds very similar to Workflows — the module introduced in Drupal 8.5. Workflows provides content approval functionality in a duet with the core Content Moderation module.

So how do Workspaces and Workflows differ?

  • Workflows in pair with Content Moderation allows editors to move the content between such states as Draft, Archived, and Published, or custom ones. It provides a piece-by-piece moderation process based on roles.
  • Workspaces, on the contrary, provides bulk moderation processes. All content is reviewed and edited in one environment and then deployed to another. This is especially efficient for content-heavy websites.

Workspaces and Workflows are not only different, but also incompatible at the moment. Only one of them can be enabled in your Drupal 8 core. Otherwise, they may create collisions due to the fact they have the same entities pending approval.

An example of how the Workspaces module in Drupal 8 works

Examples are worth a thousand words, so let’s see Workspaces in action. First of all, we enable the module on the Extend page. The module is experimental, and we will see a warning about it when enabling.

how the Workspaces module in Drupal 8 works

Ok, we immediately notice the green “Live” button in the right hand corner of the site. After we click it, the stylish black Workspaces interface unfolds. It also has the “Manage workspaces” and “Edit” links under “Live.” The “Stage” button is in the left hand corner.

 Managing workspaces in Drupal 8

If we click the “Stage” button, we are offered a chance to activate the Stage workspace, so let’s click “Confirm.” That’s the usual way to switch between the environments. The active environment is always in the right hand corner, we click on it and can call another environment in the left hand corner.

Switching between worspaces in Drupal 8

So we are now on the “Stage” workspace. Let’s create some content that no one else will see. Please keep in mind that you will not be able to do the usual actions while in the environment other than the default one. For example, it will not be possible to create content types, generate dummy content with the Devel module, and so on — you will need to go to the default workspace for that. The default one is defined in workspace.services.yml as a parameter.

However, it is possible to manually create nodes of an existing content type right in the “Stage” environment, which we will do right now. We create 5 articles and edit something in them just for a test.

The Stage workspace in Drupal 8

We can’t see any articles when we visit our site’s main page in the Incognito window, because they are not yet deployed to “Live.” Let’s click “Deploy to Live,” and we will see a summary of the items to be deployed.

Deploying content from Stage to Live in Drupal 8

We click to confirm the deployment, and then we see the “Successful deployment” message. Looks nice!

Drupal 8 workspaces listed

Let’s now switch to check the visibility of our articles in the Incognito window. The articles show up already, which means they have been moved to “Live.” Our experiment with the experimental Workspaces module in Drupal 8.6 has been completed successfully!

Content deployed via Workspaces

Enjoy the new features in Drupal 8.6!

So it’s time to take everything “the great eight” has to offer — the Workspaces module in Drupal 8.6 and many other features.

For any help in upgrading to Drupal 8, updating to its latest minor version 8.6, configuring the new modules, or creating custom ones to precisely meet your needs, contact our Drupal agency!

Dec 10 2018
Dec 10

If you’re still using PHP 5.6 it is time to upgrade to a newer version. As of December 31, 2018, PHP 5.6 will officially become no longer supported.

For users of this soon-to-be obsolete version, time is running out quickly. Websites that are running PHP 5 will not only lack critical security benefits, they will also miss out on the significant performance improvements that are available within the newer versions. Contact a web development team for migration services as soon as possible and definitely before the year’s end.

PHP 5.6 End of Life

Let’s discover what should be done before PHP 5.6 end of life.

What Will Happen When PHP 5.6 End of Life Comes?

The software will continue to work, however bug and security fixes for PHP 5.6 will be no longer released. If any vulnerability is found, it will have no chance of getting remedied. Older version of PHP signal the green light for hackers to target unsupported websites.

To keep your website secure, we recommend that you upgrade to PHP 7 by the end of December 2018. Why not upgrade to PHP 6? This version didn’t work the way it was envisioned to and was completely scrapped. The deficiencies with PHP 6 were all taken into consideration while creating the 7th version, which works flawlessly.

What Should You Do Before PHP 5.6 End of Life?

For Drupal 7 website owners who work with PHP 5.6, a new Drupal version 7.61 was released. It entirely supports PHP 7.2. This will make upgrades from PHP 5 easier.

Drupal 8 support for PHP 5 will be dropped on March 6, 2019. You should contact a web development team for updating to PHP 7.1 or, better yet, PHP 7.2, which is supported as of Drupal 8.5 (which was released March, 2018). Drupal 8.7, with a release date of May, 2019, will support PHP 7.3.

How Can WishDesk Help?

It’s our task to stay on top of new and evolving technologies. That way we can always provide the highest quality services for your digital platforms. Contact WishDesk for your site’s code review and we’ll make sure your platform is PHP 7 ready. We can easily convert all your data to meet the demands of the upcoming new era before PHP 5.6 end of life.

Nov 27 2018
Nov 27

Our team loves exploring and using hot trends in development, one of which is decoupled Drupal architecture. Our previous post was devoted to using decoupled Drupal with JSON.API, and our today’s story hero will be “the Great Gatsby”. Does it sound like the famous book hero? No, Gatsby.JS is a new and hot JavaScript tool, but it promises to be equally famous and deserve a hundred books! In this post, we will discuss its principle of work and the benefits of using decoupled Drupal 8 and Gatsby.JS. And, of course, you always can rely on our Drupal experts in implementing it all.

Gatsby.JS: what it is and how it works

Gatsby.JS is defined a static site generator, but it is approaching a front-end framework in its capacities. Gatsby is built on very hot front-end tools, some of which are:

  • React.JS — the amazingly popular JavaScript library for building complex interfaces
  • GraphQL — the super efficient query language
  • Webpack — the great JavaScript module bundler 

Gatsby.JS is meant for building blazing fast static sites. It fetches the data to them from absolutely any sources and generates static content using GraphQL. Right now, there are 500+ source plugins to establish the connection between particular data sources and Gatsby. The sources include YouTube, Twitter, Hubspot, Shopify, Trello, Vimeo, Google Sheets, content management systems like Drupal, WordPress, and so on. 

Gatsby uses source plugins and GraphQL


Decoupled Drupal 8 and Gatsby.JS: the great duet and its benefits

One of the hottest and most beneficial combinations for today is Gatsby and Drupal 8. According to the the decoupled, or headless Drupal architecture, Drupal serves as the backend only, while Gatsby.JS handles the presentation layer. 

Drupal 8 and Gatsby.JS are both open-source, have a large and active community and a huge ecosystem of add-on modules or plugins. And Drupal 8 has built-in web services to make integration a breeze. 

What makes this combination so beneficial? The simplicity and speed of a static site combines perfectly with the power and flexibility of the backend provided by the Drupal 8 CMS. Here are at least some of the features that we get in the end:

  • Unmatched speed. Gatsby.JS pre-fetches all pages of the website instead of querying the database every time on demand, which makes navigation enjoyable and amazingly fast. Gatsby is a static PWA (progressive web app) generator. It efficiently fetches only the critical HTML, CSS, and JS files. 
  • Easy setup. No cumbersome deploy and setup processes will be needed with Gatsby. It builds your site as static files that can be quickly deployed anywhere.
  • Great personalization features. Drupal-and-Gatsby combinations can feature awesome user personalization and authentication capabilities.
  • Awesome content editing. Usually, static site generators need writing content in Markdown, which could be cumbersome for content editors. But the problem is solved with Drupal 8 as a backend! Drupal 8 content creation features are a joy for any content editor. 

One of examples of using decoupled Drupal 8 and Gatsby.JS is the demo site Umami Food Magazine. The site is built on headless Drupal distribution Contenta CMS with Gatsby.JS. 

Umami Food Magazine uses Gatsby 2Umami Food Magazine uses Gatsby

If this looks appetizing enough, contact our Drupal team right now to combine decoupled Drupal 8 with Gatsby.JS for you! Or continue reading about some implementation details. 

Some specifics of using Drupal 8 and Gatsby.JS

In the decoupled setup, both Drupal 8 and Gatsby sites need to be prepared to work together. They will be connected by means of the special Gatsby’s source plugin for Drupal that fetches data, including images, from Drupal 8 websites with JSON API installed. 

So it is necessary to install and enable the JSON API and JSON API extras contributed Drupal modules, as well as enable the core Serialization module on our Drupal website.

Enable JSON API module

Our next destination is Configuration — Web Services — JSON API Overwrites.

Configure JSON API

In Settings, we need to make sure the path prefix for JSON API is /jsonapi. This is what the Gatsby site will need to know.

Configure JSON API

In People — Roles — Permissions we give access to the JSON API list of resources to users with all roles, including anonymous.

Permissions for JSON API

Our Drupal site is ready for Gatsby integration, and we now need to prepare our Gatsby site. It begins with installing Gatsby’s CLI:

npm install --global gatsby-cli

Then we follow all the site creation steps in the “Get started” documentation. Gatsby also offers pre-configured starters for site creation.

Gatsby starters

Then we run Gatsby with the command, after which the Gatsby site should become available at localhost:8000:

gatsby develop

The above mentioned source plugin for Drupal then needs to be installed on the Gatsby site. Next, we add the piece of code from the plugin’s documentation to the gatsby-config.js file. The URL should changed to the one of our Drupal site.

plugins: [
 resolve: `gatsby-source-drupal`,
 options: {
 baseUrl: `https://our-site-name.com/`,
 apiBase: `api`, // optional, defaults to `jsonapi`

We then configure our Gatsby site to fetch exactly the content we need from Drupal. We need to create the appropriate pages in /src/pages on the Gatsby site and add the code for React import to the JS file. 

And we configure GraphQL at http://localhost:8000/___graphql to query the Drupal site exactly how we want. 

It all crowns up with the last command to publish our Gatsby site with the Drupal data:

gatsby build

This is just a very brief description of getting Drupal 8 work with Gatsby. Our experts are ready to do the setup exactly in accordance with your wishes.

Enjoy the combination of decoupled Drupal 8 and Gatsby.JS!

If you are interested in using decoupled Drupal 8 and Gatsby.JS, either on an existing project or on a new one, contact our Drupal developers. Our Drupal 8 team has great experience in third-party integration. We will advise you the best decoupled setup and, of course, smoothly implement it. Let’s enjoy the latest and greatest technologies!

Aug 30 2018
Aug 30

There is a long-expected feature in Drupal 8 to make website users engaged and editors happy. It lets you easily embed third-party videos from an URL into your site’s content, and it’s called the oEmbed feature for Drupal 8’s Media module. It will be fully ready for production sites as of September 5, 2018, with the official release of Drupal 8.6.0. Of course, no one will be able to resist updating to this feature-rich version as soon as possible! You can always rely on our Drupal team for a smooth update to Drupal 8.6.0 or upgrade to Drupal 8. In the meantime, while the new Drupal subversion is “preening its feathers,” we will raise the veil on its new and magic oEmbed and see how it works.

What is oEmbed technology?

In a nutshell, oEmbed is a format that allows you to create embedded representations of URLs from third-party resources on your website. The oEmbed format is supported by the most popular resources with multimedia content — Facebook, Twitter, YouTube, Instagram, Flickr, Vimeo, and more.

The new oEmbed feature in Drupal 8 

The fact that the oEmbed support has been added to Drupal Media module is awesome. It makes Drupal 8 a great choice not only for news and media websites, but for sites in all other industries that know the power of interesting video content.

This helps you capture your users’ attention with your product, service, or brand videos, as well as engage them with scenarios where they can share videos themselves. In addition, you can set up how exactly the videos will look when embedded into your content.

Drupal 8 has an out-of-box support for embedding YouTube and Vimeo videos by means of the oEmbed technology. However, Drupal 8’s basic API makes it possible to also set up this “cooperation” with any other oEmbed providers.

How oEmbed works in Drupal 8 

In Drupal 8.6.0 with its oEmbed, we will immediately notice its novelty as compared to Drupal 8.5.6. First of all, an experimental module “Media Library” is in its core, which allows you to save and reuse media. Together with the Media module, the Media Library module should be enabled.

We have previously mentioned that the Media module introduced Media Types for Drupal 8 websites. So another great novelty of Drupal 8.6.0 is that, in addition to the already “traditional” Media Types in Drupal 8.5.x, there is a new one called “Remote Video.” See the difference:

Drupal 8.5.6:

How oEmbed works in Drupal 8

Drupal 8.6.0:

oEmbed in Drupal 8.6.0

When opening the “Remote Video” configuration tab, we see that this media type is already perfectly preconfigured. However, it also has options for us. We can configure the allowed providers and the video thumbnail location, as well as for field mapping.

oEmbed feature in Drupal 8 oEmbed feature in Drupal 8

OK, let’s see how any content editor or user — according to your website’s permissions and content creation scenarios — can embed a video from YouTube.

They can do it by going to Content — Add Media — Remote Video. And you see that the form is incredibly easy. Adding a URL is all they need!

oEmbed feature in Drupal 8

 So the newly added video is already saved in the website’s Media Library. What we now need is to display it in our content.

Here the options are unlimited! Site builders and administrators can decide which content types should have the video embedding feature (news, blog posts, products, bios, and so on). All they need is to add the “Media” field to particular content types.

In our example, we have added the “Media” field to the article content type and called it “OEmbed video.”

oEmbed in Drupal 8

Let’s rearrange the fields a little to place the oEmbed video immediately after the article body.

oEmbed in Drupal 8

From now on videos are embeddable into any article. For this, the article creation form now has an “OEMBED VIDEO” option where we will click “Browse media,” immediately see all the videos we have saved, and select the needed ones.

oEmbed in Drupal 8

So here goes our article with the video embedded into it!

Drupal 8 oEmbed feature

To recap

You can admit it — the new oEmbed feature in Drupal 8 looks really good! We have shown its basic settings, but there are more to play with.

If you need help with that, or if you want to customize the embedding functionality to your needs, you are welcome to contact our Drupal 8 development team

And, of course, if you are not with the amazing Drupal 8 yet, reach out to us for an upgrade.

If you already are with Drupal 8, ask us and we will update you to Drupal 8.6.0 in the first days of September, as soon as it appears — bringing the oEmbed feature and plenty of others!

For any of these tasks, contact our Drupal experts, and let Drupal 8 work its magic on your site!

Aug 20 2018
Aug 20

When you combine different technologies, you multiply their powers, and the results are stunning! That’s what happens, for example, when Drupal cooperates with JavaScript tools. Drupal 8’s brand-new architecture with API-first improvements gave it especially impressive integration capabilities. However, to make things even better, enthusiasts created Drupal Waterwheel. Plenty of interesting details about it are coming right now. So let’s set the wheels turning — or, better to say, the waterwheels!

Drupal and JS: the rise of decoupled architecture

To explain the importance of Drupal Waterwheel, we need to mention the decoupling “boom”. In recent years, it is increasingly popular to use a CMS as a data source, while exposing this data to another front-end, or even a whole ecosystem of devices. 

In case with Drupal, the front-end “fiddle” is played by React, Angular, Vue, Ember, Backbone, and many other lightning-fast JavaScript frameworks. This approach is known as decoupled, or headless Drupal

With the strong “back” provided by the most powerful CMS such as Drupal, the newly-made sites and apps impress users with a sky-high level of interactivity and speed. They are able to create unique users experiences and significantly increase your audience.

It’s not only that Drupal developers choose JavaScript frameworks for decoupling. The creators of various JS applications also choose Drupal as a backend CMS. However, some of them are not acquainted with it. That’s where Waterwheel comes for help!

Drupal Waterwheel, its mission and work

Waterwheel is meant to make Drupal more understandable to non-Drupal and non-PHP developers. For customers, this means a wider choice of developers who can implement their wished. 

Basically, Waterwheel is an ecosystem of SDKs (software development kits) that help developers obtain data from Drupal and manipulate it in various ways. 

Drupal Waterwheel frees them all from the need to know the ins and outs of Drupal’s core REST. This inspires them to choose Drupal as the backend CMS, as well as speeds up the development processes.

When we talk about the Waterwheel ecosystem, we should first of all mention the Waterwheel.js — a generic JS library, which helps handle Drupal 8 data via Drupal REST and JSON API. It is a great fit both for progressively decoupled and fully decoupled scenarios.

There also are framework-specific tools like the following: 

  • React Waterwheel App — a sample application based on Drupal 8 and Waterwheel.js to demonstrate integration with React.js
  • Ember Whatewheel App — a sample application to demonstrate the integration of Drupal and Ember.js via JSON API
  • Ember Drupal Waterwheel — a helpful add-on for the developers of Ember apps that consume Drupal data.

A special Drupal module called Waterwheel is meant for those who want to have resource discovery in their application for the sake of client-side validation. However, the module has become obsolete is no longer needed. Instead, you can rely on the OpenAPI module to obtain the resource information from Drupal.

Final thoughts

With the help of such great assistants as Drupal Waterwheel, it’s high time to fulfil the most ambitious ideas about combining Drupal with JavaScript tools.

Our Drupal developers also have great skills with JavaScript technologies. They can help you create the perfect decoupled setup or other integration scenario. And, of course, if you have a Drupal 7 or 6 website, our experts can migrate you to Drupal 8 with its awesome integration perspectives.

Contact our Drupal development team — and you will amazed at what your site or application can do in the right combinations!

Jul 26 2018
Jul 26

News and media websites appreciate sensations. OK, here is a real sensation for them! No other word is big enough to describe Drupal 8 — the latest version of the famous site-building platform. Drupal 8’s benefits are awesome for all kinds of sites. But today we have a special journalistic investigation — we’ll discover how Drupal 8 can be useful particularly to news and media websites.

Drupal 8’s benefits for news and media websites

  • Easy media handling as a priority for Drupal 8

News and media website editors regularly create, upload, or edit various kinds of multimedia. Making these processes convenient was a priority in Drupal 8. And the goal has been successfully achieved!

The new media handling system is superb. It lets editors manage audios, videos, images, and files exactly in accordance with their preferences. This includes working with both locally stored media and those from third-party sources (YouTube, Instagram, Pinterest, SlideShare, and every other site imaginable). Editors can save media in the library for further use, create custom media types, use the drag-and-drop and the oEmbed features, and much more.

This is achieved thanks to the awesome Media module that came to the Drupal 8 core as of Drupal 8.5.x. It remains the focus of developers’ attention with new features added frequently. The Media module is also extensible with many useful contributed modules that touch every aspect of media handling.

  • Super convenient content editing

Tons of content every day — that is often the reality of news and media websites. Luckily, working with content is a joy in Drupal 8.

Inline editing without leaving the page lets your content managers quickly fix any possible typos with no need to visit the admin dashboard.

quick edit on drupal 8

Other benefits include the drag-and-drop features, copying directly from Word, super easy image adding, the clean and modern HTML5 markup, the possibility to shape your toolbar as you wish, handy content previews, and much more.

Among the freshest novelties are the Content Moderation and Workflows modules in Drupal 8 core that help you create fine-tuned content moderation processes with different content states.

This works perfectly with Drupal’s flexible system of user roles and permissions. For example, your news publication workflows can involve a copywriter, an editor, a moderator, and anyone else you want with any permissions you decide.

  • Drupal 8’s exceptional multi language features

Especially for international news and media websites, multiple languages are important. However, even local resources find this feature very useful. It helps them bring their message across to more audiences.

Drupal 8 has absolutely fabulous multi language possibilities. The four built-in modules let you add languages to your websites. You have a choice of over 100 languages,  and their interfaces are already translated by the community.

You can also decide exactly what will be translatable on your site. In addition to interface, Drupal 8 lets you translate website configuration (account settings, users roles, comment types, and more).

And, of course, you can translate content.

adding translations

Editors will appreciate how easy it is to add translations to their pieces of news.

adding a translation
  • Third-party integration is in full bloom

Thanks to Drupal 8 unmatched integration capabilities, your news and media website will easily interact with external systems.

RSS feeds, social media integration, monetization tools, content sharing to iOs or Android applications are just a few examples of this.

Drupal 8 is API-first — it has special core modules for outputting any content via a REST API. Non-RESTful approaches are also possible.

While outputting your content, the magic Drupal 8 modules converts it to the necessary format (JSON, HAL, and so on).

  • High speed and special caching techniques

Drupal 8 will take care of your website speed, even during very high loads. It has great built-in caching modules.

One of them, the BigPipe module, offers a very special technique that raises the perceived loading speed. It instantly delivers the unchanged parts of your website to users (your header, news categories etc.). The dynamic elements, like your newly added pieces of news, “arrive” next. Thanks to this, your readers are not bored — they do not wait for the whole page to load.

  • Mobile responsiveness as a key

Users consume news website content from all possible devices, often on the fly. Is your website ready? Drupal 8 has a mobile-first approach and is perfect for creating mobile responsiveness.

All website elements will adapt themselves to various device screens (shrink, grow, hide) to create a great user experiences with minimum zooming and scrolling.

To recap

We have only raised the veil a little bit — Drupal 8 has plenty of other treasures. If you wish to order the creation of an amazing Drupal 8 news and media website, or migrate to Drupal 8 — you are welcome to contact our Drupal expert team.

You, your audience, and your editors will be delighted with Drupal 8!

Jul 02 2018
Jul 02

One of the sure ways of engaging your visitors is using various multimedia on your website. In Drupal 8, great attention has been paid to creating a perfect media management system. Congrats! A novelty of 2017-2018, the brilliant Media module in Drupal core is now one of Drupal 8’s greatest benefits. Let’s do a little overview of what the Media module gives you, how it works, and which Drupal 8 minor versions already have it available.

The Media module in Drupal 8

Drupal 8’s Media module is a lucky “blend” that inherits the functionality and API from the Media Entity module, as well as the Media Entity Image and Media Entity Document.

It is a whole framework for uploading and managing various media (audio, videos, and images), as well as files. This applies both to locally stored media and those from third-party sources (various social media, services, and so on).

The Media module is extensible with add-on contributed modules. They provide additional integration and other features related to Audio, Remote video, Slideshow, Twitter, Facebook, Instagram, Flickr, Spotify, Pinterest, Slideshare, DropzoneJS, GoogleDocs, and many more.

Together with them, the Media module lets your create any desired media handling scenarios.

This includes displaying media in your content exactly the way you want (as plain text, as thumbnail, with image, with author, and so on), uploading media with a drag-and-drop feature, integrating slideshows, cropping images, and much more.

The Media module: media types, fields, and sources

All the above mentioned things are possible thanks to important Drupal 8’s media handling concepts, one of which is media types. Like Drupal content types, media types are part of the site’s structure. Media types are represented by individual media entities (for example, a particular tweet).

It is possible to add fields to media types and manage their display. There is a special Media field available to add to content types so that media can be attached to content.

Field mapping is a truly remarkable feature of the new media system. It lets you pull various types of data from the third-party media and store them as “classic” Drupal fields. For example, you can choose to show the tweet’s author in your content, date of publication, and so on.

When enabled, the Media module immediately offers four built-in media types:

  • Audio
  • File
  • Image
  • Video

Content editors and site administrators are also free to create their own media types. Each custom media type will be based on a particular “media source” that should be selected once and for all.

The media source adds some special logic to your media type. They include field mapping opportunities, using the provider’s API, generating thumbnails, and many more, according to the media source.

Media sources include the built-in audio, file, image, and video, and there are many others provided by the relevant contributed modules.

The fast-changing Media and Drupal 8 versions

In addition to being an important security practice, regular website updates let you enjoy new features. This has never been as true as when it comes to the Media module in Drupal 8.

The Media is so hot on the Drupal community agenda that its capabilities change incredibly fast. To catch up with them, you need to regularly update your Drupal 8 website to the latest minor version.

The Media module “jumped” into the Drupal 8 core in Drupal 8.4.x. So, Drupal 8.4.x became the first version where the Media module could be seen. Well, not literally — the module itself was hidden from the dashboard. In the meantime, the Media API was ready for developers so they could polish their related contributed modules.

In Drupal 8.4.x, one of the of the ways to “call” the Media module into action was to enable some contributed module responsible for specific areas of media handling (Twitter, Facebook, Instagram etc.). Drupal then asked you to enable the Media module as a dependency.

Despite these difficulties, the functionality was already quite usable and similar in many ways to that in Drupal 8.5.x.

Drupal 8.5.x, the newest stable version of Drupal 8, gave the official start to the Media module as part of the core.

Polished and improved, available on the “Extend” dashboard, the Media module was finally ready to impress content editors and inspire website owners to update to Drupal 8.5.

More great news: the oEmbed feature

There is one more feature actively discussed and expected with impatience. Enthusiastic drupalers have finally added the oEmbed support to the Media module.

OEmbed is an open format that allows you to display content from a third-party provider, when a user inserts an URL. The oEmbed format is supported by Facebook, YouTube, Vimeo, and most other famous providers.

Drupal 8’s got an API for working with oEmbed services. It also now has plugin to support YouTube and Vimeo out-of-box.

The oEmbed feature will be officially available with the release of Drupal 8.6.x. Right now, Drupal 8.6.x is being tested and improved, and is expected to come out in early September.

To recap

That’s a just a very brief overview of the Media miracle of Drupal 8 core — the Media module. In connection with this, we have some more great news:

  • Our Drupal team is always ready to assist you in creating media entities and fine-tuning the media management processes.
  • Of course, regularly updating your site to every new minor Drupal 8 version (Drupal 8.5, Drupal 8.6) is a breeze for us.
  • Finally, if you are not yet using Drupal 8, a smooth upgrade is one of our areas of expertise.

If you have any questions, you are welcome to apply. Let your Drupal website be incredibly engaging thanks to the perfect use of multimedia!

Jun 11 2018
Jun 11

A million words are not enough to describe Drupal 8’s benefits for websites. Its amazing third-party integration opportunities, multilingual superpowers, mobile-first approach, easy content editing, and many other features convince website owners that it’s time to upgrade to Drupal 8 or build a D8 site from scratch. But especially impressive are Drupal 8 website architecture changes. With them, website development processes are far more efficient, and every website is much easier to create, deploy, maintain, update, or extend. We will now look behind the curtain and see a little more.

The need for big architectural changes

Drupal’s founder Dries Buytaert explained some of the reasons why Drupal needed big architectural changes. Forward-looking changes are always necessary for a CMS to stay on top. With Drupal 8 changes, the community wanted to resolve certain limitations of Drupal 7, modernize Drupal as much as possible, and make it universally understandable so that companies of all sizes could easily find developer talent.

To achieve this, Drupal adopted Symfony components, modern PHP concepts, OOP, Twig template engine, and more. It rebuilt its core, APIs, configuration management system, and so on. The results are stunning — Drupal 8 architecture is truly brand-new compared to that of Drupal 7. Let’s take a closer look at some of these changes.

Drupal 8 and its new website architecture

Drupal 8 and OOP

Here is something that makes website code better structured, highly reusable, very maintainable and extensible, and also easy to read by non-Drupal developers. This is the adoption of OOP (object-oriented programming) in Drupal 8.

As opposed to traditional, or procedural programming, OOP has most of the code presented as classes and objects of these classes. Objects have certain properties and use certain methods.

The three major principles of OOP include encapsulation, inheritance, and polymorphism. Developers deal with namespaces, indenting and whitespace, naming conventions, and so on.

Sounds complicated? Well, OOP PHP does present a learning curve for developers, which is made up for by numerous benefits.

Drupal 8: “Symfony inside”

The new version of Drupal contains the components of Symfony 2 — the modern, object-oriented, PHP-based framework.

It is not necessary for Drupal developers to learn Symfony as a framework — they just need to get acquainted with Symfony components, and the reward is amazing.

With Symfony 2, Drupal development becomes even more flexible and in line with trending technologies.

And, of course, this significantly saves development time. With no need to “reinvent the wheel” and build everything from scratch, Drupal developers can use plenty of ready solutions for various projects.

Among all the inherited Symfony 2 components, the strongest impact on D8 core has probably been made by DependencyInjection, EventDispatcher, and Routing.

Twig template engine in Drupal 8

A true “jewel” of Drupal 8 front-end architecture is the Twig template engine that replaces Drupal 7’s PHPTemplate.

Twig gives you clean templates with consistent code. Thanks to its inheritance in Twig files, duplicate code is avoided. The logic and presentation are properly separated. And, overall, Twig is more secure, easier to work with, and richer in options.

“You don’t need extra modules for features like slideshows or widgets on your page. You can do it in the theme,” said Mark Ferree and Matt Cheney in their webinar about best practice architecture in Drupal 8.

Drupal 8 and Composer

Composer has been called the best thing that has happened to the world of PHP, and Drupal 8 is now using the best.

This command-line tool manages your website dependencies — all the necessary libraries and packages you need. Composer lists all your website’s dependencies in the special composer.json file.

Saying “dependency manager” cannot fully describe Composer’s powers. The tool is helpful on every step of Drupal 8 development.

A good tone, and a very convenient practice in Drupal 8 allows you to use Composer for installing and updating Drupal core, modules, and themes, applying patches, and more. Commands like “composer create-project” and “composer update drupal/core” are just a couple of examples of numerous commands that can do magic in the terminal.

Powerful Drupal 8 core

The heart of Drupal, its core, has become more powerful than it has ever been before. So you no longer need extra modules for many of your needs — a lot of things can be done with D8 core capabilities.

Drupal 8 also introduces lots of new APIs that deal with everything, be it caching, migration, third-party integration or anything else.

The admin dashboard alone is like a flight control console.The Views module is now in the core, and gives you almost unlimited opportunities in structuring and presenting your content in accordance with to all imaginable settings. Intriguing novelties like the Layout Builder module help create layouts for content items and lets anyone feel the architect of their site with no coding as well. And that’s just the beginning.

Final thoughts

Let some awesome story begin right now — upgrade to Drupal 8 or order a new website creation. Our developers love Drupal 8, create modules and patches for it, and teach D8 classes to newbies. They know how to use the benefits of new Drupal 8 website architecture for you. Drop them a line!

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web