Oct 28 2019
Oct 28

Lazy load images in Drupal with BLazy

Recently, we involved in a local project with Ecoparker.com. It is a directory of restaurants, cafes, entertainments, services, real properties ... in Ecopark Hanoi, Vietnam. This site is based on our best selling directory theme BizReview.

On this site, there is a page which lists all kindergartens around the area. It has 20 listings and will continue to grow. It is a very typical page built with Drupal views.

Kindergartens at Ecopark

By curious, we ran a PageSpeed Insight test, a Goolge provided test for accessing how fast your page is loading, to see how it performs.

The score on Desktop was 75, which is quite good. But let's see how we can improve it.

Page speed test - before

Scroll down to the Opportunities section which suggests how to help your page load faster, we see an interesting point "Defer offscreen images" with the suggestion:

"Consider lazy-loading offscreen and hidden images after critical resources have finished loading to lower time to interative

Page speed test - suggestions

Lazy loading is a technique that only serve content when it becomes visible to users, ie, when users scroll to it. If it is off screen, we don't load it to save bandwidth. It will be much useful when your sites contain a lot of images, so we don't have to load them all everytime an user browse the page. Only when the user scroll, images load and become visible.

It brought me to a question that how to lazy load on Drupal.

We had a look a the Blazy module, because it was a prerequisite of another module on our site. Previously we haven't been curious to know what it does. It turns out to be a very popular module with 30K+ sites reporting using this module.

Looking in more details, this module is very promising:

On private benchmarks, Blazy saves a page with lots of images from 14MB to 3MB, 200 http requests to 20, loading time 30s to 3s. Elevating performance grade from F/E to A/B via gtmetrix. Overall ~5-10x better.

On the description page, Blazy offers:

  1. Blazy as field formatter
  2. Blazy filter as HTML filter (on your CKEditor)
  3. Blazy Grid as Views style

That's all we need, so we started to get our hands dirty.

1. Install module:

Install and enable the module as usual, via the admin interface or composer: https://www.drupal.org/docs/8/extending-drupal-8/installing-drupal-8-mod...

Note: if you use Slick module for slideshows, it requires Blazy 1.0. But to get Blazy as a HTML filter, you need the 2.0 version.

2. Blazy configuration:

Blazy configuration is available at /admin/config/media/blazy. There are a bunch of options, like custom placeholder image, offscreen view port etc ... You are good to go with default settings.

Drupal Blazy UI configuration

3. HTML filter

Just go to /admin/config/content/formats, edit the Full HTML format, and enable the Blazy filter.

Drupal Blazy filter as HTML filter

Your HTML content will be automatically applied Blazy filter, ie, images and iframes will be lazy loaded. On our project, we found that images lazy loading works properly, but iframes do not. Not sure why, but we will come back for it at a later time.

4. Views

We editted the view page, on the Image field, there is a new Image format. Choose Blazy and set the image style, Save it.

Drupal Blazy on Views

All images on this view based page are now lazy loaded. If you scroll fast enough, you will see the placeholder are blinking first, then your images will show. Awesome!

After that, we ran the PageSpeed Insight test again.

Page Speed test - after

As you can see, the issue with "Defer offscreen images" is gone. The point have raised to 81, which is slightly better. That's what we need.

In conclusion, please consider to apply the lazy load technique to all of your Drupal sites, as it is highly recommended for a high performance site.

Oct 24 2019
Oct 24

In the world of PCs, smartphones are much smaller than their desktop “brothers” but their significance keeps growing bigger and bigger. More and more users prefer to interact with brands using them.

So website owners hurry up to make their website mobile-friendly, considering the mobile boom, as well as Google’s mobile-first indexing that shows the search giant primarily takes into account the website’s mobile display.

In addition to this, many go further and also build a mobile application to give an extra boost to their business.

Drupal is a great choice for both of the above:

  • Making websites mobile-friendly is a breeze with Drupal 8 thanks to its mobile-first principle. Responsive web design has page elements adapt to the current device and provides the user with the most convenient experiences.
Responsive web design in Drupal 8 example
  • Drupal can also be the base for creating fast, lightweight, and effective mobile applications. That’s exactly what we will focus on in this post. Let’s see why to build a mobile app with Drupal.

Some benefits of mobile apps for business

Mobile apps vary in architecture, but most of them are united with the following benefits:

  • Mobile apps significantly expand your mobile reach.
  • You can add more ways of communication with your users and offer them more interesting features.
  • Mobile apps build a multichannel presence and promote your brand.
  • With them, you are closer to your audience even when their smartphone is offline.
  • You can benefit from in-app advertising.
  • You have access to the device’s hardware (i.e. camera to make images).
  • They allow you to use the specific capabilities of iOS and Android devices.
  • You will get additional profits from being able to sell your mobile app in app stores.

and much more.

Mobile app example

Drupal as a platform to build a mobile app with

Speaking about mobile app development, you might be surprised to hear about Drupal among the great solutions. After all, Drupal is a PHP-based, enterprise-class content management framework known in the area of website creation in the first place.

OK, let Drupal pleasantly surprise you in the mobile app area! Drupal works as a robust data source and shares its data to your mobile app, responding to requests and events on it. The data includes your content, business logic, functionality, user base, and so on.

This suits all cases:

  • If you already have a Drupal website, you can create a mobile app on its basis.
  • If you are thinking about a strong backend platform for your mobile app, Drupal is your reliable choice.

Drupal is becoming an increasingly lucrative option for mobile development thanks to the following:

  • Drupal 8 adopted an amazing API-first principle and has 5 powerful modules for web services in the core. They provide Drupal’s smooth “communication” with any apps. Drupal REST APIs send data in the JSON format that is easy for applications to consume.
  • There are plenty of Drupal modules, development kits, libraries, and sample mobile apps to boost mobile development and integration.
Mobile app example

Native mobile apps with Drupal

Native mobile applications are written in the programming languages that are native to their device operating systems. For example:

  • Java and Kotlin for Android mobile apps
  • Swift and Objective-C for iOS mobile apps

Native apps are characterized by amazing productivity, the availability of device-specific features, user experiences tailored to the device, and more.

Drupal developers’ skill sets usually include PHP, MySQL, HTML, CSS, and JavaScript, which could sound a bit far from the native mobile app programming languages. However, this is easily solved by using helpful software development kits, frameworks, and base apps.

Among them are PhoneGap, Waterwheel Swift, Drupal 8 iOS SDK, Example iOS app for Drupal 8, One Drupal Android, and others. They help in building native mobile apps and connecting Drupal to them.

Web-based mobile apps with Drupal

Unlike native mobile apps that use device-specific programming languages, web-based mobile apps rely on standard web technologies like HTML, CSS, and JavaScript. Web-based apps run in mobile device browsers.

They may be limited in their device-based capabilities, but they are versatile and have a faster time to market. Connected to Drupal via a REST API, these apps look like native to the Android or iOS users while sharing Drupal data with them.

Today, there are plenty of JavaScript frameworks and tools that are characterized by amazing speed and interactivity. They include Vue, React, Angular, GatsbyJS based on React and GraphQL, Ionic based on Angular and Apache Cordoba, and so on. They pair perfectly with Drupal. Helpful SDKs, modules, plugins, and libraries help developers build faster and speed up the integration.

Build a mobile app with Drupal!

It’s time to let your business fully embrace all the benefits of mobile development. Our web development agency can help you with this. Ask our developers to build a mobile app for your specific business case, or to perform the smooth integration between your existing software.

And, of course, also don’t forget about your website that needs responsive web design.

The mobile future is here!

Oct 03 2019
Oct 03

The proper use of internal linking can turn any website into a powerful marketing tool. It is a vital part of effective content writing strategies. In this post, we explore why it is so, as well as review a helpful module for smart content linking in Drupal 8 — D8 Editor Advanced Link. Let’s go.

What is internal linking on websites?

Internal linking is known as the practice of placing hyperlinks inside content leading to the other relevant pages within the same domain. Internal links to content often use the keyword-rich anchor phrases. 

Why is internal linking important?

  • It boosts SEO rankings by helping the search engines understand what your pages are about, offering them multiple entry points to crawl your websites, as well as increasing page authority.
  • Session duration grows — users visit more pages per session, which, among other things, is an important search ranking factor.
  • Internal linking enhances user engagement by offering them more and more relevant content. They simply cannot leave!
  • The conversion rate potentially grows because users remain interested. They get closer and closer to making the desired conversion.

Internal linking in Drupal 8

Content links should be handy both for content editors to create and for website readers to navigate through. Of course, it’s possible with Drupal 8! 

First, creating links in Drupal 8 is handy for anyone by default — thanks to the built-in CKEditor with a link icon on its dashboard.

Standard link creation in Drupal 8's CKEditor

Second, there are also tools for creating links in Drupal 8 CKEditor that further extend the standard functionality. They are meant for more advanced internal and, of course, external linking as well. Let’s look at how this job is performed by one of them — the D8 Editor Advanced Link module.

The D8 Editor Advanced Link module

The Drupal module D8 Editor Advanced Link increases the website’s usability both for the content creators and readers in the following ways:

  • Content editors and SEO managers can control more precisely from the CKEditor panel how the content links are displayed. 
  • Content readers can enjoy rich links and more convenient navigation.

These content linking capabilities include:

  • linking directly to exact phrases or even words on the page
  • adding CSS classes
  • making links open in a new or in the same window
  • displaying the link’s title on mouseover
  • adding relationships between the linked and the source page

“This is a super simple module that serves a very cool little purpose,” said Thomas Shean, a famous Drupal contributor, in the video tutorial about the D8 Editor Advanced Link.

The principle of the D8 Editor Advanced Link module’s work

The module provides advanced link creation by offering more attributes to be added to them. Let’s compare. The classic Drupal CKEditor has just one field for the URL during content linking:

Standard link adding form in Drupal 8's CKEditor

Everything is different with the D8 Editor Advanced Link module installed. It enriches the Drupal 
CKEditor’s content linking menu with advanced attributes such as: 

  • title
  • class
  • id 
  • target 
  • rel
     
D8 Editor Advanced Link module's capabilities

The difference is amazing. More details will be discussed in the “Installation and configuration” part.

Installation and configuration of the D8 Editor Advanced Link

  • Installing and enabling the module

First, we need to install and enable the D8 Editor Advanced Link module on the Drupal 8 website. 

Enabling D8 Editor Advanced Link module in Drupal 8
  • Preparing the text formats

Next, we go to Administration — Configuration — Content authoring — Text formats and editors and open the “Full HTML” format.

Text formats in Drupal 8

We make sure we have the “link” buttons on the active toolbar. If not, we need to drag them there. We will need them, as well as the “source” button.

Configuring Drupal 8's CKEditor dashboard for adding links

We should also look at the "Limit allowed HTML tags and correct faulty HTML" filter. 

  1. If it is unchecked, there is nothing else to do, since there are no restrictions in tags. 
  2. If it is checked, you can add more allowed HTML tags manually (such as "title," "class," "id," "target," and "rel")
  • Using the content linking attributes

When we have prepared everything, we can go ahead with our Drupal content linking. When selecting the part of the text that needs to be linked and clicking on the “link” button, we will see a form with advanced attributes that just need to be unfolded. 
 

Advanced link attributes in CKEditor Advanced Link module for Drupal 8
  • URL. This is the URL of the destination page.
  • Title: This is the text that is shown as a tooltip when the mouse hovers over the link.

Advanced section:

  • CSS classes. This is the place to add CSS classes. Multiple ones are supported, which should be separated by spaces.
  • ID. This allows you to use URL fragments and lead users to a specific portion of the page. For example, you list “ID2” at the end of the URL tag after the “#” symbol. Then you should mark where the “ID2” fragment begins inside in the source code of the destination page. Like this: <p id="ID2">.
Using URL fragments in Drupal 8
  • Target. This is a simple check/uncheck option as to whether the links should open in a new window or not.
  • Relation (rel). This is for adding relationships between the source and the destination document (e.g. “nofollow,” “noreferrer,” etc.).

Make your internal linking in Drupal 8 more advanced!

With Drupal, there are always more opportunities than you could imagine. Make your content workflows much smarter by installing the D8 Editor Advanced Link module or other modules for internal linking in Drupal. 

Our Drupal team is always there for module selection, installation, configuration, or creation from scratch!

Sep 18 2019
Sep 18

It’s great to live at a time when a robust CMS can share its content with an ultrafast JavaScript front-end. One of the best examples of this is combining Drupal and GatsbyJS. We are happy to see a new tool for it that is fresh from the oven — Gatsby Live Preview module for Drupal 8. 

It provides Drupal editors with easy content creation workflows, making Drupal and Gatsby integration a more lucrative idea for developers and website owners.

GatsbyJS: a great companion for Drupal

The GatsbyJS modern site generator inspires the Drupal community more and more for many reasons. Here are at least a few:

  • It is based on the hottest technologies such as the ReactJS front-end framework, the GraphQL query language, and the Webpack JavaScript module bundler. 
  • It is amazingly fast and provides real-time content updates. Every static Gatsby site is, in fact, a full-fledged React app. 
  • It comes packed with 1250+ source plugins to retrieve data from particular data sources. This includes the Drupal source plugin that connects your Drupal site as a data source to your Gatsby site.
  • It has 250+ starter kits to quickly set up a Gatsby website that will display your Drupal 8 data.
GatsbyJS starter kit exampleGatsbyJS starter kit example 2

The Gatsby Live Preview module in Drupal 8

The contributed module called Gatsby Live Preview allows Drupal content editors to make content updates and immediately see how it will look on the Gatsby site before deployment. 

This easy content creation is provided by showing Drupal on the left and Gatsby on the right:

Gatsby Live Preview module in Drupal 8

The maintainer of the module, Shean Thomas, gave a talk and showed slides of the Gatsby Live Preview module at Decoupled Days in New York on July 18, 2019. 

Thomas explained the problem that the module solved. Previously, there was no easy way to see during content creation how changes would look like before you click “save.” Among the available options was to run the Gatsby development server before deploying the changes to live, which required the entire site regeneration. 

According to Shean Thomas, among the plans for the future is integrating the module with the Drupal 8’s Content Moderation module. The core Content Moderation and Workflows modules take content creation to a new level through handy editorial workflows in Drupal 8

The module is very new with its alpha release out on August 14, 2019. It is based on the tool introduced by the Gatsby team — the Gatsby Preview Beta

Steps to install and configure the module 

This part comes when the main setup is complete. So we assume you are done with:

  • Gatsby site creation
  • Gatsby Source Drupal plugin installation (version 3.2.3 or later)
  • configuring the gatsby-config.js file to list your Drupal website’s address
  • building up your Gatsby pages to display Drupal content

So the live preview setup steps are as follows:

  • install and enable the Gatsby Live Preview Drupal module the way you prefer
  • set up a Gatsby cloud preview account
  • set the “preview” flag to “true” in the “options” (the Gatsby Source Drupal plugin’s file)
  • Gatsby is now ready to follow the content changes at a particular URL
  • copy the preview URL from the Gatsby cloud to the “Gatsby Preview Server URL” (Configuration — System — Gatsby Live Preview Settings of your Drupal admin dashboard)

Examples of easy content creation & preview with the module 

The Decoupled Days' speech about the Gatsby Live Preview module greatly inspired the Drupal community. In order to make it easy for people to get started with Drupal and Gatsby integration. 

Drupal contributor Jesus Manuel Olivas decided to improve some features in the module.

The developer also added this setup to projects based on the Drupal Boina Distribution and shared his impressions about the module in the blog post with the video. Let’s have a look at this easy content creation process:

  • On the left side, we see the Drupal site where some content is added via the admin interface. 
Gatsby Live Preview module in Drupal 8 exampleGatsby Live Preview module in Drupal 8 example
  • On the right side, we see the Gatsby site update immediately after the “Save” button is clicked in Drupal.
Gatsby Live Preview module in Drupal 8 example

 

Get the most of Drupal and Gatsby integration!

Our developers will help you enjoy the incredible speed that GatsbyJS is able to give to your Drupal website! They can:

  • set up a Gatsby website and establish content retrieval from Drupal
  • build your Gatsby pages exactly according to your wishes thanks to GraphQL
  • install and configure the module for Drupal and Gatsby live preview for easy content creation

Our Drupal team are masters of modern JavaScript technologies. You can entrust this integration to us!

Sep 04 2019
Sep 04

Drupal 8 makes it easier and easier to create rich, interesting, and beautiful content pages. Among the new features of the Drupal 8.7 release, we saw the stable Layout Builder and the new Media Library user interface. 

Another great piece of news is coming now! The Media Library in Drupal 8 has an embed button added to the CKEditor panel, and media embedding without a mouse is possible. This Media Library and CKEditor integration is now in the dev branch and will be officially available with the Drupal 8.8 stable release in December 2019. 

Consider scheduling your Drupal website update to 8.8 with our team. Meanwhile, let’s learn more about the new features.

The Media Library in Drupal 8 and rich content creation

Thanks to the Media Library and Media modules being part of the Drupal core, media handling in Drupal 8 is very convenient. It’s possible to add various types of media, store them in the Library, and reuse the content whenever you need it. 

You can display the items in a grid or table view, select and insert them, sort and filter them by various criteria, bulk upload, and so on. With the new Library user interface introduced in Drupal 8.7, everything looks and works especially well. Here are our screenshots from this version.

Media Library in Drupal 8

Media Library in Drupal 8: adding or selecting images

The default Drupal 8 media types are:

  • Audio
  • File
  • Image
  • Remote video (with links from YouTube, Vimeo, etc.)
  • Video

Using items from Media Library in content

Content editors appreciate the ability to select items from the Library and insert it directly into the content. To achieve this, it is necessary to add the Media field of the relevant type to a content type (or other fieldable entities like user account). 

Media Library in Drupal 8: oEmbed videosMedia Library in Drupal 8: adding or selecting videos

Great news: media button in the CKEditor panel

To make media selection and embedding experiences even smoother, the embed button has now been added to the CKEditor dashboard in Drupal 8.8x-dev release. This Media Library and WYSIWYG integration was announced in a tweet by “The Drop is Always moving.”

Media Library and CKEditor integration tweet

As we see, the Media Library button has an icon that looks attractive and clearly shows its purpose to users. 

The Media subsystem maintainer Phenaproxima shows nice screenshots and writes that the icon design is agreed by all, usability tests are successfully passed, and the button is well-tested. Congrats and thanks to the team of amazing experts for their job!

The work is successfully committed to the Drupal 8.8.x dev branch, waiting for the official release on December 4, 2019.

Media Library button added to Drupal 8.8 CKEditor

Users can click on the button, see the Media Library, select media, and click “ Insert Selected.”

Media Library button added to Drupal 8.8 CKeditor

The button can be enabled or disabled by drag-and-dropping, which is a great capability of the CKEditor in Drupal 8.

CKEditor panel now with Media Library button

Breaking news: final patch for Media Library and WYSIWYG integration

As we were preparing this article for publication, another awesome news arrived about the final feature patch for the Media Library. It allows for media embedding in WYSIWYG with no mouse needed. Wim Leers, one of the gurus who make such things happen, posted a video on his blog post.

Media embedding without mouse in Drupal 8.8 CKEditor

Enjoy the Media library’s new features!

Start producing richer content in a snap of a finger — use the Media Library in Drupal 8. Our Drupal support and development team can assist you in every step of your way. For example, we can:

  • update you to Drupal 8.7 so you can use new Media Library’s user interface
  • upgrade your website to Drupal 8 if you are still on Drupal 7
  • adjust your website’s settings for easy media handling workflows
  • advise you and set up other attractive ways to display content in Drupal 8
  • and, of course, update you to the upcoming Drupal 8.8 as soon as it arrives in December

Follow our news about Drupal support services and always feel free to contact us!

Aug 28 2019
Aug 28

To always work smoothly and be up-to-date, your Drupal website needs support and maintenance. It’s nice to know you can rely on experts for things like Drupal updates, website performance audit, bug fixes, or anything else. However, you need to choose them carefully. 

First of all, there are plenty of reasons to choose a support company over a freelancer. But there are also the must-have characteristics of a good Drupal support agency. Let them help you with your choice. 

Good Drupal support agency’s features 

  • Decent time on the market

All companies were once startups. However, if a Drupal support agency popped up a week ago, it might be risky to immediately entrust it with major website tasks. After a little while, the agency is able to prove its stability on the market. 

Drudesk support agency has celebrated its 4th birthday and its parent company InternetDevels is preparing to have its 12th anniversary. They have gained a lot of solid experience in challenging Drupal support projects and complex cases.

  • Positive customer feedback

No one says that 100% trust in online feedback is a panacea. Still, it’s important to know what experiences other people have had with a Drupal support agency, so it definitely should have positive reviews.

Drudesk’s customers speak warmly about the agency, call it a forward-thinking and conscientious team, communicative and organized, quick to respond to queries, a reliable partner, and more. Drudesk reviews on Clutch, testimonials on the company’s main page, and other feedback will give you a better picture. 


positive customer feedback

  • A wide range of support services

Website support embraces a wealth of various aspects. It’s convenient and effective to have the same agency working with all of them. So your ideal Drupal supporting partner needs to have broad expertise. 

Drudesk offers all kinds of support and related services. Among them:

and many more.

But this is not all — Drudesk has a strong web development background that allows it to develop websites from scratch. 

In addition, the agency employs quality assurance engineers, DevOps experts, SEO specialists, and others whose expertise may be needed for your case. 

a wide range of support services

  • Warranty for the work performed

Drupal support services, like any others, need to have a warranty. This means that the agency is responsible for their work. 

It should be noted that website support services have their peculiarities. Websites often have old bugs and legacy code that may interfere with the website’s work, making it harder to give a warranty for particular tasks. 

Still, Drudesk cares about customers and offers a warranty for the tasks performed. The standard acceptance period lasts 31 calendar days. During this time, you can check the results. If you find any bugs, everything is fixed free of charge.

  • Transparent task tracking

A good Drupal support agency will give you full control over the tasks performed. Its workflows will be transparent and open to you.

With Drudesk, all customers can see the working progress in real-time. All tasks are managed in Drudesk’s CRM. You can leave your comments on tasks and approve the results. You can also be notified about the team’s new comments in any way convenient to you. 

Since Drudesk relies on the Agile methodology, it has an iterative approach to projects. Large ones are broken into sprints and your feedback is considered at every stage in order to make the result more suited to your needs.

transparent task tracking

  • Openness to communication

When working with a decent Drupal support agency, you should feel they are ready to answer your questions and hear your feedback.

Effective communication is one of Drudesk’s priorities. The agency has English-speaking customer service managers and project managers. 

They make sure your ideas are brought to the developers in the right ways, and they are always open to communication and ready to schedule a Skype call with you or reply by email.  

  • Drupal.org profile & community engagement

Every agency working with the Drupal open-source CMS is part of the Drupal community. Its engagement into Drupal life is directly connected to its attitude and expertise. 

Drudesk is listed on drupal.org and its developers make their contribution to various Drupal projects. They help newbies understand Drupal through discussion forums and willingly mentor new talents. Drudesk developers also actively participate in Drupal events like code sprints, Drupal Camps, etc.

Drupal community engagement

Your Drupal support agency is here

When all these characteristics are met, this means you have found a perfect Drupal support services partner. Contact our Drupal support agency and let’s discuss how we can make your website’s work better. This is where good website support starts!

Aug 15 2019
Aug 15

Once, the Drupal community had Mollom, and everything was good. It was a web service that would let you use an API to scan comments and other user-submitted content and it would let your site know whether it thought it was spam, or not, so it could safely publish the content. Or not. It was created by our very own Dries Buytaert and obviously had a Drupal module. It was the service of choice for Drupal sites struggling with comment spam. Unfortunately, Mollom no longer exists. But there is an alternative, from the WordPress world: Akismet.

Akismet is very similar to Mollom. It too is a web service that lets you use an API to judge if some submitted content is spam. The name is derived from the Turkish word kismet, which means fate or destiny. The A simply stands for automatic (or Automattic, the company behind both WordPress and Akismet). It was created for WordPress, and like Mollom was once for Drupal, it is the service of choice for WordPress sites. However, nothing is keeping any other software from making use of it, so when you download the Akismet module, you can use it with your Drupal site as well. Incidentally, the module is actually based on the code of the Mollom module.

There is no stable release of the module, currently. In fact, there is no release at all, not even an alpha release. Except for development releases, that is. This means that for now it might not be an option for you to deploy the module. Hopefully, this changes soon, although the last commit is over a year ago at the time of writing. A mitigating circumstance, though, is that Drupal.org itself seems to be using this module as well, albeit in the Drupal 7 version (this article will be discussing the D8 version).

Adding Akismet to your Drupal site

How to add the module will depend on your workflow. Either download a development release, or - when you use a composer-based workflow - add the module like so:

$ composer require drupal/akismet:^[email protected]

Then, enable the module through the Extend admin screen (/admin/modules).

Basic configuration

In order to configure the module, you will first need an Akismet API key. To get this, register at https://akismet.com. If you have a wordpress.com account (which you might have from either wordpress.com itself, or e.g. because you also have Gravatar) you can sign in with it.

Once you've obtained an API key, you can go to /admin/config/content/akismet/settings to configure Akismet.

The choice what to do when Akismet is not available is probably dependent on how busy your site is. If it is very busy, and you do not get tons of spam, you probably want to accept all submissions. If you get a lot of spam and not very many actual contributions, you might want to block everything. If you both have a high traffic site and get a lot of spam, good luck. Of course, you can always look at a second line of defense, like the Honeypot module

The second two settings - Show a link to the privacy policy and Enable testing mode - seem to be left-overs from the Mollom module, because neither of them seem to do anything. I created issues for both the privacy policy and the testing mode.

While Mollom had a requirement to either show a link to its terms of use on protected forms, or have your own terms of use that made it clear you make use of the Mollom service, Akismet doesn't seem to have such a requirement. (Of course, it is a good idea to add something about your use of Akismet in your terms of use or your privacy policy).

Testing with Akismet is possible to either pass "viagra-test-123" as the body of the message, or "[email protected]" as the email address; these will always result in a spam classification. This seems to trigger the "unsure" scenario, eventhough that doesn't actually fully work, currently (see further). Forcing a ham (the opposite of spam - I didn't make this up) response is a bit trickier, because it would involve setting some parameters to the web service you do not have control over from the outside. Especially the testing mode might be a nice feature request for the Akismet module. Ideally, the module would work similar to the Mollom module, where you could simply send in a comment with "ham", "unsure" and "spam" to test. As said, I created an issue to flesh out this functionality.

The advanced configuration hides settings to control whether to only log errors and warnings, or all Akismet messages, and a timeout for contacting the Akismet server. Especially in the beginning you might want to log all messages to monitor whether things are working as they should. 

Configuring which forms to protect

When having finished the basic configuration for the module, it is time to configure the forms you want to protect. This happens on the path /admin/config/content/akismet. Here, click the "Add form" button to start configuring a form.

When clicking the button, the module will ask you which form you wish to configure. Out of the box, the module will offer to protect node, comment user and contact forms. A hook is offered to add additional forms, although either a module will need to implement the hook itself, or it will have to be done for it. Here, I'm choosing to just protect the comment form, as I am suffering from quite a lot of comment spam. Once you've chosen a form, it will show the form fields you might want to pass to the Akismet web server for analysis.

You'll basically want to select anything that is directly controlled by the user. The obvious candidate is the body, but also the subject, user name, email address, website and hostname will contain clues whether something is spam or not.

Next, you get to select what happens when Akismet decides content is or might be spam. Akismet may report back that it is sure something is spam. If it says something is spam, but does not pass back this certainty flag, the Drupal module says Akismet is "unsure", which is actually a term that can be traced back to the Mollom roots of this module. You may tell the module it should then retain the submission for manual moderation, although this doesn't seem to work correctly, at the moment. I created an issue in the issue queue for that. What I'm seeing happening is that the post is discarded, just like when Akismet is sure.

Click Create Protected Akismet Form to save the protection configuration. You're now ready to catch some spam. You can look at the watchdog log (/admin/reports/dblog) to see the module reporting on what it is doing. Akismet itself also has a nice dashboard with some graphs showing you how much ham and spam it detected on your site.

Reporting spam to Akismet

Sometimes, Akismet might wrongly accept some piece of content that is actually spam. Or, when the moderation queue mechanism actually works properly, you probably want to let Akismet know that yes, something is in fact spam (you might also want to let Akismet know it didn't correctly identify spam, i.e. report false positives. This is a feature of the web service, but is currently not in the module; another feature request, it seems. I've submitted one in the issue queue).

The module comes with action plugins for comments and nodes that let you unpublish the content and report it as spam to Akismet at the same time. You can add it to your comment views by changing their configuration at /admin/structure/views/view/comment (you will need the Views UI module enabled to be able to configure views). Unfortunately, it seems that also with this functionality there is an issue, the action doesn't actually unpublish. A patch is available in the linked issue and of course the workaround is to first use the Akismet action, and then use the standard unpublish action.

Find the configure link for the Comment operations form. Click the link and, in the modal that opens, find the list of checkboxes for the available actions. Enable Report to Akismet and unpublish and save the configuration. Repeat for the Unapproved comments display. This will mean you will now have the action available in the actions dropdown on the comments overviews at /admin/content/comment.

Adding this to a node view will be similar, although chances are that when you have end users submitting nodes, you likely also have some dedicated views for your specific use case, such as Forum posts.

Issues created as a result of this blog post

Please note that I did not intend to "set anyone to work" with creating these. I simply wanted to record some findings and ideas from writing up this blog post.

Aug 14 2019
Aug 14

It‘s easy and enjoyable to create marketing campaigns, drive leads, and tell your brand’s story to the world if your website is on the right CMS. Drupal 8’s benefits will definitely impress any marketer. So let’s take a closer look at the greatness of Drupal 8 for marketers, see what makes it so valuable, and name a few useful modules.

The benefits of Drupal 8 for marketers

Drupal 8 has cutting-edge marketing features built into the core and a myriad of contributed modules helpful in every aspect of your successful marketing. 

Easy integration with marketing automation tools 

Marketers love the various marketing automation and CRM tools. They effectively streamline their workflows, as well as give them valuable analytics. 

Thanks to its built-in support for RESTFul web services, Drupal 8 integrates with marketing tools or any others at a snap of a finger. 

Drupal 8 modules to integrate marketing tools

and many more.

Multilingual Drupal 8 campaigns

Marketers can produce more powerful and convincing campaigns in their users’ native languages. Without a doubt, Drupal 8 is a great choice for multilingual websites.

A hundred languages are supported out-of-box, including those with the RTL text direction. The four built-in multilingual modules make it easy to add languages to your site and translate everything — interface, configuration, and content. Most interface translations are already prepared by the community.

Admin interfaces to add translations are very handy and editor-friendly. As D8’s third-party integration capabilities are among its key benefits, it’s also easy to integrate any translation software.

Drupal 8 modules for translation tool integration

and more.

There also are contributed Drupal 8 modules for multilingual features for every aspect of a multilingual website.

Some Drupal 8 multilingual modules

and many more.

Multilingual Drupal 8 website example

 

Multi-channel marketing in Drupal 8

Marketers can engage customers with their Drupal 8 campaigns on their preferred devices. D8 websites are ready to share their data to any web or mobile applications. 

This is thanks to the API-first architecture — one of D8’s key benefits. The core now has 5 robust modules that effectively expose your Drupal entities as a RESTful web API. In the Drupal 8.7 release, the JSON:API module joined this “team” to make multi-channel experiences even more ambitious.

Marketers will appreciate the “create once, publish everywhere” philosophy adopted by the API-first Drupal 8. It significantly increases their reach with minimum publishing expenses. 

Quick and handy content creation with advanced features

Content is the heart and soul of marketing campaigns. A new level of its creation is among the greatest benefits prepared by Drupal 8 for marketers. Editorial workflows are both very user-friendly and advanced in their capabilities. 

At least a few of Drupal 8 content creation benefits

  • You can make edits on the fly with the inline editing feature.
  • The handy drag-and-drop CKEditor is the default D8’s WYSIWYG editor. 
  • Drupal 8 has a Media Library that lets you save and reuse videos, audios, images, and other media.
  • You can add media directly into articles or news, including remote videos from YouTube or Vimeo via the oEmbed feature in Drupal 8.
  • Configurable editorial workflows are available to your marketing team with the new Content Moderation and Workflows modules.
  • The Views in D8 core lets you add highly configurable content collections to your pages. 
  • It’s easy to create beautiful slideshows and carousels with the help of contributed tools such as Views Slideshow, Juicebox, jCarousel, Owl Carousel, and so on.

Media Library in Drupal 8

Smart content personalization

Individualized, or targeted, content delivery helps marketers reach their audience. You just give the right offer at the right moment to the right person. Drupal 8 offers awesome opportunities to marketers in this field. 

Some great Drupal 8 personalization modules

  • Smart Content allows you to offer a different display based on browser conditions.
  • Smart Content Segments helps you manage groups of these conditions in a handy UI.
  • Acquia Lift Connector unites your content and customer in a drag-and-drop interface so marketers can effectively manage your campaigns in real-time using behavioral factors.
  • Cloudwords for Multilingual Drupal is your assistant in multilingual campaigns with the features of workflow automation and project management.

Acquia Lift Connector Drupal 8 personalization module

Social media campaigns

Marketers know that social networks are amazing campaign boosters. Your SM page and your website can be an invincible marketing team. With D8, their integration is a breeze. 

Marketers will be amazed by a myriad of contributed Drupal 8 modules that will help them to:

  • auto-publish content to social networks
  • invite users to join your social media pages
  • add their icons to the website
  • add sharing buttons
  • analyze the statistics 
  • embed feeds 

These Drupal 8 social integration modules include

and many more. 

Social integration modules in Drupal 8

Let your marketing boost with Drupal 8!

These have been just a few glances at the greatness of Drupal 8 for marketers. Contact our Drupal team to discuss in what other ways D8 can be helpful to your marketing campaigns and your business. 


Our Drupal developers are ready to:

  • build you a Drupal 8 website from scratch
  • migrate your Drupal 7 website to Drupal 8
  • update your minor Drupal 8 version (since some features mentioned above only start from Drupal 8.7)
  • install the needed modules and configure them properly based on your needs
  • customize the existing solutions to add the desired marketing features to your site

Enjoy the benefits of Drupal 8 for marketers!

Aug 07 2019
Aug 07

You've probably heard recently that Drupal 9 is coming. Drupal 8.7 was released in May and Drupal 8.8 is planned for December 2019. At the same time, D9 is becoming a hotly discussed topic in the Drupal world. 

Drupal 9’s arrival perfectly fits into the Game of Thrones’ quote — “Brace yourself, winter is coming.” But do you need to brace for D9? It is promised to arrive easily and smoothly. Still, some important preparations are needed. Let’s review them in this post.

Drupal 9 is coming in June 2020

The year of the D9 release became known back in September 2018. Drupal creator Dries Buytaert announced it at Drupal Europe in Darmstadt. Later on, in December, the exact date arrived — Drupal 9 is coming on June 3, 2020!

What will happen to Drupal 7 and Drupal 8? Both D7 and D8 will reach their end-of-life in November 2021. This means the end of official support and no more updates in the functional and security areas. Some companies will come up with extended commercial support, but it’s far better to keep up with the times and upgrade. All the development ideas and innovations will be focused on “the great nine.”

The Drupal creator explained the planned release and end-of-life dates. In a nutshell, D8’s major dependency is the Symfony 3 framework that is reaching end-of-life in November 2021. Drupal 9 will ship with Symfony 4/5. So the Drupal team has to end-of-life Drupal 8 at that time, but they want to give website owners and developers enough time to prepare for Drupal 9 — hence the June 2020 release decision. 

According to the timing, you need to be on Drupal 9 by By November 2021. In the meantime, you should prepare. 

Preparations for Drupal 9 in the coming

1. How to prepare for Drupal 9 if you are on Drupal 8

Hearing that Drupal 9 is coming, many D8 website owners may say “Hey, we just had an epic upgrade from Drupal 7 to Drupal 8, and here we go again!”.

Keep calm — everything is on the right track. Your upgrade from Drupal 8 to Drupal 9 should be instantaneous. D9 will look like the latest version of D8, but without deprecated code and with third-party dependencies updated (Symfony 4/5, Twig 2, and so on).

Dries Buytaert's quote: we are building Drupal 9 in Drupal 8

There are two rules of thumb regarding the Drupal 9 preparations:

1) Using the latest versions of everything

To have a quick upgrade from Drupal 8 to Drupal 9, you need to stick to the newest versions of the core, modules, and themes. According to Gábor Hojtsy, Drupal Initiative Coordinator, you are gradually becoming a D9 user by keeping your D8 website up-to-date.

Gabor Hojtsy's quote: you become a Drupal 9 user by keeping up to date with Drupal 8.

“The great eight” has adopted a continuous innovation model, which means a new minor version every half a year. Our Drupal team is ready to help you with regular and smooth updates.

2) Getting rid of deprecated code

It is also necessary to keep your website clean from the deprecated code. Deprecated code means APIs and functions that have newer alternatives and are marked as deprecated, or obsolete. 

Any module that does not use deprecated code will just continue working in Drupal 9, Dries said.

Dries Buytaert's quote: without deprecated code websites will be ready for Drupal 9

How can you find deprecated code? Here are a few tools that check everything including custom modules:

  • The command-line tool Drupal Check that checks your code for deprecations
  • The Upgrade Status contributed module that offers a graphical interface to check the modules and theme and get the summary

Many deprecations are very easy to replace. You can always rely on our development team to have a thorough check and cleanup from deprecations. 

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

The best way to prepare for Drupal 9 is to upgrade to Drupal 8 now. Even if this might sound like a marketing mantra to you, it has very practical grounds.

There are plenty of reasons to upgrade and no reason to skip Drupal 8. These are words from Dries Buytaert's presentation

Dries Buytaert's presentation: there are many reasons to upgrade to Drupal 8 now

You will enjoy a wealth of Drupal 8’s benefits for business all the time before 2021. And when Drupal 9 arrives, you will just click and move ahead to it!

Gabor Hojtsy's quote: skipping Drupal 8 does not bring benefits

Don’t worry, despite the immense difference between D7 and D8, the 7-to-8 upgrades are getting easier every day. Developers have studied the D7-to-D8 upgrade path well. In addition, very helpful migration modules have recently reached stability in the D8 core.

Your upgrade to Drupal 8 will depend on your website’s custom functionality and overall complexity. In any case, our Drupal developers will take care of making it smooth. 

So make up your mind and upgrade now — welcome to the innovative path that will lead you further to “the great 9.”

Plan for Drupal 9 with us!

Yes, Drupal 9 is coming. No matter which version of Drupal you are using now, we can help you make the right Drupal 9 preparation plan — and fulfill it, of course. Just contact our Drupal experts!

Aug 05 2019
Aug 05

When deploying changes to a Drupal environment, you should be running database updates (e.g. drush updb, or through update.php) first, and only then import new configuration (which itself is supposedly the result of running the same update hooks on a development environment). The reason for this is that update hooks may want to update configuration, which will fail if that configuration is already structured in the new format (you can't do without updates either; update hooks don't just deal with configuration, but may also need to change the database schema and do associated data migrations). So, there really is no discussion; updates first, config import second. But sometimes, you need some configuration to be available before executing an update hook.

For example, you may want to configure a pathauto pattern, and then generate all aliases for the affected content. Or, you need to do some content restructuring, for which you need to add a new field, and then migrate data from an old field into the new field (bonus tip: you should be using post update hooks for such changes). So, that's a catch-22, right?

Well, no. The answer is actually pretty simple, at least in principle: make sure you import that particular configuration you need within your update hook. For importing some configuration from your configuration sync directory, you can add this function to your module's .install file:

/**
 * Synchronize a configuration entity.
 * 
 * Don't use this to create a new field, use 
 * my_custom_module_create_field_from_sync().
 *
 * @param string $id
 *   The config ID.
 *
 * @see https://blt.readthedocs.io/en/9.x/readme/configuration-management/#using-update-hooks-to-importing-individual-config-files
 */
function my_custom_module_read_config_from_sync($id) {
  // Statically cache storage objects.
  static $fileStorage, $activeStorage;

  if (empty($fileStorage)) {
    global $config_directories;
    $fileStorage = new FileStorage($config_directories[CONFIG_SYNC_DIRECTORY]);
  }
  if (empty($activeStorage)) {
    $activeStorage = \Drupal::service('config.storage');
  }

  $config_data = $fileStorage->read($id);
  $activeStorage->write($id, $config_data);
}

Use it like this:

my_custom_module_read_config_from_sync('pathauto.pattern.landing_page_url_alias');

As you might have seen in the docblock above that function, it is not actually suitable for creating fields. This is because just importing the configuration will not create the field storage in the database. When you need to create a field, use the following code:

/**
 * Creates a field from configuration in the sync directory.
 *
 * For fields the method used in kankernl_custom_read_config_from_sync() does
 * not work properly.
 *
 * @param string $entityTypeId
 *   The ID of the entity type the field should be created for.
 * @param string[] $bundles
 *   An array of IDs of the bundles the field should be added to.
 * @param string $field
 *   The name of the field to add.
 *
 * @throws \Drupal\Core\Entity\EntityStorageException
 */
function my_custom_module_create_field_from_sync($entityTypeId, array $bundles, $field) {
  // Statically cache storage objects.
  static $fileStorage;

  // Create the file storage to read from.
  if (empty($fileStorage)) {
    global $config_directories;
    $fileStorage = new FileStorage($config_directories[CONFIG_SYNC_DIRECTORY]);
  }

  /** @var \Drupal\Core\Entity\EntityStorageInterface $fieldConfigStorage */
  $fieldStorage = \Drupal::service('entity_type.manager')
    ->getStorage('field_storage_config');

  // If the storage does not yet exit, create it first.
  if (empty($fieldStorage->load("$entityTypeId.$field"))) {
    $fieldStorage
      ->create($fileStorage->read("field.storage.$entityTypeId.$field"))
      ->save();
  }

  /** @var \Drupal\Core\Entity\EntityStorageInterface $fieldConfigStorage */
  $fieldConfigStorage = \Drupal::service('entity_type.manager')
    ->getStorage('field_config');

  // Create the field instances.
  foreach ($bundles as $bundleId) {
    $config = $fieldConfigStorage->load("$entityTypeId.$bundleId.$field");
    if (empty($config)) {
      $fieldConfigStorage->create($fileStorage->read("field.field.$entityTypeId.$bundleId.$field"))
        ->save();
    }
  }
}

And, once again, a usage example:

my_custom_module_create_field_from_sync('node', ['basic_page', 'article'], 'field_category');

The function will check whether the field already exists, so it is safe to run again, or to run it for a field that already exists on another bundle of the same entity type.

Note that when using post update hooks, it will be important to create a single hook implementation that applies all required actions for what should be considered a single change, because there are no guarantees about the order of post update hooks. So that would for example constitute:

  1. Create a new field.
  2. Migrate data from the old field to the new field.
  3. Remove the old field.

Hopefully, this helps someone get out of that catch 22. Whatever you do, don't run your config import before your database updates.

Jul 17 2019
Jul 17

What is the latest business forecast for the media and publishing industry? The thunder and lightning of success! This is because Drupal has very useful web solutions for this industry.

In addition to easy content editing in Drupal 8 and other niceties, there are Drupal distributions for media and publishing. They are called Thunder and Lightning, and we will now discuss what they can give you.

What are Drupal distributions?

Distributions are meant to start a website with significant time and cost savings. This is because Drupal distributions are installation kits suited to specific business use cases.

These packages include the Drupal core, a set of contributed modules, specific configuration, and more. Distributions are free and ready to go. They can be customized and extended by development teams to meet your business needs.

Drupal distributions for media and publishing

Thunder and Lightning are very famous Drupal distributions for media and publishing. They sound like a pair of related projects, but they are actually from different creators. Let’s review the details of each of them.

Lightning — Drupal distribution for media and publishing

Lightning is a framework and a distribution in one. It empowers developers to build great authoring experiences. And it allows content editors and publishers to enjoy smooth, handy, and consistent workflows.

The Lightning distribution was developed by Acquia in 2016. It is a lightweight and extensible product provided with detailed documentation and recommendations. Lightning inherits the best Drupal practices and offers a set of modules without being overloaded by extraneous ones.

about lightning drupal distribution

The distribution’s reliability is guaranteed by 60+ automated tests and by Drupal Security Team’s close attention. This makes it much safer to use than a selection of standalone modules.

The project is actively maintained and has seen its 8.x-4.001 version released in June 2019. Lightning is the most downloadable Drupal 8 distribution on drupal.org in general, not only among Drupal 8 distributions for media and publishing.

Distributions Drupal.org Lightning

Key Lightning features for publishers

  • Easy media management

Lightning includes the media management feature with the media library. Content publishers can upload images and videos from a PC or from a URL, save them to the library, or embed them into the content.

  • Flexible editorial workflows

With Lightning, it is easy to streamline content workflows between different user roles in the team. Publishers can manage the existing ones, or create new content approval states.

  • Handy content preview

Editors can enjoy a comprehensive content preview, including images and videos, before submitting it to the public.

  • Drag-and-drop layouts

The handy drag-and-drop tools allow editors to shape their page layouts for different occasions. The layouts are responsive to mobile devices. 

  • API for content sharing

 Lightning has a preconfigured API for exposing content to other applications in the JSON format, so your media website can go multichannel.

  • Headless Lightning subprofile

The subprofile has the same features but also offers an interface for decoupled Drupal setup, which is a hot trend. According to Dane Powell, Senior Technical Architect at Acquia, both Lightning and Headless Lightning are a great choice for this architecture.

key features of lightning drupal distribution

Thunder — Drupal distribution for media and publishing

The Thunder distribution is an out-of-the-box product to be used by professional media websites. On its official page, Thunder positions itself as a CMS (content management system) for professional publishing.

It includes a set of specific modules tailored to the needs of publishers. Similarly to Lightning, Thunder is free and open-source.

about thunder drupal distribution

Thunder was created in 2016 by Hubert Burda Media. In addition to the Thunder Core Team, the project is maintained by partners from the Thunder Coalition such as Nexxt.tv, Acquia, Valiton, Facebook etc. that add their own custom features to it. The distribution’s creation was great news for the Drupal world.

about thunder drupal distribution

And just like Lightning, Thunder is actively supported and has released it 8.x-2.4 version in June 2019.

Key Thunder features for publishers

  • Flexible content creation

Publishers can create more than simple articles by adding elements like images, videos, galleries, Twitter cards, and more with a drag-and-drop tool. Media can be saved for further reuse.

  • Content scheduling

Your content can be scheduled to show on the website at a given date and time or, on the contrary, to stop showing at a given time.

  • Nexx.tv video player

Thunder features a high-performance Nexx.tv video player that allows publishers to control their videos across platforms and devices.

  • Riddle tool for interactive content

There is a Riddle that allows you to create interactive content like quizzes, tests, and so on. This keeps users engaged and drives your traffic.

  • Instant Articles by Facebook

With the Instant Articles feature by Facebook, publishers can create articles that will load instantly on mobile devices of Facebook app users. 

  • The Infinity theme

This is a special theme created for media and publishing websites by InStyle. It allows website to present content and increase user engagement with infinite scrolling.

  • Mobile-friendliness

The distribution allows publishers to work in the admin dashboard from any device. Users can enjoy a modern and flexible front-end design.

key features of thunder drupal distribution

Get the best from Drupal distributions for media and publishing

These have been just a very brief rundown of the Lightning and Thunder capabilities. They both are built according to the best development practices and both can be a great base for your website.

Contact our Drupal development team and we will help you quickly setup a website upon one of these distributions. Let your media and publishing business flourish with a website that reflects its demands!

Jul 10 2019
Jul 10

At last month's DrupalJam XL in Utrecht, the Netherlands, I gave Gabor Hojtsy's presentation on the state of Drupal 9. It was recorded - thanks DrupalJam organization! - so here is the video. You might also want to view Gabor's own presentation from DrupalCamp Belarus.

You'll need to turn up the audio, because it seems that it was recorded using the camera, not the fancy microphone I'm wearing.

[embedded content]

Jul 04 2019
Jul 04

Developing a website for a higher education institution may be tough, as universities have plenty of departments and branches. Despite the fact that each department has its own site with specific content, all of them have to function under the same CMS and be closely connected. How do you know which CMS is right for your university website? Let’s sort things out!

Drupal vs WordPress for higher education institutions

The most popular choices for higher education institutions websites are Drupal and WordPress. However, WP lacks functionality, security, and accessibility necessary for a complicated higher education institution platform.

Did you know that 71 out of the top 100 universities, including Harvard University, University of Oxford, and Yale, use Drupal for their websites? It’s not surprising if you are familiar with all of Drupal benefits.

Today, the team at Drudesk explores the benefits of Drupal for university website development.

Drupal’s benefits for university websites

Drupal offers a bunch of tools and features necessary for a complicated university website development. Here are the main ones:

  • Accessibility

Caring about accessibility for users with physical disabilities is a must. Drupal 8 possess a number of features that support website accessibility standards. They help screen readers understand web pages, add alt text for images, take care of fonts and colors, and much more.

Note that you can always contact Drudesk for a website accessibility audit to see if your website is optimized for people with impairments.

  • Information security

University websites contain a lot of valuable content that should be kept safe. Luckily, Drupal is one of the most secure CMS, as it offers regular core, modules, and security updates. With Drupal you can be sure that your platform maintains the highest level of security.

  • User roles and permissions

University websites are visited by professors, students, administration staff, and much more. All of them need different permissions for creating and editing website content based on their roles at the university. Drupal offers out-of-the-box user roles, as well as a number of contributed user access modules that will help you easily configure roles and permissions on the site.

  • Multilingual functionality

Drupal 8 possess a multilingual feature out-of-the-box. This is extremely useful for higher education institutions, as students all over the globe will access the website. Drupal translates all information available, from content to interface, and offers a choice of 100+ languages to install on websites.

  • A multisite approach

Multisiting is usual for higher education institutions, as they have different departments that require sister domains. Things become easy with the Drupal multisite feature that lets you have as many websites as you need on the same Drupal installation. It provides unlimited opportunities for sharing content, managing the settings, and giving access between multiple sites.

  • Easy content creation and editing

Higher education websites update and add content regularly. Drupal 8 is a solution for content creators, as it possesses a number of built-in features for easy content creation, from posting to editing.

  • Hundreds of themes and templates

Drupal offers various design templates that are pretty much effortless to use while ensuring consistency across an entire institution.

Great examples of higher education websites built in Drupal

Harvard University

Harvard university website on Drupal

Rutgers University

Rutgers University website on Drupal

Stanford Graduate School of Business

Stanford Graduate School of Business website on Drupal

University of Oxford

University of Oxford website on Drupal

University of Colorado 

University of Colorado website on Drupal

Develop a website for a higher education institution on Drupal!

Take a look at the Maryland Global University, a website created by our web development partners: InternetDevels agency. It is supplied by the eCommerce functionality for buying online courses, as well as Moodle integration — a well-known LMS (learning management system).

Maryland Global University website on Drupal by InternetDevels

Don’t hesitate over the choice of CMS for university website development anymore — Drupal is definitely the solution! Drop us a line regarding your project and we’ll immediately get back to you to discuss all the details of the project.

Jun 26 2019
Jun 26

Drupal 9 is coming — its arrival is planned for June 2020. So while the world continues enjoying Drupal 8’s benefits, it’s also time to start getting ready for Drupal 9. What does it mean and how should you prepare? We are discussing this today in our blog post.

Easy upgrades to Drupal 9 as a huge bonus

All website owners and developers can enjoy an amazing bonus related to Drupal 9. Thanks to efforts from the Drupal community, upgrades from Drupal 8 to Drupal 9 are made easy! They shouldn’t take more time than trivial updates between minor versions (for example, from Drupal 8.6 to Drupal 8.7).

As Dries Buytaert wrote in his State of Drupal presentation, when sites move from Drupal 8 to Drupal 9, content is already ready and the code continues to work. Amazing!

Excerpt from Dries Buytaert's State of Drupal presentation

But, as you might have noticed, there is one remark in this illustration by Dries. Easy upgrades to Drupal 9 will be available if websites are not using deprecated code. Let’s see in more detail what this means and how to fulfill this condition.

Getting ready for Drupal 9: cleaning up deprecated code

To be ready for Drupal 9, all websites should cleaned up from deprecated Drupal APIs and functions (outdated ones that have more modern alternatives).

Since Drupal core and contributed modules are maintained by their developers, there is a big chance they will take care of the cleanup. So it is necessary to keep the core and contributed modules up-to-date as part of preparation for Drupal 9. However, a good deprecation check is also highly recommended.

When it comes to custom modules and themes developed specifically for your website, they should be properly checked for deprecations and updated.

To discover deprecated code, there are useful tools in Drupal. Among them:

What to expect from the module readiness and the amount of work needed? Dwayne McDaniel of Pantheon checked almost 7,000 of the most popular contributed Drupal 8 modules with the Drupal-check tool. He found that almost half of the modules had no Drupal 9 compatibility issues, while 35% had 5 issues or less.

At MidCamp 2019, issues for 300 modules were additionally opened, so the work is already being done on them. Most modules just need an easy fix. All this is stated in the Drupal 9 slides by famous Drupal contributor Gábor Hojtsy.

How Drupal contributed modules are ready for Drupal 9

Dries Buytaert also says that many deprecations are just a matter of “find and replace” and he tried this on his own website.

So don’t worry — the cleanup work as part of getting ready for Drupal 9 shouldn’t take much time. Our Drupal team is always ready to help you check and clean your website from deprecated code.

What about Drupal 7?

Drupal 7 website owners can upgrade to Drupal 8 now or wait for Drupal 9. However, the first option looks much more beneficial. See why.

If they upgrade from Drupal 7 to Drupal 8 now, they can start enjoying what Drupal 8 has to offer (and that’s a huge piece of pie — just check out the basic Drupal 8’s benefits for business). And then they will just switch to Drupal 9 in a snap of a finger. Only one big move will ever be needed.

“Once you are on the Drupal 8 track, you will never have to change tracks again,” Dries writes in the presentation, comparing migration to changing railway tracks.

As you can see from his great illustrations, the Drupal 8 track leads to Drupal 9 and then to Drupal 10 stations. At the same time, Drupal 7 and especially Drupal 6 tracks have no future.

Dries Buytaert illustrating the future of Drupal versions

Dries Buytaert illustrating the future of Drupal versions

In addition, the upgrade path from Drupal 7 to Drupal 8 is very well documented, tried by most developers, and has been improved a lot recently. Useful migration modules have become stable in Drupal 8 core, so it is much easier to migrate content and configuration.

You will definitely benefit from moving to Drupal 8, and Drudesk team is ready to help you. Change the track if you are still with Drupal 7 and get on the train to the future!

Drupal 9 is coming — entrust us with getting your site ready

Entrust our Drupal support team with preparing your website for the future. Both cleanups and migrations are Drudesk’s area of expertise. We strive to make websites better, cleaner, more modern — and ready for Drupal 9!

Jun 12 2019
Jun 12

There are many beautiful words you can use to tell your customers that your website is trustworthy, reliable, and transparent. But one small widget can say it better that a thousand words.

So let us introduce the UpTime Widget Drupal module. See how it could help you always stay aware of your website uptime, build customer trust, and stand out from competitors.

Module maintained by our developers

Before we move on, we are especially happy to mention that the UpTime Widget Drupal module is maintained by our guys.

Knyshuk.vova is the owner of the module. Its creator Lolandese transferred the ownership to him in accordance with Open Ownership Pledge. Vladimirrem and ApacheEx are maintainers of the module who also make important commits.

These are Drupal developers from Drudesk and Drudesk’s parent company — InternetDevels, which is also listed as supporting organization on the module’s page.

What UpTime Widget Drupal module does

The UpTime Widget module connects your website to the popular free uptime monitoring service — UpTimeRobot.com.

It shows your website uptime (the percentage of time that your website is available to visitors online). Ideally, it should be 100%, although this figure may be a little bit lower in reality.

Your website uptime figure appears in the form of a handy widget to be placed anywhere on your website as a Drupal block. It can also optionally show a configurable copyright notice.

Uptime widget for Drupal website

Uptime widget for Drupal website

The UpTimeRobot service is able to monitor your website uptime every 5 minutes or at an interval you choose. You can get notifications about it by:

  • email
  • SMS
  • Twitter
  • RSS
  • push notifications for iPhone or iPad.

How the UpTime Widget module works in more detail

Getting your keys on the UptimeRobot service

First, we will need to register our website from the UptimeRobot.com service and get the API key and the monitor ID. We need to make a few easy steps:

  • sign up, activate your account, and log in at UptimeRobot.com
  • add a new monitor of the HTTP(s) type, give our website a name, and submit its URL

Register website at UpTime Robot service

The UptimeRobot service has plenty of interesting things like informative dashboards or detailed notification settings. We can come back here any time, but now let’s grab the API key and monitor ID and move on to our Drupal 8 website.

Installing and configuring the UpTime Widget module

The UpTime Widget module can be installed on the Drupal 8 website in any way you prefer. Although it is using a third-party service, installation with Composer is not obligatory.

When the module is installed and enabled, its settings appear at admin/config/system/uptime_widget. Let’s run through some of them.

  • There are two key required fields where we need to enter the previously received API key and monitor ID.
  • The “decimal separator” and “scale” fields have nice defaults, but we can play with the ways our website uptime digits are displayed.
  • The monitoring interval and the refresh interval fields also have sensible defaults. But we can choose how often the website uptime should be checked and how often Drupal should receive this information.

Configuring UpTime Widget Drupal module

Configuring the copyright notice

The website uptime widget by default comes with the copyright widget, which can optionally be disabled. Hiding or showing the copyright is also available in the block configuration, which will be described in the “Configuring the Uptime block” part.

The module’s settings page at admin/config/system/uptime_widget lets us configure how the copyright will look. It offers:

  • several options for the copyright notice
  • the option to specify the year that our domain was first online
  • the option to write a custom “Prepend text” instead of “All rights reserved.”

Configuring copyright notice of Drupal uptime widget

Placing and configuring the Uptime block on the website

It’s now time to place the uptime widget block on our Drupal website. In Structure — Block Layout, we choose the theme region (for example, Footer first), click on it, find the Uptime block in the list of blocks, place block, and save the blocks.

Placing UpTime Widget as block on Drupal website

We can configure the block to our liking — either on the Block Layout page or by clicking the “quick edit” pencil near the block on the website.

We can leave or hide its title by checking or unchecking “Display title,” configure visibility for specific roles, specific pages or content types, and so on.

Configuring UpTime Widget as Drupal block

We can also choose to show both the uptime and copyright widgets, or only one of them.

UpTime and copyright widgets Drupal

More features to come in the future

Our guys have many plans about the module’s improvements in version 8.2. Here are at least some of them:

  • Uptime check notifications should be configurable directly from the Drupal website, which is for now only possible on the UpTimeRobot service.
  • The Uptime information should be included into the “Reports” page on the Drupal dashboard.
  • Public Status Pages, or detailed boards about uptime information, should be integrated into Drupal.

UpTime Robot service dashboard

Get yourself a website uptime widget

Show your visitors they can rely on you all the time! And you can always rely on our Drupal support team if you need any help in:

  • installing and configuring the UpTime Widget Drupal module
  • customizing its look on your website
  • creating another custom Drupal module in accordance with the customer’s requirements

Stay reliable and build your customer trust!

Jun 05 2019
Jun 05

The unique Drupal Views module allows you to pull the data from the database and display it in any way you wish. As an example, we discussed creating photo galleries with Drupal 8 Views. Drupal’s flexibility is unlimited, so it offers additional ways to customize the content presentation and meet the customer’s precise requirements. One of them is to rewrite the output of Drupal Views fields. Let’s explore this a little bit using the simplest of cases.

Why rewrite Drupal 8 Views field output?

It’s possible to shape your Views like Legos when using the field-based format in it. You can add only the desired fields of a content type or other entity type. It’s easy to rearrange the fields in any order, hide or show the field labels, configure the fields, and so on.

However, there are cases when you just need the fields to display differently. The customer may want to merge two fields into one, use the values of one field in another, link fields to specific pages, replace links with icons, and so on — the sky's the limit.

The solution depends on the case. In more complicated cases, expert Drupal development teams create custom field formatters. In simpler ones, they just rewrite the output of Drupal Views fields via the built-in Views dashboard capabilities.

Main principles of rewriting the output of Drupal 8 Views fields

When rewriting Views fields, we need to take into account the main principles:

  • The Views format should be configured as field-based.
  • Every field has a “rewrite results” section in settings, which has 6 options:

Rewriting Drupal 8 Views field output

  • There are replacement patterns that allow us to use tokens and display dynamic values (for example, the ID of the current node).

Replacement patterns for Views fields

  • We can add fields to Views, hide them from display, and use their values in other fields.
  • The hidden fields whose values we want to use should always be positioned above the ones we want to rewrite in the Views list of fields.

A simple example on how to rewrite Drupal 8 Views fields

Let’s create a view that displays all nodes of a content type. It uses fields and shows content as a table.

Field-based Drupal 8 view

In our rewrite example, we want to:

  • merge the content title and body into the same Views table column
  • add a content editing link that will be displayed as a pretty edit icon with a pencil.

1) Merging two fields into the same column

We will overwrite the title field by adding the body field values to it. We don’t need the body field to be shown — we just need to grab its values. So we create the body field and exclude it from display.

Exclude a Drupal 8 field from display

And we rearrange the fields so the body field is above the title field.

Rearranging Drupal 8 fields

In the title field settings, we choose “Rewrite Results” — “Override the output of this field with custom text.” And then we open “Replacement Patterns” and see the tokens for the title and the body.

Rewriting output of Drupal Views as custom text

We grab the tokens and put them into the text box.

Using replacement tokens in Drupal Views fields

And now our view shows them in the same column!

Merging title and body fields in Drupal Views

2) Adding an edit icon that leads to the edit page

We add “The edit icon” field to our content type, and attach the icon itself as a default image. We can move this field to “Disabled.”

Adding default image to a Drupal field

We then return to our view, find this field, add it to the view, and rewrite it so it leads to the content editing page. For this, we select “Output the field with custom link,” go to Replacement Patterns, grab the “node ID” ({{ nid }}) token, and shape our custom link with it:

Rewriting output of Drupal 8 Views fields

Done! We have a pretty edit icon that leads directly to the node editing page.

Drupal 8 view with field output rewrite

Let’s rewrite your Views fields exactly as you need

This has been just an elementary example of how to rewrite the output of Drupal 8 Views fields. Your fields will show exactly the way you want. It can be done with the built-in Views dashboard options, or with custom field formatters for more serious cases.

All you need is to contact our Drupal support and development team!

May 31 2019
May 31

Drupal is a great choice for media websites. This is due to easy content editing, flexible moderation workflows, advanced media handling, and much more.

And, of course, media and news websites on Drupal can enjoy unlimited content display options for. Today, we would like to show you one of them that we implemented for our customer’s Drupal website — so-called featured news collections, aka grouped news.

According to this Drupal setup, news on the same topic are grouped together in ways that provide a high level of usability for readers. More details are coming next.

Featured news collections as opposed to standard Drupal setup

Let’s see what makes the grouped news functionality special for news websites on Drupal, and how it differs from the standard Drupal setup:

  • Standard news are represented by Drupal nodes — one node per item. When you open a Drupal node, you see it in full view. When you open another Drupal node — you see another one. They can be grouped together by topic or category if they are tagged with the same taxonomy term. Still, all of them will be opened one by one.
  • On the contrary, featured news collections include multiple news on the same topic. When something happens in the world, they allow the reader to see the situation from all angles, or its step-by-step progress shown by new updates. The display offers a full view of all news items, which is very handy to read.

Featured news collection VS standard Drupal newsThe features of this news setup in more detail

Individual URLs for news items

We provided each featured news page has a general URL that the reader sees in the browser. However, each news item also has an individual direct link. When it is used, the page smoothly scrolls directly to the place where the particular item begins (due to jQuery Animate plugin).

The URL in the browser is also updated to the URL of the particular item. The URL change is achieved through the replaceState() method of the HTML5 History API, which allows developers to change the URL without the full page refresh.

These individual URLs are added to RSS feed and to the sitemap. Each of them also has social share buttons.

When shared, all pieces of news have individual meta tags. When someone follows their individual shared links, the page will smoothly scroll exactly to the place where each of them begins.

social media icons

Individual URLs and SEO

Every SEO expert knows that the same content available at different URls is a bad idea for Drupal sites or any others. We solved this by providing custom functionality that tells search engines to index the featured news collection only. The separate pieces of news will not be indexed or displayed in search results.

Navigation through the page

So the page with featured news has two blocks:

1) the block with news items in full view

If the block with news items has many of them, they will be divided into pages using the pager functionality.

2) the list of titles to navigate between all news items

What happens when a user clicks on a certain news item title in the navigation block?

  • If the item is found on the currently displayed page, the page smoothly scrolls to it and the URL is replaced, as we described above.
  • If it is not found on that page, we query the page that has it, using AJAX. Thanks to AJAX, the page with the full node view is loaded without page refresh. We calculate the position of the news item from the top of the page and animate scroll to it.

Featured news collection — navigation through the pageDesign for mobiles and tablets

News websites on Drupal should be convenient to access from any device. So, for mobiles and tablets, we provided the styling of the navigation block as a fixed floating block that becomes available upon clicks on the floating icon.

Enjoy interesting options for news websites on Drupal!

This was just a simple example of content display options for news websites on Drupal. Anything else is possible exactly in accordance with your ideas. In addition to AJAX for real-time updates, it’s possible to use frameworks like React, Vue, Angular, and so on.

Contact our Drupal team to discuss your news display functionality!

May 15 2019
May 15

There are Drupal modules loved by both developers and content editors. One of them is Layout Builder. It allows you to create page layout templates of various complexity via a handy drag-and-drop interface. The ability to do it with a built-in user-friendly tool is among the greatest benefits of Drupal.

We celebrate the news that Layout Builder in Drupal 8.7 core has become stable, which means it is officially ready for production sites. Let’s take a closer look at layout creation with this tool.

Layout Builder in Drupal 8 core: stable and feature-rich

Up to this moment, Layout Builder has gone a great path from an experimental module in Drupal 8.5 core. After a number of significant improvements and fixes related to keyboard accessibility, permission granularity, layout storage, translations, usability, and more, we now see Layout Builder in Drupal 8.7 core as a stable module.

Layout creation functionality is also found in popular contributed modules like Panels, Panelizer, Paragraphs, and Display Suite. Layout Builder inherits the best practices from them, and resembles them in many ways, while staying unique. So let’s review this intuitively understandable and powerful module has to offer.

Main features of Layout Builder

Layout Builder works with fieldable Drupal entities like content, users, comments, taxonomy, and so on. This “Lego box” allows you to:

  • compose the page layout with predefined sections
  • populate the sections with blocks that are various Drupal elements
  • configure each block
  • drag and drop the blocks to rearrange them

and much more.

The module can be used for these scenarios:

  • creating a layout for all entities of a certain type (e.g. all blog posts)
  • creating different layouts for different display modes (e.g. blog post’s teasers)
  • overriding the layout just for one entity of a type (e.g. just one blog post)
  • creating a layout for an individual entity (e.g. one landing page)

The last point deserves a special note. As Drupal creator Dries Buytaert wrote in his article “Why Layout Builder is so powerful and unique,” many of competing CMSs don’t offer a templated approach to layout creation from the browser. They only allow layouts for individual pages — in other cases developer input is needed. Drupal’s Layout Builder allows you to do both from the UI, which really makes Drupal stand out!

A tour on layout creation with Layout Builder

Let’s now have a look at how to create a simple layout with Layout Builder in Drupal 8.7.

1) Enabling the necessary modules

The layout creation story starts with enabling the stable Layout Builder and Layout Discovery modules in Drupal 8 core. 

enabling layout builder and layout discovery modules drupal core
2) Enabling Layout Builder for a content type

We want to create a template for all items of a content type. In our case, this is the “Tour” content type.

tour content type drupal8

In Structure — Content types — Tour, we select the “Manage display,” check “Use Layout Builder,” and click “Save.” 

enabling layout builder for drupal8 content type


Note: If we wanted to make each content item individually customizable, we would also check the other option “Allow each content item to have its Layout customized."

We no longer see content type fields, but no worries — they will be available in the Layout Builder UI where we can now go by clicking “Manage Layout.”

manage layout of content type drupal8
3) Composing our Layout with sections

Once moved, we can already see some sections made of existing “Tour” content type fields. We can use these or add new sections for 1, 2, 3, or 4 number of columns by clicking “Add section.” We can also add a couple of sections if we want to combine them vertically.

сompose layout with sections drupal8

When choosing the section, we can set the width proportion of its columns.

set column width layout builder drupal 8

4) Populating the Layout sections with blocks

Each section can be populated with blocks. These are not (or not only) Drupal blocks in the usual meaning — these are actually all Drupal website elements that are the building bricks for our Layout.

By clicking “Add block,” we see our content fields, lists (views), users, user fields, forms, menus, system elements, and so on. Blocks can be found by name. Custom blocks can also be created.

We have chosen a two-column section and we would like it to have the following blocks:

  • “Tour” image, “Tour” body, and Footer block for contacts (in the left column)
  • The “Venice stories” View that we have prepared (in the right column)

adding blocks to layout sections drupal 8

5) Configuring the Layout blocks

The familiar quick edit pencil above each block offers us to configure, move, or remove it. By choosing to configure, we see a configuration tray to the right. It has options in accordance with the formatters that the block has. For example, we can select the image style for our Tour image or hide the label in the “Venice stories” block.

configuring layout blocks drupal8

6) Brushing up the Layout structure

The blocks are draggable throughout the layout if we want to rearrange them. We then look through the page to see if it only has the needed sections and blocks, and remove the extra ones.

7) Saving the Layout and viewing our content

When we are done, there is no forgetting to click “Save layout” and then we can go and see how our content looks in our new template.

layout builder drupal 8 example

Get attractive Drupal 8 layouts!

We can all enjoy great opportunities for layout creation with the stable Layout Builder in Drupal 8.7 core. In our today’s example, we have just touched the tip of the iceberg of its capabilities.

Ask our Drupal development team to create magnetically attractive layouts for your Drupal 8 website, and let your users enjoy working with your site and your conversions grow!

May 09 2019
May 09
  • Malabya
  • 09/05/2019

How do you stay ahead of your competition? Easy - Be relevant. Address your audience’s pain points. Repeat. With the adoption of the continuous innovation model, Drupal is doing that and more. Drupal 8.7 was released on May 1st following the 6 months release cycle for Drupal 8. We saw huge improvements in Drupal 8.6 which was a big release. With 8.7, it just got better - With more stable modules ready to be used on productions and other interesting out-of-the-box features.

What's new in Drupal 8.7.0

Drupal 8.7 release is a big step which makes it more modernized, competitive, and user-friendly. Drupal is now truly API first, accessible, easy to use for editors and uses the latest PHP. The new features in Drupal 8.7 makes it easier for marketers to manage and update content effectively.

JSON:API lands in Drupal core

Drupal 8 ships with the JSON:API module which takes forward the API first game. API first initiative is one of the most anticipated features that the Drupal community is working towards. With API first, Drupal will do what it does best - Manage content,and talk to different integrations to deliver content over HTTP APIs. JSON:API is the first module which is added to the core as a stable module without going through an experimental phase.

JSON:API is a contributed module which is meant to deliver high performing API endpoints to expose content using JSON:API specifications. With JSON:API module, to expose any entity from your Drupal 8 site you just need to enable the module and JSON:API that will do the job for you. With its flexibility, the payload can be modified as needed by using just parameters. There's a lot more to that, which can be a topic of another blog post.

Layout Builder is now stable

Layout builder is one of top modules and I was really looking forward to it. In Drupal 8.7 it finally got a stable release and Layout builder now ships with massive improvements. In the current state, I will recommend Layout builder to replace a bunch of layout building modules like Panels, Panelizer, Display suite and another one of my top modules “Paragraphs”.

What’s new in Layout Builder? Well, not only you can have layouts for fieldable entities but now we can have unstructured data as well on our layouts. This means, we can now attach various block types in your Drupal site and create one time block instances.

Here is a short video to demo the powerful Layout Builder from Driesnote in Drupalcon Seattle.

[embedded content]

Umami goes Multilingual

The evaluation and demo installation profile, Umami Food Magazine, has a lot of improvement in Drupal 8.7. Umami is an out-of-the-box initiative which demonstrates the power of Drupal 8 out of the box. In 8.7, Umami is now more accessible, has multilingual features, a new welcome tour and uses the new Layout Builder module on Recipe pages to demonstrate the capabilities of the module. It now includes a Spanish version and more languages are being added as you read this.

A new Shiny look for Media Library

Even though still in experimental phase, the Media library gets a fresh look. Built on top of the stable Media module, the Media library allows usage of reusable Media in your Drupal site. These Media can vary from Images, Videos, Files, Documents and even Remote videos. These media assets will have their own identity with a set of attributes and meta information attached to them. This makes search and reusability extremely beneficial for marketers to quickly search and attach media for their contents. Apart from that, it’s easy to use with it’s drag and drop functionality, inline media creation and flexible grid and table views.

Here is a short video to demo for the new things in Media from the Driesnote in Drupalcon Seattle.

[embedded content]

Other Notable Updates in Drupal 8.7:

Support for PHP 7.3 and drop of PHP 5.6 support

PHP 7.3 was released in December 2018 and comes with numerous improvements and new features. Also with this release new Drupal sites can only be installed on PHP 7.0.8 or later. Installing Drupal on older versions results in a requirement error.

Support for automatic entity updates has been removed

In Drupal 8.7, automatic entity updates were removed which allowed to a site to update the existing schema of an entity type and its fields storage definitions to the latest (in-code) definitions. It was done to remove data integrity issues since it’s hard to anticipate side effects and critical bugs when executed.

Revisionable Taxonomy terms and Menu items

Taxonomy terms and Menu items are now revisionable which makes them eligible for the editorial workflow like Contents and Blocks.

As we’re getting closer to welcome the release of Drupal 9, things are already falling in place. Drupal 8.7 is packed with new features like a stable Layout Builder that lets you create layout templates really fast and easy. Comes with stable JSON:API support to help you build powerful decoupled applications. A more efficient and good lookin’ Media library (experimental) for content builders. Added features in Umami demo profile. While Drupal 8.7 makes way for PHP 7.3, it also dropped support for PHP 5.6. On the whole, Drupal 8.7 release has something for everybody - content editors, site builders, developers and site owners. Stay updated with Drupal’s new releases - stay ahead of your competition. We can help you do just that.

May 01 2019
May 01

The spring is in full bloom — and so is Drupal development. On May 1st, we officially meet Drupal 8.7.0 release that is bursting with new features. And, of course, they are worth a good review. After the previous release in September, we discussed media handling capabilities in D8.6 as one of many interesting updates. Today, let’s take a closer look at what’s new in Drupal 8.7.0.

What's new in Drupal 8.7.0

Drupal 8.7.0 release is a big step forward that makes the CMS even more modernized, competitive, and user-friendly. It is now API-first, featuring handy UIs for editors, using the latest PHP, speaking more languages, and so on. The details come right now.

JSON:API as a new stable module in Drupal core

Here goes what Drupal's creator Dries Buytaert called an important milestone in its evolution towards being an API-first platform for both decoupled and coupled apps.

In the new release, the JSON:API module was added as a stable module to Drupal 8.7 core — skipping any experimental phases! JSON:API immediately exposes entities as a standards-compliant web API, so the data can be pulled by third-party applications.

The module is now the fifth module in D8’s ‘Web services” package. This means Drupal is now more open than ever to data exchange and third-party integration.

JSON_API is a new stable module in Drupal 8 core

Layout Builder stable and improved in Drupal 8.7

The “great drop” deserved a handy tool to create layout templates — and it got one. Layout Builder appeared in D8 core as of 8.5 release and immediately became popular.

It has been improved a lot in terms of keyboard navigation accessibility, precise permissions, layout overrides, column width selection, and much more. And now we officially have stable Layout Builder in Drupal 8.7 core, ready to work on live sites.

The module lets you create layouts for content types and other fieldable entity types. You can also design the look of individual content items. Constructing pages “brick by brick” by combining elements, configuring the blocks, and drag-and-dropping them around is easy and enjoyable.

Layout Builder stable in Drupal 8.7.0 core

New Media Library user interface

When discussing what’s new in Drupal 8.7.0 release, we need to mention the Media Library’s new, stylish, and handy user interface. It’s both nice to look at and to work with.

Finding media items in the Library, bulk uploading them from the computer to the Library, selecting media items and embedding them into content is a pleasure.

The Media module that works together with the Media Library is already stable. The Media Library is still experimental but its stability will not be late in the coming — it’s planned to be in release 8.8. The creators still have great surprises like WYSIWYG support. 

New Media Library interface in Drupal 8.7.0

New Media Library interface in Drupal 8.7.0 (2)

Umami demo now multilingual

The most delicious Drupal demo — Umami Food Magazine — has been translated into Spanish in Drupal 8.7 release. Umami was created to give a chance to explore the CMS’s capabilities thanks to plenty of demo content and configuration. This includes content types, media types, taxonomy, display modes, views, menus, and much more.

And now, in addition to all the above, Umami also showcases multilingual features configured out-of-box that anyone can study. Umami is available as one of Drupal installation profiles alongside the “Standard” and “Minimal.”

Umami demo translated into Spanish in Drupal 8.7.0

End of PHP 5 support

Drupal 8.7 is the last release to support PHP 5. However, it is already impossible in D8.7 to install new websites with a PHP version lower than 7.0.8. Updates for existing websites that use PHP 5 are still possible, but a warning will be displayed. In release 8.8, Drupal security updates will definitely require PHP 7.

In any case, it’s important to remember that PHP 5.6 reached end-of-life in December 2018. So it’s time to update PHP due to both safety and efficiency reasons. You can entrust this to our website support team.

Revisionable custom menu links & taxonomy

Custom menu links and taxonomy terms have been made revisionable in version 8.7.0, which allows them to fully participate in editorial workflows.

Removal of automatic entity updates

In new Drupal 8.7.0 release, the support for automatic entity updates has been removed. The reason is data integrity issues and conflicts. So the drush entity:updates (drush entup) command no longer works. Changes to entities will now be performed using standard update procedures.

Third-party library updates

The new release has also introduced the updates of important libraries to newer versions. For example, Guzzle to 6.3.3, Stylelint to 9.10.1, Coder to 8.3.1, CKEditor to 4.11.3, Twig to 1.38.4, as well as numerous PHP dependencies.

Drop of support for Internet Explorer 9 and 10

The 8.7.0 release is a final goodbye to Internet Explorer 9 and 10. It removes a workaround that still existed in D8.5 and D8.6 and allowed the inclusion of 32+ stylesheets.

Update to Drupal 8.7 smoothly!

This has been just a brief rundown of what’s new in Drupal 8.7.0. Follow our next blog posts, because we plan to review new features in more detail.

The day of the new release also marks the end of security support for D8.5.x. So it’s time to move forward — let your website enjoy the new features and stay protected. For the smooth update, rely on our Drupal support team.

Apr 24 2019
Apr 24

Delicious food is able to inspire people even as they just see it on a website. That’s why food industry companies greatly benefit from well-built sites. The platform choice also matters. Drupal suits websites in all industries — e-commerce, real estate, education, or any other. In this post, we will explore why create a food website with Drupal. And get ready for tasty examples — colorful Drupal websites for restaurants, food products, recipes, and more.

Why create a food website with Drupal

The reasons to create a food website with Drupal include useful tools and the characteristics of the CMS. We will name at least a few of them and spice it up with website examples.

Contributed Drupal tools for food websites

The Drupal community has prepared a varied menu of free tools for food industry sites. Among them:

Umami Food Magazine


Mobile responsiveness

Users may want to order food, find a restaurant, or get a recipe on the go. Food images that are very attractive by themselves, should display well on mobile devices with minimum scrolling or zooming, and still retain their quality.

Drupal 8 has mobile friendliness as a priority. Its powerful tools easily make websites responsive. On D7, responsive design can also be created smoothly by an expert Drupal team.

See an example of responsive Alervi website with recipes that is built with Drupal:

Alervi Drupal website

Multilingual features

Let your food website be understandable to users across the globe. They will appreciate being able to use your recipes in their language. If you offer food products for sale, this will open new markets to you. Finally, if you own a restaurant, get ready to welcome tourists who have learnt about your online.

Drupal 8 supports a hundred languages that can be quickly added to websites. It offers ready interface translations, RTL (right-to-left) support, flexibility in deciding what to translate, and much more. On Drupal 7, multi language features can also be easily created by a good Drupal team.

See the multilingual Drupal Paysan Breton website with food products and recipes:

Paysan Breton Drupal website


Content presentation opportunities

Food is very magnetically appealing content by itself. A CMS should help you make the best use of it. One of the best features of Drupal is that you can organize and structure your content so users admire its look, easily find what they are looking for, and complete their goals.

For this purpose, Drupal offers Views, taxonomy for content categorization, display modes, powerful page builders, and much more. This will be useful for all food industry websites — those for restaurants, for food products, or for recipes.

See how content is presented at Davis website with food products and recipes that is built with Drupal:

Davis Drupal website


At The Laughing Cow website with food products that is built with Drupal:

The Laughing Cow Drupal website
At Drupal-built Higgidy website with food recipes:

Higgidy Drupal website
 

Unlimited website functionalities

Drupal has 42,000+ contributed modules for all imaginable features. What is not offered by them, can be created as custom functionality. Whatever is needed for restaurant sites, recipe sites, or food product sites, can be created with Drupal. See just a few simple examples.

Product locator at The Laughing Cow website with food products that is created with Drupal:

The Laughing Cow Drupal website - product locator

Step-by-step cooking at Drupal-built Jules Destrooper website with recipes:

Jules Destrooper Drupal website - step-by-step cooking

See the San Genesio website restaurant Drupal website that offers table reservations:

San Genesio Drupal website

Finding recipes by multiple characteristics at Drupal-built Paysan Breton website:

Paysan Breton Drupal website - finding recipes by multiple characteristics
Choosing dishes by multiple ingredients at The Boss Cafe website built with Drupal:

The Boss Cafe website


Google map for every restaurant at Drupal-built Le Comptoir du Malt website for a chain of restaurants:

Le Comptoir du Malt Drupal website

E-commerce features

Drupal has powerful e-commerce features represented by two platforms: Drupal Commerce and Ubercart. So your users to buy food products from you online.

Any imaginable features are possible here — integration with payment systems and shipping providers, promotions and discounts, product customization, order management, and so on.

See e-commerce with coupon codes at Jules Destrooper website:

Jules Destrooper Drupal website - e-commerce with coupon codes


See e-commerce with dynamic shopping cart flyout at Eldum Rétt website:

Eldum Rétt website - e-commerce with dynamic shopping cart flyout

Interaction with JavaScript frameworks

Drupal is smoothly combined with JavaScript frameworks that add a high level of speed and interactive features to websites like push notifications, real-time updates without page reload, and much more.

A very popular setup is the decoupled architecture where Drupal serves as a backend sending its data to an app built on a JavaScript framework — React, Vue, Angular etc.

Here is an example of decoupled Drupal Commerce and React Native App at Eldum Rétt website:

Eldum Rétt - decoupled Drupal Commerce and React Native

Let’s create a food website for you!

This has been just a brief review of the main reasons to create a food website with Drupal. Hopefully, you enjoyed the examples. So let your food business flourish with the help of a well-built website — contact our Drupal development team!

Apr 24 2019
Apr 24

Recently, I had the privilege of interacting with a few of the most decorated and remarkable members of the Drupal community - who also happen to be Drupal’s top contributors. I questioned them about the reason(s) behind them contributing to Drupal and what do they do to make a difference. Their responses were incredible, honest and unfeigned.

Adrian Cid Almaguer

Senior Drupal Developer. Acquia Certified Grand Master - Drupal 8

I use Drupal every day and my career in the last years are focused to it, so I want to work with something that I feel comfortable and that meets my needs. If I find errors or something that can be done in a better way in projects I´m using or in the Drupal Core, I open an issue in the project queue and if I have the knowledge and the time, I create a patch for it. This is a way I can says THANKS to the Drupal community.

The strength of Drupal is the community and the contributes modules you can use to create your project, one person can’t create and maintain all the modules you will need, but if several of us give ourselves the task of doing it, all will be more easy, and is not just code, we need documentation, we need examples, translations and many other things in the community, the only way to do this is if each of the Drupal user give at least a small contribution to the community. So, when I contribute to Drupal, I’m helping you to have time to contribute to something that I may need in the future.

I maintain many Drupal modules, so basically the main contributions are create, update and migrate Drupal modules, but I contribute too in other areas. I contribute translating Drupal to the Spanish language and moderating the user translations, I create patches for some projects I do not maintain, sometimes I review some patches in the issue queue, I write and update modules documentation, I make some contributions creating tests for Drupal modules, I give support to the community in the Slack channels and in the Drupal Stack-exchange site and help new contributors to learn how to contribute projects to Drupal in the correct way. And as I’m a former teacher, I participate in regional Drupal events promoting how and why is important to contribute to Drupal projects and how to do it.

I will love to maintain a Drupal core module but I don’t know if I will have the time to do it, so for the moment I will continue migrating to Drupal 8, evolving and having up to date the modules I maintain.

Alex Moreno

Technical Architect at Acquia

Contributing to open source is not just a good and healthy habit for the communities. It is also a healthy habit for your own projects and your self-improvement. Contributing validates your knowledge opening your knowledge to everyone else. So you can get feedback that helps yourself to improve, and also ensures that your project is taking the right direction. For example when patching other contributed modules with fixes or improvements.

I enjoy writing code. My main contributions have been always on that direction. Although more recently I have been also helping on other tasks, like Spanish translations in Drupal 8 Umami.

Baddy Sonja Breidert

Co-Founder of 1xINTERNET

One of the reasons why I contribute to Drupal is to make Drupal more known in my area, get more people involved, attract new users, etc. I do my bit in contributing to the Drupal project by organising events like Drupal Europe and Drupal Camps in Germany and Icelan

Daniel Wehner

Senior Drupal Engineer at Times Higher Education

Unlike many other projects the Drupal community tries to create a sustainable environment. Both from the technical site, but probably on the long run more important from the community side. Initiatives like Drupal Diversity & Inclusion lead the foundation for a project which won't just go away like many others

Jacob Rockowitz

Drupal developer. Built and maintains the Webform module for Drupal 8

Contributing to open source software provides me with an endless collaborative challenge. My professional livelihood is tied to the success of Drupal which inspires me to give something back to the Drupal community. Contributing to Drupal also provides me with an intellectual and social hobby where I get to interact with new people every day.

Everyone has a personal groove/style for building software. After 20 years of writing software, I have come to accept that I like working towards a single goal/project, which is the Webform module for Drupal 8. At the same time, I also have learned that building open source software is more than just contributing code; it is about supporting and creating a community around the code. Supporting the Drupal community has led to also write documentation, blog about Drupal, Webform, and sustainability, present at conferences, and address the bigger picture around building and maintaining software

Joel Pittet

Web Coder. Drupal 8 Theme System Co-maintainer

I feel that I should give back to ensure the tools I use keep working. Monetarily or with my time. And with Drupal it’s a bit of both:

I started submitting patches for the Twig initiative for Drupal core, then mentoring and talks at DrupalCons and camps, followed by some contrib patches, then offered to co-maintain some commerce modules, which snowballed into more and more contrib module co-maintaining, mostly for ones I use at work.

I pay the Drupal Association individual membership to help the teams for all the Drupal.orgwork and event work they do.

Joachim Noreiko

Freelance Drupal developer. Built and Maintains Drupal Code Builder

I guess, I like fixing stuff, I like to code a bit in my spare time, I like to contribute to Drupal, and as a freelancer, it’s good to be visible in the community.

Lately I’ve actually been feeling a bit demotivated. I’ve been contributing to core a bit, but it’s always an uphill struggle getting beyond an initial patch. I maintain a few contrib modules, and my Drupal Code Builder tool as well.

Joris Vercammen (borisson)

Drupal developer, Search API + Facets

Being able to pull so many awesome modules for free really makes the work we all do in building good solutions for our customers a lot easier. This system doesn’t work without some of us putting things (code/time/blogposts/…) back into it. The Drupal community has given me a lot of things unrelated to just the software as well (really awesome friends, a better job, the ability to travel all over Europe, etc.). To enable others that come after me to have a similar experience, I think that it is important to give back, as long as it fits in the schedule.

Most of my contributions are under the form of code. I try to do some mentoring but while that is a lot more effective, it is really hard and I’m not that great at it, yet. I’m mostly interested in the Search API ecosystem because that’s what I got roped in to when I started contributing. A lot of my core contributions are for blockers (of blockers of blockers) for things that we need. I try to focus a little bit on the Facets module, since that is what I’m responsible for, but it’s not always easy or the most fun to do. Especially since I’ve still not built a Drupal 8 site with facets on it.

Malabya

Open-source evangelist. Drupal Practice Head at Specbee

Community. That’s what motivates me to contribute. The feeling I get when someone uses your code or module or theme is great. Which is a good drive to motivate for more contributions. Drupal being an open-source software, it is where it is just of the contributions by thousands of contributors. So, when we use Drupal it is our responsibility to contribute back to the software to make it even better for a wider reach

Apart from contributing modules, theme & distributions I help in organising local meetups in Bangalore and mentoring new developers to contribute and begin their contribution journey from the root level. This gives me immense pleasure when I can help someone to introduce to the world of Drupal and make them understand about the importance of contributions and community. Going forward, I would definitely strive towards introducing Drupal to students giving them a career choice and bring in more members to the Drupal community.

Nick Wilde

Drupal developer at Taoti Creative

My main motivation has always been improving what I use - first OS contribution before my Drupal days was a bug-fix for an abandoned at the time project that was impairing my Modding of TES-III Morrowind ;). I like the challenges and benefits of working in a community. Code reviews both that I've done and those done on my code have been incredibly important to my growth as a developer. I also have used it as a portfolio/career advancement method, although that is important it is only of tertiary importance to me. Seeing a test go green or a getting confirmation that a bug is fixed is incredibly satisfying to me personally. Also, I believe if you use an open source project especially professionally, contributing back is the right thing.

My level of contributions vary a fair bit depending on my personal and professional level of busy, but mostly through contrib module maintenance/patch submissions. Also in the last year or so, I've been getting into a lot more mentorship roles - both in my new company and within the broader community. Restarted my local Drupal meetup and am doing presentations there regularly.

Rachel Norfolk

Community Liaison at Drupal Association

Contribution for me is, at least partly, a selfish act. I have learned so much from some of the best people in the industry, simply by following along and helping where I can. I have also built up an amazing network of people who, because they know I help others, are more prepared to help me when I need it. Both code and other ways of contributing. I’m occasionally in the Drupal core issue queues, I help mentor others and I get involved in community issues.

Renato Goncalves

Software Engineer at CI&T's Drupal Competence Office (DCO)

My first motivation to contribute to the Drupal community is helping others that have the same requirement as mine. To be honest, I get very happy when someone uses my community code in their projects. I'm glad to know that I'm helping people. When I'm developing a new feature I check if my solution can be useful to other projects and that way I create my code using a generic way. - Usually, I'm the first to reuse the code several times. I think this is important to make Drupal a powerful and collaborative framework. I liked my first experience using the framework because for each requirement of my project, Drupal has a solution. I think contributing to the community is important for that. More and more new people are going to use the framework, and consequently new contributors, and in that way, it becomes increasingly powerful and efficient. An example of this is the Drupal Security Team, where they work hard to ensure that Drupal is a secure framework. I'm making contributions at the same time I delivery projects. Today I write my code in a generic way, that is, the code can be reused in other times. A good example of this model is the Janrain Connect project. This project is official in the community (contrib project) and my team and I work hard using 100% of the generic code, so we can reuse this code on other cases.

When we need to make some improvement in the code, the first point is checking a way to make this improvement using a generic solution. Using this approach we can help our project and help the community. In this way, we are contributing to making an organized and agile framework. The goal is that other people don't need to re-write code. It is a way of transforming the framework into a collaborative model.

Thomas Seidl

Drupal developer, “The Search API Guy”

My motivation comes from several sources: First off, I just like programming, and while fixing bugs, writing tests or giving support isn’t always fun, a lot of the time working on my modules is. It’s just one of my hobbies in that regard. Then, with my modules running on more than 100,000 sites (based on the report), there’s both a sense of accomplishment and responsibility – I feel proud in providing functionality for so many sites, and while, as a volunteer, I don’t feel directly responsible for them, I still want to help improve them where I can, take away pain points and ensure they keep running. And lastly, having a popular, well-maintained module is also the base of my business as a freelancer: it not only provides marketing for my abilities, but also the very market of users who want customizations. So, maintaining and improving my modules is also, indirectly, important for my income, even though the vast majority of my contributed work is unpaid.

Apart from participating in coding standards discussions, I almost exclusively contribute by maintaining my modules (and, increasingly rarely, adding new ones) – fixing bugs, adding features, answering support requests, etc. I sometimes also provide patches for other modules, but generally only when I’m paid to do so. (“My modules” being Search API and its add-on modules Database Search, Autocomplete, Saved Searches and, for D7 only, Solr, Pages, Location and Multi-Index Searches.)

And Lastly....

It’s not just brands that have adopted Drupal as their CMS – they are the cream of brands. From NASA to the Emmy Awards. From Harvard University to eBay. From Twitter to the New York State. These brands have various reasons to choose Drupal as their Content Management System. Drupal’s adaptability to any business process, advanced UX and UI capabilities for an interactive and personalized experience, load-time optimization functionalities, easy content authoring and management, high-security standards, the API-first architecture and so much more!

The major reason why Drupal is being accepted and endorsed by more than a million websites today is because Drupal is always ahead of the curve. Especially since Drupal adopted a continuous innovation model wherein updated versions are released every 6-months with seamless upgrade paths. All of this is possible because of the proactive and ever-evolving Drupal community. The goals for their contributions may vary - from optimizing projects for personal/professional success to creating an impact on others or simply to gain more experience. Either way, they are making a difference and taking Drupal to the next level every time they contribute. Thanks to all the contributors who are making Drupal a better place.

I’d like to end with an excerpt from Dries - “It’s really the Drupal community and not so much the software that makes the Drupal project what it is. So fostering the Drupal community is actually more important than just managing the code base.”

Warmly thanking all the mentioned contributors for helping me put this article together.

Apr 24 2019
Apr 24

Simple or custom-made? Is it a quick-to-assemble, rather “prototypical” form that you need for your website? Or a more complex, custom-made one? In a Drupal 8 Contact Forms vs Webform “debate”, which Drupal form builder best suits your data collection requirements?

On one hand, you have the convenience of creating your web forms in no time: simple, straightforward, “conventional” web forms. On the other hand, you get to scan through a never-ending list of advanced options and come up with a complex, fully custom-made web form.

That, of course, if you don't mind the time you need to invest in going through all those different form elements and available features and the risk of getting... overwhelmed by tons of field customization options.

Ease of use vs unlimited capabilities...

The convenience of getting your forms up and ready to collect user data in no time vs the chance to tailor some more advanced forms, ideally customized, carrying lots of different field values.

Decisions, decision...

Now, to help you decide here's a more detailed Drupal 8 Contact Forms vs Webform comparison. Weigh each one of the 2 form modules' benefits and drawbacks, set them against your own needs and... make the choice:


1. The Contact Forms Module 

Being part of Drupal core, there's no need to download and install the module.

Just go to Structure>Contact forms. Next, choose either to opt for the default form or to set up a new one: click the “Add contact form” button.

Drupal 8 Contact Forms vs Webform: Add Contact Form


Once in the form creation screen, enter your form's values in the predefined fields that you have there:
 

  • give the form a name in the “Label” field
  • enter the email address where all the form submission will be sent to (most probably your site admin address) in the “Recipients” field
  • enter your “Thank you” text in the “Message” field there; this will be the “thank you” text line your users will see once they hit the “submit/send” button 
  • in the “Redirect path”, enter the URL to the page that you want them to get forwarded to after they've submitted the forms (that if you don't want them to be redirected back to the homepage, by default)
  • click “Save” and there you have it: a simple form, with all the basic, must-have field values, built in no time
     

Of course, that doesn't mean that you can't further explore the given features and maybe add a few more fields and even styling options.

For instance, you could “Edit” your newly created form. Just select it in the “Contact Forms” screen and, scrolling down the options in the drop-down menu opening up, click the “Manage fields” option.

Click “Add field”, then “select a field type” – Text(plain), let's say – enter the “Label” and configure its settings.

Furthermore, if you want to style your form a bit, hit the “Manage form display” tab and... opt for a placeholder, for example. Next, explore the options available in the “Manage display” screen. For instance, you get to decide if you want your field label to be hidden, inline or visually hidden...

In short: in a Drupal 8 Contact Forms vs Webform comparison, the first form builder will always outshine the latter when it comes to ease of use.

It empowers you to set up a simple form quick and easy...
 

2. The Webform Module

Now, if Contact Forms is a rather minimalist form builder, the Webform module is a feature-rich, powerful one.

The customization features that it ships with go from email notifications to fine-grained access, from statistic collection of data to delivering results in a CSV format. From exporting data in various formats to... conditional sorting and filtering.

In other words, with Webform sky is the limit when it comes to the contact form that you can create.

It can go from a basic one to a highly complex, multi-page form. One made of lots of elements, advanced options for the user to select from, settings and features for you to leverage in the back-end...

But, let's keep in mind that it's contributed module so you'll first need to download it from Drupal.org.

Next, go to “Structure” and hit the “Webforms” tab. Then, click the “Add webform” button and, in the next screen popping up, give your new form a name (enter it in the “Title” field).

You'll be automatically forwarded to the “Build” tab, which is where all the “magic happens”. Once you click the “Add element” button, you'll get to “swim through” a sea of lots and lots... and lots of form elements (known as “fields” in Contact forms) to choose from. Ranging from basic to really advanced ones...

Webform: Select an Element Screen


Let's assume that you'll want to add a “Text field” element. Click the “Add Element” button corresponding it, then scan through all the new customization options listed up in the “Add Text field element” screen opening up next...

Feel free to add other elements to your webform: a “text area” maybe, an “email” element, as well... 

Note: do keep in mind that, once you've settled for the final fields/elements to be included in your web form, you can always change the order to get them displayed in. Just drag and drop them till they fit that predefined order in your mind...

Also, you can check/mark them as “Required” and turn them into “must fill in" fields, as opposed to optional form fields.

Note: feel free to edit that “Thank you” page that your webform will automatically forward users to. How? By clicking “Back to form”>"Settings”>"Confirmation” and selecting from the different options that you have there:
 

  • enter your own Confirmation title (e.g. “Thank you!”)
  • customize your Confirmation message
     

3. Drupal 8 Contact Forms vs Webform: Key Differences

Now that we've run our spotlight over each one of these 2 form building tools, let's make an inventory of the differences that we've identified:
 

  • first of all, it's obvious that the Webform module gives you more control over your web forms' design
     
  • also, unlike Contact Forms, it supports conditional emails; you get to send an email to a specific user in your list based on conditions associated with the value of certain elements in your form
     
  • Webform enables you to add basic logic to your web forms
     
  • … it comes packed with tons of advanced options, ranging from JS effects to conditional logic, to submission handling, etc.
     
  • Contact Forms, on the other hand, allows you to set up a simple contact form in the blink of an eye; you skip the tedious process of scanning through lots and lots of options, settings, and complex features
     
  • Webform allows you to create your forms either in a YAML file or in its the admin-friendly UI
     
  • also, Webform comes as a “cluster” of submodules – Webform REST, Honeypot, Webform Views, SMTP, Webform Encrypt, etc. – which are “responsible for” its multiple capabilities
     

4. In Conclusion...

The conclusion of this Drupal 8 Contact Forms vs Webform “debate” is quite simple: 

If you need a basic form on your website and you need it built fast, go with Contact Forms. Being included in Drupal 8 adds convenience...

But if you want to customize your form (and you have the time), to style it to your liking and “turbocharge” with advanced features and options, then go with Webform.
 

It's a much more powerful and feature-rich form builder, perfectly suited for your complex requirements...


Image by Tumisu from Pixabay

Apr 19 2019
Apr 19
  • Shriganesh
  • 19/04/2019

“The limits of my language are the limits of my world" - Ludwig Wittgenstein, Philosopher

Recently, I came across a very interesting stat. 56% of users either spend more time on sites in their own language than they do in English or boycott English-language URLs altogether.

This was confusing, given to the fact that English IS THE MOST popular language in the world! Well, apparently it stands third behind Mandarin and Spanish!

As the internet continues to grow, more people around the world are getting familiar with it, and this means just one thing. If you need to internationalize your business for better revenue, you need to go multilingual!

For most of the CMS tools, non CMS languages and frameworks, creating a multilingual website is a challenging task with numerous pain points. However, thankfully, this is not the case with Drupal CMS.

As a platform with capabilities of delivering multilingual websites right out of the box, reaching a broader audience, targeting more locations and taking your business global with a perfect multilingual solution is the giant leap for competitive advantage.

It is a Drupal world

A multilingual website is not an easy task. Just to begin with, you will have hundreds of questions over which you might break your head. Should you display the content in native language? How will media files be handled? Will the translations fail? Will the CMS be flexible enough to handle the changes incurred by the translations?

Well, to answer all these questions and more, creating a multilingual website just got a lot easier with Drupal CMS. Having tremendously evolved from its previous versions, Drupal 8 comes with huge benefits for both the site administrators and end users with Drupal 8's multilinguistic support.

So what makes Drupal 8 your “knight in shining armour”? Let’s find out.

Multilingual is in Drupal core now

Drupal 8 has brought in a lot of changes in the implementation of multilingual sites, making it easier and less complex. In the previous versions of Drupal, one had to install extra modules just to have support for multilingual functionality. That meant a lot of extra work, more maintenance, and increased costs. Drupal 8, however, brings in multilingual support to Drupal core with 4 modules (about which we will be discussing in the later sections) thus improving your website performance.

Localized Content

Out of the many great features that Drupal 8 brings in for multilingual websites, field-level translations for localized content is a key aspect for better usability. With such translations, it becomes easier to show localized content in every region without having to create a huge number of new nodes. This means that content translation is possible for all types of content, like user fields, taxonomy etc.

Language Support

The Drupal CMS has a very impressive list of available languages, allowing you to cover every nook and corner of the world. This list with over a hundred languages also supports languages with right-to-left text direction. Some of the default languages available are Arabic, Hebrew, Persian, Farsi and Urdu.

A highly motivated multilingual community

Drupal CMS is not just known for its amazing features, but also for those amazing people behind these features. Yes, I'm talking about the Drupal community that works selflessly to make Drupal an excellent CMS than before. The multilingual support in Drupal 8 is the cherry on top. With developers from around the world supporting the multilingual initiative, you have an extremely powerful driving force for your multilingual website!

The Core Modules

Unlike the previous versions of Drupal, most of the major functionalities and features that are necessary to build a multilingual website is offered in the 4 new modules in Drupal core. These modules replace the suite of various contributed modules, making it a lot easier for site administrators and the users. Let us dig in and learn what exactly these modules are, and the key roles that they play.

Language Module

This is the base module that is required for any multilingual website. This module lets you choose from 94 languages, and allows you to assign your preferred language for everything from nodes and users to views, blocks and menus. The module also allows each user to select his own language for the admin interface and configure how page languages are chosen, and apply languages to content. Some of the other features of this module are:

  • Better language selection defaults (URL negotiation enabled by default)
  • Allows browser language detection, which is made configurable with external language codes.
  • Has built-in Transliteration for machine names.

Interface Translation Module

The interface translation module plays the role of translating the built-in user interface, along with the modules and themes added. It also allows automatic downloads and updates and lets the user to use any translation interface available in the Drupal community (in any language supported by Drupal 8 ). English is not the default language anymore and it can be customized or even removed completely. Also, the module has built in translation UI for easier editing. Some of the other features of the interface translation module are:

  • Default protected local translations.
  • Plural versions are now editable on an integrated interface.
  • The module also has protected custom translations which are exportable.

Content Translation Module

Content entities, site content, pages, taxonomy terms or just the blocks; as a user, you can translate any of these into different languages using the Content Translation Module. Resembling the Interface Translation Module, this module allows easy configuration of the default language of the content. Also, users can hide or display the position of language selector for an easy interface. Some of the other features of Content Translation Module include:

  • Allows for field-level configurability
  • Integrated Views
  • Exposed language information via search API
  • Allows per-language content access for better control and accessibility.

Configuration Translation Module

The Configuration Translation module translates texts that are a part of the configuration. These texts include field labels, the text used in Views etc. In short, the module offers a built-in responsive translation interface for configurations. Some of the other features of the Configuration Translation Module are:

  • Everything shipped is pre-translatable on localize.drupal.org
  • Availability of an overview screen for any assistance needed in the process.

Contributed Modules for a Multilingual Website on Drupal 8

Apart from these four important core modules, there are some unique contributed modules which you might consider using for your website. These contributed modules have unique features that will help your website speak your customer’s language. Let's discover some of them in this section.

Language Selection Page

It is a cool thing to allow your website visitors to choose the languages (it can be their own mother tongue) they'd like to see your site's content translated to! This module empowers your visitors by presenting them a landing page where they can choose their preferred language. As a business, when you have minimal information about the data of your visitors, (which country they are accessing your website from, or what their mother tongue is) this module provides a huge advantage.

Language Fallback

Suppose a certain translation cannot be delivered to your website visitor in the custom language, this module provides a backup or a plan B and allows this undelivered translation to fallback to another language (specified by you). Thus, in case anything happens and the translation gets messed up, the user will still get the requested content in another familiar language or dialect.

Language Cookie

How cool will it be if your website could detect the visitor's mother language? Well, the language cookie module identifies the visitors' mother language by basically adding a new "cookie" field to the Language Negotiation settings. This in turn will set the language on your site in accordance with the extra cookie.

IP Language Negotiation

A key module for a Drupal 8 multilingual website, this module is quite similar to the Language Cookie module. The IP Language Negotiation detects the specific country from which a visitor is accessing your website and automatically displays the content of the entire website in the respective native language.

Localization Client

With an on-page translator editor, this module ensures that the next time you need to fix, create or add new translations to specific pages on the website, you don't have to go through all the pages to find them precisely and add or edit the translated content. Localization Client allows easy navigation around the pages to find the targeted ones directly, and fix/edit them.

It would take you over 7,000 languages to reach the entire global population. Reaching a wider audience with an optimized user experience and improved communication efforts to drive better conversion rates is not possible without a CMS warehouse that represents your web content. With a seamless multilingual solution straight out-of-the-box, Drupal 8 is the platform for your non-English users. Numerous benefits, customizable features and amazing capabilities to handle the multilingual support that your website needs. Drupal 8 is the complete package.

Apr 16 2019
Apr 16

Last week Drupalcon North America was held in Seattle, where Dries opened the conference with the traditional "Driesnote". In the presentation, Dries talked about automated updates for Drupal, a thing I am very passionate about myself. He then went on to say:

I hope that in Drupalcon Amsterdam...in six months… I will be able to stand on stage and actually give some sort of demo. That would be my goal. So obviously… I would need your help with that… but that would be fantastic.

This triggered a thought: with the tools we have today, and as composer support is fairly decent, we can actually demo this somewhat utopic goal now. Which is why I made a video of just that. So without further ado: here is the demo!

[embedded content]

Automatic updates and the future

This demo demonstrates tools that are available now. Instead of only focusing on those tools (and promoting violinist.io), I want to expand on the subject of automated updates in Drupal, and its future.

Like for Dries, automatic updates is an important issue to me. Not only because I promote running automated composer updates with violinist.io, but because having these features will make Drupal more viable for hobbyists and beginners. Which in turn is something that can help us reach more users, and increase our diversity. Consequently, having automated updates is important for the “non-professional” group of Drupal users.

In the presentation, Dries also points out some important positive effects of having automated updates. First, it will help securing your site (or your client's site) when time-critical security updates are released. Second, it will make it easier for organizations and agencies to maintain websites. This means that having automated updates is important for the “professional” group of Drupal users as well.

This brings us to the next segment, which mostly applies to agencies and organizations using Drupal professionally. Two issues are often raised about having automated updates. First, that moving and/or overwriting the files of your codebase is a security risk. Second, that updating files on your live server can be a no-go. Maybe you have a version control system in place. Or perhaps you have a continuous integration/deployment pipeline. Or, you have setups that deploy their codebase to multiple front-servers. The two issues are valid concerns, but usually they are less of a concern to "non-professional" users. This implies that having automated updates is important for the “professional” AND “non-professional”, but the preferred implementation for these two groups might conflict.

In my personal opinion, we can support both. Let me explain how.

My suggestion is that we can have a system in place that is pluggable in all parts. This means that the "non-professional" can use plugins that are useful for updating via the file system, and hopefully set-and-forget the automatic updates for their site. It also means that the "professional", the one with the pipeline and version control, could have entirely different plugins for updates. To get back to the video above, a pre-flight check (which is how we determine if we can update) can mean checking for pull requests for the available update, and checking that the tests pass. The plugin for updating could simply merge the pull request, since automated deploys are run for the master branch. Now, different teams have different requirements, but this means that you could use a Pantheon or Platform.sh plugin for automated updates. Or, maybe you have a custom plugin for your team that you use across projects.

I believe this feature can help automation for "professional" teams of all sizes, and make the very same system usable for "non-professionals" that want to set-and-forget. This is also why I believe having automated updates in core, is in no way in conflict with doing automated updates like in the video above. It will only complement the toolbox we currently have!

If you want to read more about the Automatic Updates initiative, there is more info here. It is an exciting future, and we can all help out in making the future more user-friendly and secure. I know I will!

Apr 03 2019
Apr 03

JavaScript frameworks have raised the bar of website speed to the sky. Still, it’s just the beginning. GatsbyJS, a tool based on React and GraphQL, impresses the world with fast websites and applications it creates. Let’s take a look at combining Drupal and GatsbyJS to achieve high website speed.

What is GatsbyJS?

GatsbyJS is an open-source React-based framework for building blazing fast websites and applications. Gatsby pulls data from various sources like APIs, decoupled CMSs, databases, markdown, YAML, and more, using GraphQL. 

Gatsby is also called a static site PWA (progressive web app) generator. However, developers can go beyond static sites. Each Gatsby site is a full-fledged React application, so it’s possible to create dynamic apps with it (online stores, blog sites, user dashboards, and so on). 

Created in 2015, GatsbyJS has reached 417,700+ weekly NPM downloads and a 32,600 star rating on GitHub. The showcase of projects built with Gatsby on the official website alone includes 450+ sites.

Its latest version, Gatsby v2, has 130+ default starter kits to quickly start a Gatsby site. Gatsby also has 740+ source plugins to pull data from specific sources (including Drupal). Gatsby websites are also easy to deploy anywhere.

Gatsby and high website speed

“Building blazing fast websites” is part of the official Gatsby slogan. How fast is “blazing fast”? We performed a Google PageSpeed test for Gatsby default starter demo Netlify:

Google PageSpeed test for Gatsby default starter

Here is the same test performed for Gatsby starter blog demo Netlify:

Google PageSpeed test for Gatsby default blog starter


To achieve high website speed results, Gatsby uses:

  • prefetching
  • lazy-loading
  • inlining critical CSS
  • code splitting
  • optimized Webpack configurations
  • server-side-rendering
  • accessible Reach router

and more.

GatsbyJS recognized by the Drupal community

Drupal, with its strong content management features, can provide a powerful data source for the fast and lightweight Gatsby frontend. So the idea of combining Drupal and Gatsby has inspired the Drupal community a lot. Decoupling Drupal 8 with Gatsby has become the topic of speeches and workshops at Drupal meetups. Among them:

Connecting Drupal and GatsbyJS

So let’s take a glimpse at how Gatsby and Drupal are connected. For combining them, we will need:

  • Gatsby website
  • Drupal website
  • Gatsby source plugin for Drupal to connect them

1. Preparing the Gatsby website

To get a Gatsby website, we first need to make sure we have NodeJS and NPM installed. Let’s then install Gatsby command-line interface:

   npm install -g gatsby-cli

We create our new project called “drupal-gatsby”. This command will install the Gatsby default starter from Git. Then we go to its folder:

   gatsby new drupal-gatsby && cd drupal-gatsby

And we run the command to build our website on the server:

   gatsby develop

We are now able to see our Gatsby site with its default starter “astronaut” design at http://localhost:8000/

GatsbyJS website


We will see what we have on the website. There are config files and the src folder with components (header, footer etc.), pages, and images.

The gatsby-config.js file contains the configuration, including the site’s name. Let’s change this name from “Gatsby Default Starter” to “Drupal-Gatsby website by Drudesk” in this file:

  siteMetadata: {
    title: 'Drupal-Gatsby website by Drudesk',
  },


The src/pages folder has the files for all our pages. It’s possible to create new pages right there by copying the existing page files and putting new page names into them. And then, for example, the “news” page will be available at the route “/news.”

The index.js file is where we can change the greeting phrases on the main page. The changes apply instantly, without page reload. 

The “Gatsby develop” command is always active in the terminal and it rebuilds the page in real time after all our changes. So reactive — this is JavaScript, after all!

Gatsby-Drupal website by Drudesk


By visiting http://localhost:8000/___graphql, we see GraphiQL, an in-browser GraphQL IDE to manage our website’s queries. The left side is for queries, the right one is for responses from the server. The “play” button will run the queries. 

The ctrl+space keys offer autocomplete options for queries. It works when we open a curly brace. Let’s choose:

{
allSitePage
}

And we see that GraphiQL returns the results for all site pages:

GraphQL in GatsbyJS

2. Preparing the Drupal website

OK, the Gatsby site is ready, so it’s time to pull Drupal website data. On our Drupal site, we install and enable the JSON API module, which will instantly prepare our API endpoints. As of Drupal 8.7, JSON:API will be included into Drupal core, so there will be no need to install it.

The JSON API Extras module will give us a UI for exact settings. The permissions for JSON:API need to be enabled for anonymous user on our Drupal website.

3. Pulling data from Drupal to Gatsby

For connecting both Gatsby and Drupal together, there is a Gatsby source plugin for Drupal. Let’s install it in our Gatsby site’s root directory.

   npm install --save gatsby-source-drupal

It’s time to tell Gatsby from where to pull data from. In its config.js file, we need to add one more plugin as a code snippet. We include the Drupal source plugin, our Drupal website URL, and JSON:API as apiBase in it. 

{
  resolve: `gatsby-source-drupal`,
  options: {
    baseUrl: `http://*our-drupal-website*`,
   apiBase: 'jsonapi',
  },
},

And we run this magic command again:

   gatsby develop

We will now see in the terminal that Gatsby is “starting to pull data from Drupal.” When we are informed of the successful compilation, we can come back to GraphiQL and see it has many more options for autocomplete. They now include Drupal data.

GraphQL querying Drupal data for GatsbyJS


We query “allNodeArticle” and specify it to show the node title. We see that Gatsby responds with the article titles from our Drupal site. Gatsby has successfully fetched data from Drupal!

GraphQL querying Drupal article titles for GatsbyJS


We can expand and shape our queries to display absolutely anything we like. And we can build whatever Gatsby pages with Drupal data in the src/pages folder by inserting our GraphQL queries into the page files. Finally, the “Gatsby build” command will publish our site.

Assistance with your Drupal and Gatsby setup

This has been just a Drupal-Gatsby sketch, but Gatsby’s settings and opportunities are endless. You can always rely on our Drupal team in any tasks related to your Drupal and Gatsby setup. We will help you in the configuration or create the entire setup from scratch. 

Enjoy high website speed with the latest JavaScript technologies and Drupal!
 

Mar 21 2019
Mar 21
  • Shriganesh
  • 21/03/2019

B2B and B2C DO NOT EXIST anymore. It is time businesses realise this…..

As a business, when you label an individual as your consumer, there is a very common disconnect which classifies you as a B2C brand. However, the distinction between B2C and B2B is no longer a thing in the market. These days, companies climb the success ladder or fail, based on their ability to build and maintain a long lasting personal relationship with individuals.

Energised by tech innovations, individuals today have very high expectations about what makes a great customer experience and fail to have patience for businesses that do not deliver. This has depicted the interdependence between two major business groups in the industry: B2B & B2C. The growing trends have democratised the marketplace and bridged the digital divide, giving rise to the B2All (Business to All) strategy. As a result, everyone is equal in this new way of selling, whether your target audience are businesses, or an individual customer.

How does Drupal 8 fit in?

Helping organizations to keep pace with these growing demands are the content management systems, which play a key role in presenting businesses in front of audiences, connect with leads, convert these leads into customers, and keep customers coming back.

With robust and flexible infrastructure, innovative design and some great out of the box features, Drupal CMS is one of the top web solutions considered by businesses around the world to stay abreast with the surge in demand for personalization, interactivity and scalable tools. However, it turns out that a lot of marketers are quite unfamiliar with Drupal's potential.

As a modular CMS, Drupal 8 creates tonnes of opportunities for digital marketers to integrate with marketing platforms and configure the website to act as a central node for the entire digital marketing ecosystem.

This makes things a lot easier for marketers, allowing them to manage everything from the admin interface of Drupal CMS.

Serve Every Platform

The digital economy has exploded in the past decade, and everyone connects to you with a device of their choice. As a business, you cannot channel your efforts to be picky about your online platform, and whom it will serve. One study found that on an average, more than 55% of the users won't recommend a business with a poorly designed mobile site.

With its customisable features and the ability to create responsive websites or web applications, Drupal 8 is the CMS that can adapt your business to any modern device without any hassles.

Seamless Experience

Remember the last time you saw a restaurant ad on a website, and you looked it up on your mobile device? Only to find that the site would not load because it was only readable on a 25 inch PC. Odds are that you never went back to that restaurant and you found somewhere else to go. DON'T let your business be that restaurant! Your possible customers should never pay the penalty for switching devices. Drupal 8's out of the box features lets you create impeccable user experiences on various devices, while handling all your information on the website.

Easy-to-use back-end

With a lot of information to handle, marketers often get stuck trying to handle the functionalities of the online platform, every time they have a new requirement for implementation. Sometimes they are required to remove or change some of the features/content from the back-end and their dependency on the technical team is always a big hurdle to cross.

However, with Drupal 8, things are different! Drupal CMS has a powerful back-end which can be managed without any coding skills. This gives marketers the option to handle content authoring with ease and customise accordingly.

Marketing Automation

At the end of the day, marketing strategies are all about raking in revenue by implementing these methods into your business models. And 78% of marketers believe that marketing automation systems dynamically contribute towards improving the revenue of a business.

While automation works towards driving the right crowd to your website, once the prospects arrive, these automation systems turn themselves off and it is your CMS that has to do the further talking! It plays a huge role in identifying the visitor to your website, and feeding the required data to the automated system so that further action can be taken based on their behavior.

Drupal CMS being the most scalable and flexible CMS for enterprises, has some of the best modules to integrating marketing automation tool into Drupal. Some of the best modules of Drupal 8 are Marketo, Hubspot,Pardot, and Salesforce.

Room for Infinite Growth

Also known as an "open marketing platform", Drupal CMS is a robust CMS that creates room to plan ahead for eventual growth of your marketing strategies. Built from the ground up to integrate with an endless number of marketing tools, Drupal enables you to seamlessly integrate digital marketing platforms to interoperate content and create a hassle-free experience.

Convenient Modules

Each of your marketing strategies centered around platforms such as email marketing, customer relationship management, marketing automation etc have dedicated modules that need simple configurations to set up and start working their magic with your website. These modules are an essential part of the content management system and add the extra functionality, making your online presence powerful and unique.

Over the years, Drupal CMS has evolved to become flexible, accommodating and an essential part of a marketing ecosystem. With unique capabilities like high degree of customization, scalability, better adoption, integration and more, Drupal is the most preferred choice for businesses. Add to that the rise of marketing strategies focused around the B2All business models, this content management system acts as a single platform to rule them all. Flexible design, terrific scalability, improbable features right out of the box and great security, means your depiction in the ever competent market is as unique as your brand.

Mar 20 2019
Mar 20

Between a quarter and about a third of the content on the World Wide Web repeats itself. According to Google's head of search spam, Matt Cutts, around 25-30% of web content is duplicate. Your website is also likely to have duplicate content, even if it follows web content writing rules. In this post, we will touch upon the reasons and risks of duplication, as well as review useful modules that fix duplicate content in Drupal.

What is duplicate content?

Duplicate content is defined as identical or similar one found at different web addresses. These URLs can be within the same domain or across different ones.

Common reasons for duplicate content

Reasons for duplicate content in Drupal are pretty much the same as in other CMSs. They vary from unintentional to malicious, and from purely technical to human-created. Among the most common ones are:

  • scraped content (copied without permission)
  • syndicated content (shared by agreement)
  • HTTP and HTTPS versions of pages
  • WWW and non-WWW versions of pages
  • printer-friendly versions of pages
  • different user session IDs generating different URLs
  • almost identical product descriptions in e-commerce stores (for example, Drupal Commerce)
  • identical pieces of site-wide content (for example, in the footer)

What are the risks of duplicate content?

Duplicate content may result in losing your Google rankings. Google can’t show all duplicate results but only one from the “cluster” of duplicates. 

In addition, Google rewards uniqueness as added value. Sites with no unique content will find it harder to get good rankings.

SEO experts always take care to keep their websites from being penalized algorithmically by Google for low-quality content, including copied content. That’s why they try to keep their sites unique.

Google admits there may be strict penalties in cases when the behavior of a website with many duplicates is found to be manipulative. 

Modules that deal with duplicate content in Drupal

Getting rid of duplicates completely is neither possible nor necessary. However, there are contributed modules to deal with duplicate content  in Drupal that will make your website much cleaner from copies.

The Taxonomy Unique module

By default, Drupal allows for creating taxonomy terms with the same names within the same vocabulary. As part of measures to avoid duplicate content in Drupal 7 and 8, the Taxonomy Unique module can prohibit that.

Whenever someone tries to create a term that already exists, Drupal shows an error message saying the term name already exists. The feature can be individually enabled for each vocabulary. The error message is also customizable.

Taxonomy Unique module to fix duplicate content in Drupal


The Unique Content Title module

Thanks to the Unique Content Title module, you can require unique titles for each node of a content type. You will need to check the “Unique title” option in the “Submission form settings” of a content type. The module is only available for Drupal 7. 

The Suggest Similar Titles module

Here is another module to avoid duplication on node titles. This Drupal 7 module is at the pre-release stage for Drupal 8. 

During node creation, the Suggest Similar Titles module compares the new node titles to existing ones, and informs you if they match. The module settings allow to you:

  • decide on which content types to use the feature
  • add keywords to ignore
  • specify the allowed percentage of text matching
  • ask to check node permissions
  • limit the number of titles to show in suggestions

The Copy Prevention module

The Copy Prevention module helps you protect your texts and images from being copied on the Internet. Among the ways to do it are:

  • disabling text selection
  • disabling copy to clipboard
  • disabling right-click context menu on all content or on images
  • placing transparent image above your images
  • hiding your images from indexing 
Copy Prevention module to fix duplicate content in Drupal

The Intelligent Content Tools module

Here is an interesting module to fix duplicate content in Drupal, although it is in the development version. 

The Intelligent Content Tools module consists of three submodules. It offers auto tagging, text summarization, and duplicate content identification for your website. 

The module tells you when some duplicates have been found. Its work is based on Natural Language Processing.

Intelligent Content Tools module to fix duplicate content in Drupal


The Redirect module

The Redirect is a complex module that offers a user interface to redirect your URLs to new paths. It inherits the capabilities of the Global Redirect and the Path Redirect modules. 

Since 301 redirects and canonical URLs are among the ways to fix duplicates, the module is helpful in this sphere. It lets you:

  • manually create redirects
  • automatically redirect to canonical URLs (taking care of trailing slashes, language prefixes, and so on)
  • automatically create redirects in case of URL alias change
Redirect module to fix duplicate content in Drupal Redirect module to fix duplicate content in Drupal


The Redirect module for Drupal 8 comes with two submodules: Redirect 404 and Redirect Domain. They help you, respectively:

  • track and fix 404 errors
  • create cross-domain redirects

A bunch of other modules are recommended to use in cooperation with the Redirect:

  • Multi-path autocomplete as help with entering paths
  • Pathologic for transforming relative links in content to absolute URLs
  • Match Redirect for redirecting according to path patterns with wildcards
  • Pathauto for automatic generation of path redirects, which we will now look at more closely

The PathAuto module

The purpose of the PathAuto module is generating human-readable and SEO-friendly URLs according to chosen patterns. By default, URL aliases in Drupal look like this: /node/123. The Pathauto module can automatically change them to something like /category/my-node-title. 

The module will play an important part in website clean-up from duplicates. The Pathauto module quietly and reliably redirects URLs to the new paths based on the pattern, with no confusion for search engines or broken links for users.

Let’s fix duplicate content on your Drupal website

Each of the above modules will add a helpful touch to fixing duplicate content in Drupal. If you need help using them, or doing a comprehensive website check and clean-up with a variety of tools, feel free to contact our Drupal team. Stay unique — and both search engines and users appreciate that!

Mar 06 2019
Mar 06

There is never too much discussion of Drupal and JavaScript frameworks. We have taken a glimpse at Drupal 8 and Vue.js combination and know that Vue.js is a candidate for Drupal core. Today is the time to review Nightwatch.js — an automated testing framework that is already part of Drupal 8. We will see how Nightwatch.js in Drupal 8 provides for automated JavaScript testing.

A look at Nightwatch.js and its benefits

Nightwatch.js is an automated testing and continuous integration framework, meant to streamline and simplify these processes. It is an integrated end-to-end (E2E) browser testing solution. Nightwatch is also suitable for Node.js unit tests.

Nightwatch.js is written on Node.js — a cross-platform JavaScript runtime environment. To execute commands and assertions on DOM elements, Nightwatch relies on the W3C WebDriver API (formerly known as Selenium WebDriver). For identifying elements, it uses JavaScript language (Node.js) and CSS or XPath selectors.

Nightwatch js based on Node and W3C WebDriverAPI

Currently, Nightwatch.js has 148,900+ weekly NPM downloads thanks to numerous benefits:

  • ease of use due to clear syntax and detailed documentation

  • ability to perform custom commands and assertions

  • command-line test runner Nightwatch Runner included

  • its own NightCloud.io cloud testing platform

  • compatibility with other testing platforms (SauceLabs, BrowserStack etc.)

  • real-time tests possible in the browser

  • parallel test execution possible

  • screenshots and videos of tests

  • automatic management of Selenium or WebDriver services

  • support for Page Object Model that ensures better organization of elements

  • ability to integrate with CI systems (Jenkins, Hudson, Teamcity etc.) thanks to JUnit XML

Nightwatch.js in Drupal 8

Previously, JavaScript functionality on Drupal sites had often been tested via PHPUnit. That often required front-end developers to study the ins and outs of PHP programming language and PHPUnit testing framework. Generally, it was cumbersome and error-prone to test JavaScript with PHP.

Things changed when the Drupal community decided to officially use Nightwatch.js for browser testing. Inspired by the JavaScript Modernization Initiative, in 2018, Nightwatch was included into the Drupal 8.6 core.

Nightwatch-js is part of Drupal 8-6 core.jpg

Nightwatch.js makes it possible to test JavaScript with JavaScript. Developers can write custom tests for browser interactions directly in JS, and execute them in different browsers.

The vast community of JavaScript developers now have their own browser testing tool in the Drupal core. In addition, Nightwatch.js overcomes some PHPUnit limitations.

Nightwatch.js in Drupal 8 offers a built-in Chromedriver. It can work on a standalone basis and requires no Selenium or Java installation. However, it is possible to use other browsers via Selenium — Firefox, Internet Explorer, Safari, and more.

To work with Nightwatch.js, we will need three basic dependencies: Node.js, Yarn, and Chrome. Thanks to detailed documentation, it is easy to create and run tests for Drupal websites, modules, and themes. Helpful links include:

and more!

Get assistance with Nightwatch.js

Our development team follows the latest JavaScript trends. They implement them in Drupal projects and give speeches on them at conferences. One of our Drupal developers even took part in fixing the JS coding standards for Nightwatch.js tests in Drupal 8.6 core.

So you can trust our Drupal team if you need any assistance with Nightwatch.js in Drupal 8. We can install and configure the framework, create and run Nightwatch.js tests according to your requirements, help you integrate Nightwatch with your CI systems (Jenkins, Hudson, Teamcity), and so on.

Rely on us for any other small or big tasks that involve Drupal and JS frameworks!

Feb 28 2019
Feb 28

“Oh snap”, said the project manager. “The client has this whole range of rich articles they probably are expecting to still work after the migration!”

The project was a relaunch of a Drupal / Commerce 1 site, redone for Drupal 8 and Commerce 2. A couple of weeks before the relaunch, and literally days before the client was allowed in to see the staging site, we found out we had forgotten a whole range of rich articles where the client had carefully crafted landing pages, campaign pages and “inspiration” pages (this is a interior type of store). The pages were panel nodes, and it had a handful of different panel panes (all custom).

In the new site we had made Layout builder available to make such pages.

We had 2 options:

  • Redo all of them manually with copy paste.
  • Migrate panel nodes into layout builder enabled nodes.

“Is that even possible?”, said the project manager.

Well, we just have to try, won’t we?

Creating the destination node type

First off, I went ahead and created a new node type called “inspiration page”. And then I enabled layout builder for individual entities for this node type.

Now I was able to create “inspiration page” landing pages. Great!

Creating the migration

Next, I went ahead and wrote a migration plugin for the panel nodes. It ended up looking like this:

id: mymodule_inspiration
label: mymodule inspiration
migration_group: mymodule_migrate
migration_tags:
  - mymodule
source:
  # This is the source plugin, that we will create.
  plugin: mymodule_inspiration
  track_changes: TRUE
  # This is the key in the database array.
  key: d7
  # This means something to the d7_node plugin, that we inherit from.
  node_type: panel
  # This is used to create a path (not covered in this article).
  constants:
    slash: '/'
process:
  type:
    plugin: default_value
    # This is the destination node type
    default_value: inspiration_page
  # Copy over some values
  title: title
  changed: changed
  created: created
  # This is the important part!
  layout_builder__layout: layout
  path:
    plugin: concat
    source:
      - constants/slash
      - path
destination:
  plugin: entity:node
  # This is the destination node type
  default_bundle: inspiration_page
dependencies:
  enforced:
    module:
      - mymodule_migrate

As mentioned in the annotated configuration, we need a custom source plugin for this. So, let’s take a look at how we make that:

Creating the migration plugin

If you have a module called “mymodule”, you create a folder structure like so, inside it (just like other plugins):

src/Plugin/migrate/source

And let’s go ahead and create the “Inspiration” plugin, a file called Inspiration.php:

<?php

namespace Drupal\mymodule_migrate\Plugin\migrate\source;

use Drupal\Component\Uuid\UuidInterface;
use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\State\StateInterface;
use Drupal\layout_builder\Section;
use Drupal\layout_builder\SectionComponent;
use Drupal\migrate\Plugin\MigrationInterface;
use Drupal\migrate\Row;
use Drupal\node\Plugin\migrate\source\d7\Node;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Panel node source, based on panes inside a panel page.
 *
 * @MigrateSource(
 *   id = "mymodule_inspiration"
 * )
 */
class Inspiration extends Node {

  /**
   * Uuid generator.
   *
   * @var \Drupal\Component\Uuid\UuidInterface
   */
  protected $uuid;

  /**
   * Inspiration constructor.
   */
  public function __construct(
    array $configuration,
    $plugin_id,
    $plugin_definition,
    MigrationInterface $migration,
    StateInterface $state,
    EntityManagerInterface $entity_manager,
    ModuleHandlerInterface $module_handler,
    UuidInterface $uuid
  ) {
    parent::__construct($configuration, $plugin_id, $plugin_definition,
      $migration, $state, $entity_manager, $module_handler);
    $this->uuid = $uuid;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $migration,
      $container->get('state'),
      $container->get('entity.manager'),
      $container->get('module_handler'),
      $container->get('uuid')
    );
  }

}

Ok, so this is the setup for the plugin. For this specific migration, there were some weird conditions for which of the panel nodes were actually inspiration pages. If I copy-pasted it here, you would think I was insane, but for now I can just mention that we were overriding the public function query. You may or may not need to do the same.

So, after getting the query right, we are going to do some work inside of the prepareRow function:

  /**
   * {@inheritdoc}
   */
  public function prepareRow(Row $row) {
    $result = parent::prepareRow($row);
    if (!$result) {
      return $result;
    }
    // Get all the panes for this nid.
    $did = $this->select('panels_node', 'pn')
      ->fields('pn', ['did'])
      ->condition('pn.nid', $row->getSourceProperty('nid'))
      ->execute()
      ->fetchField();
    // Find all the panel panes.
    $panes = $this->getPanelPanes($did);
    $sections = [];
    $section = new Section('layout_onecol');
    $sections[] = $section;
    foreach ($panes as $delta => $pane) {
      if (!$components = $this->getComponents($pane)) {
        // You must decide what you want to do when a panel pane can not be
        // converted.
        continue;
      }
      // Here we used to have some code dealing with changing section if this
      // and that. You may or may not need this.
      foreach ($components as $component) {
        $section->appendComponent($component);
      }
    }
    $row->setSourceProperty('layout', $sections);
    // Don't forget to migrate the "path" part. This is left out for this
    // article.
    return $result;
  }

Now you may notice there are some helper methods there. They look something like this:

  /**
   * Helper.
   */
  protected function getPanelPanes($did) {
    $q = $this->select('panels_pane', 'pp');
    $q->fields('pp');
    $q->condition('pp.did', $did);
    $q->orderBy('pp.position');
    return $q->execute();
  }

  /**
   * Helper to get components back, based on pane configuration.
   */
  protected function getComponents($pane) {
    $configuration = @unserialize($pane["configuration"]);
    if (empty($configuration)) {
      return FALSE;
    }
    $region = 'content';
    // Here would be the different conversions between panel panes and blocks.
    // This would be very varying based on the panes, but here is one simple
    // example:
    switch ($pane['type']) {
      case 'custom':
        // This is the block plugin id.
        $plugin_id = 'my_custom_content_block';
        $component = new SectionComponent($this->uuid->generate(), $region, [
          'id' => $plugin_id,
          // This is the title of the block.
          'title' => $configuration['title'],
          // The following are configuration options for this block.
          'image' => '',
          'text' => [
            // These values come from the configuration of the panel pane.
            'value' => $configuration["body"],
            'format' => 'full_html',
          ],
          'url' => $configuration["url"],
        ]);
        return [$component];

      default:
        return FALSE;
    }
  }

So there you have it! Since we now have amazing tools in Drupal 8 (namely Layout builder and Migrate) there is not task that deserves the question “Is that even possible?”.

To finish off, let's have an animated gif called "inspiration". And I hope this will give some inspiration to other people migrating landing pages into layout builder.

Feb 20 2019
Feb 20

Hi everyone,

we are excited to share a few program updates on Drupal Mountain Camp as the team behind the scenes is working hard preparing the last bits before the conference in just 2 weeks.

We are extremely grateful for all the quality session submissions people have submitted. The full schedule over 4 days includes 9 workshops, 2 keynotes, 4 featured sessions and 42 regular sessions in 3 different tracks. 

Besides the already promoted keynotes, we would like to highlight the following featured sessions:

Thanks to the collaboration with the Drupal Recording Initiative by Kevin Thull, we'll be able to provide video recordings for you after the conference.

Contribution is a key topic for Drupal Mountain Camp. Make sure to sign-up for one of the 7 different initiatives or propose your own using our contribution sign-up sheet.

We also updated our social events page so you can start preparing for some fun in the snowy Swiss mountains.

So far, more than 95 tickets have been sold. Regular tickets are available for CHF 120 until 1st of March, afterwards we sell tickets for CHF 140.

We are looking forward seeing you at Drupal Mountain Camp in Davos, 7-10 of March 2019.

Josef / dasjo on behalf of the Drupal Mountain Camp team.

Feb 14 2019
Feb 14

The trend of using JavaScript frameworks with Drupal keeps gaining popularity. It is used for creating rich, fast, and interactive web interfaces. One of the hot use areas is decoupled (headless Drupal 8) architecture, with the front-end part completely entrusted to a JS framework. There are many JS frameworks and libraries that pair well with Drupal 8 — React, Angular, Gatsby, Ember, Elm etc. Today, we will review one of them, Vue.js. Let’s take a closer look at Drupal 8 and Vue.js combination.

Vue.js: candidate for Drupal core

Adopting JavaScript framework in Drupal core would improve the admin UX, according to Drupal creator Dries Buytaert, who spoke at DrupalCon Vienna in 2017. Core committers and developers with the relevant experience agreed they needed to think and choose the optimal JavaScript framework.

The main proposal was to choose React. However, another strong contender soon emerged as a candidate for Drupal core — Vue.js. Let’s take a closer look at this rising star.

Why Vue.js? The framework and its benefits

Vue.js is a progressive open-source JavaScript framework for building interfaces and single-page applications. It is often called a library, but the official version on the Vue.js website is a “framework”.

Vue.js was created by Google employee Evan You when he was working with Angular. Evan says he wanted to take the things he liked about Angular and create “something really lightweight.”

Since its creation in 2014, Vue.js has reached a 127,500+ star rating on GitHub and recently overpassed its counterpart React (122,000+ stars). The top 3 trending JS tools is completed with Angular (59,300+ stars). As we see, Vue demonstrates the most rapid growth.

 vue react and angular star rating

The number of NPM downloads for Vue is 796,700+ each week. The growing popularity of Vue.js is explained by its benefits:

  • lightweight and easy to learn for new developers
  • clear and detailed documentation
  • adoption within the PHP community (for example, Laravel framework has an out-of-box Vue support)
  • active and helpful Vue.js community
  • used by giants (Xiaomi, Netflix, Alibaba, Adobe, GitLab, parts of Facebook, WizzAir, EuroNews, Grammarly, Laracasts, Behance, Codeship, Reuters etc.)
  • high performance due to two-way data binding and virtual DOM (like in Angular and React)
  • even large aps are built with self-contained and often reusable Vue components

Drupal 8 and Vue.js combination

With the Drupal 8 and Vue.js combination, developers can enrich Drupal interfaces with reactive features with no jQuery, use ready Vue components, or build single-page applications that consume Drupal 8 data.

On the Drupal part, we need to prepare the content for REST export. For example, we can create a View, click “provide a REST export” in the View settings, and add a path. It works when the web services set of modules is enabled in Drupal core.

To set up a Vue.js application, we need to make sure we have Node and NPM installed, and then use the Vue CLI 3 tool. It does a lot of work for developers and that speeds up the processes. It automatically plugs in the selected libraries, configures the Webpack to optimize all files, provides app updates live every time you save changes, and so on. Finally, it offers a graphic user interface — Vue Project Manager.

The commands for starting a Vue.js application are:

  • npm install -g @vue/cli
  • vue init webpack projectname
  • cd projectname
  • npm install
  • npm run dev
vuejs application

Then Vue router and Vue resource need to be added to the project. The main.js file is then configured to use Vue routers and Vue resources, the app.js is modified to work with the router, and app components and routers are set up.

Drupal 8 modules for working with Vue.js

There is an ecosystem of contributed Drupal modules for the Drupal 8 and Vue.js combination:

  • Vue.js builds helps connect Drupal and Vue.js. It can be used in a Twig template, attach programmatically, or add as a dependency to a YAML file.
  • Vue Views adds a new format to Drupal views so the results are displayed in Vue.js, which makes it possible to use Vue features like asynchronous loading etc.
  • Webpack Vuejs provides Vue configuration for the Webpack bundler Drupal module, which helps developers bundle Drupal libraries by Webpack
  • Decoupled blocks: Vue.js is the Vue.js version of the Decoupled Blocks module, which adds Vue.js blocks to websites via modules or themes.

Let’s combine Drupal 8 and Vue.js for you

We have taken a glimpse at the possibilities of a Drupal 8 and Vue.js combination. Our Drupal team is always on top of the latest JavaScript technologies. Contact us and we will help you choose the optimal one for you, and bring all your ideas to life.

Feb 07 2019
Feb 07
  • Shefali
  • 07-02-2019

“It takes time to save time”, said Astrophysicist Joseph Hooton Taylor Jr. and how right he is! The good folks from Acquia have thoughtfully curated a package that can save businesses from tons of time spent in marketing and editorial efforts. Acquia Lightning is an open-source Drupal 8 distribution that was designed to enhance, fasten and simplify the process of creating powerful (and responsive!) digital experiences.

Drupal 8 gives developers and content authors full flexibility to shape their websites and applications that meets their vision. It is packed with thousands of powerful features that requires to be able to support a wide variety of content-rich applications. Acquia Lightning is a lean, ready-to-use starter-kit that encompasses just the tools needed to develop and manage your enterprise-grade digital experiences. Lightning is built specifically to empower your marketing and editorial teams to build better, easier and faster. Here are 5 reasons why choosing Acquia Lightning could be a great decision for your organization’s editorial and content teams.

1. Speed of Lightning

This aggressively competitive era calls for quick formulas that can produce epic digital experiences. Acquia Lightning enables organizations to develop new applications in Drupal 8 faster. According to Chris Stone, former Chief Product Officer at Acquia, “Lightning removes 20 percent of the time required for every new Drupal 8 development project.” With Acquia Lightning, Drupal developers can now empower business and non-technology savvy users with powerful tools to enable them build on their websites faster.

2. Drag This and Drop That

Lightning enables you to easily design and customize new website layouts yourself without a Drupal developer’s assistance. Content editors won’t need to use any code to design a layout. With the help of Panels, Lightning layouts lets you easily drag and drop content blocks (elements wherever you like! This powerful feature lets you create compelling User Experiences as you can visually design the layout of your website the way you want to. With just a few clicks (and zero code), you can – add rich text, media, content references, slideshows, Google Maps and just about everything you need to create an interactive and engaging website. Not just this, your Drupal developers can also create custom components which you can then use from your library.

3. Effortless Workflows

Having everything together, without rummaging through the place, makes life simpler and easier – don’t you think? Editorial workflows call for tons of significant activities like creating, editing, reviewing and publishing content. Acquia Lightning’s easy all-in-one-place workflow management system, lets you easily tackle the chaos. It provides you with an approval dashboard meant just for your editorial workflow. Here you can easily check the status of the content you are reviewing - change, delete or publish it at your convenience. The version tracker allows you to check for changes and updates between different revisions, giving you the freedom to revise, compare and revert your content. You can review them, pick the most appropriate version, schedule and publish the content, all in the dashboard.

4. Manage your Media

You cannot have an engaging website without leveraging the power of Media. Lightning offers an easy and effective approach to add, embed and manage your media like Videos, Audio files, Images, Social Media Widgets, Documents, Maps and DAM (Digital Asset Management). All added Media will be stored in a Media library, giving you easy and quick access to all your media. Using the CKEditor (rich text editor), you can attach or embed any media into any content type. Cropping and resizing your images is easy as pie.

With the power of Drupal 8, Acquia Lightning can give your business that edge over your competitors. Learn how and why..

tweet this With Acquia Lightning, designing interactive digital experiences is simply effortless.

5. Sneak Peek – Experience Preview

You’ve got to think like your customer if you want to sell better. And to provide great digital experiences, you should be able to see exactly what your customer is seeing. Acquia Lightning for Drupal 8 (upgrade now!) enables you to conduct a comprehensive preview at every stage so you view what you publish before it goes live.

drupal-lightning

Acquia Lightning Features

Right out-of-the-box, Acquia Lightning is a slick, lightweight, all-you-need Drupal 8 solution that will meet all your web initiatives’ demands. It is one of the best ways to jump-start your Drupal projects and can accelerate your time to market. Headless Lightning lets you create beautiful and effective decoupled web applications with ease. Security is almost synonymous with Drupal CMS and Acquia lightning conforms to security best practices. Lightning undergoes regular security audits and releases frequent patches to keep your website’s health in check. Acquia Lightning makes development on Drupal simpler, faster and more powerful.

Jan 31 2019
Jan 31
  • Shriganesh Hegde
  • 31-01-2019

“The real question is, when will we draft an artificial intelligence bill of rights? What will that consist of? And who will get to decide that?” —Gray Scott, American Philosopher

Keeping in mind the spectacular potential that Artificial Intelligence has, and given the way we interact with technology, we might have to consider this "bill of rights' anytime soon now! Over the years, AI has been instrumental in personalizing user experience and this is one of the prime reasons why brands are investing in Big Data as a key element of their customer offerings.

However, organizations have failed to utilize the enormous potential of Artificial Intelligence by not embracing the technology completely in the field of website development. In the fast growing digital age, web presence plays an important role for businesses to stay ahead of the curve. Artificial Intelligence with its amazing capabilities will give the companies the boost that they need to craft a seamless digital experience for their customers.

Drupal & Artificial Intelligence

In the recent years, modern mainstream website development has mainly focused on building a customer-facing front-end presence on the Internet and the integration of the front-end with enterprise back-office operations. And Drupal is a leading open-source platform for creating such enterprise websites.

As a reliable enterprise-grade CMS, Drupal is well known for its ability to organize and present content in the most effective way to create a seamless omnichannel digital experience. On integrating Artificial Intelligence algorithms to your Drupal-based website, you can turn it into an interactive ecosystem capable of handling your potential customers, interacting with them, studying their behavior and identifying patterns in them to aid targeted marketing and subsequent revenue growth.

However, the question is, what is the 3rd-party AI solutions and libraries that Drupal developers have in their toolkit? Which of these provide the most value? We have picked some of the top modules that can assist your team in creating a AI driven digital experience.

Cloudworks for Multilingual Drupal Module

Cloudworks for Multilingual Drupal empowers you to deliver successful global campaigns and localized assets with speed and scale. With the ability to onboard any language provider in a matter of few minutes, Cloudworks can help you deliver globally consistent, high quality content to multiple countries in various languages. The smart AI allows workflow automation and powerful project manahrgement capabilities to pick the content you want to localize while Cloudworks does the rest.

It also has a CAT tool that has a smart internal translator which increases the productivity by leveraging artificial intelligence and machine learning.

Azure Cognitive Services API

With an ability to seamlessly integrate with intelligent features and use machine learning, artificial intelligence and natural learning process to detect speech, facial expressions and vision recognition, and other sentiments, this module can do wonders. The four different module that it offers are:

1. Face API Module

Integrates with Microsoft Face API, a cloud based service that provides some of the most advanced face algorithms. With two main function of face detection with attributes and face recognition, it can

  • Detect human faces and compare similar ones
  • Organize images into groups based on similarities
  • Identify people in previously tagged images

With an ability to seamlessly integrate with intelligent features and use machine learning, artificial intelligence and natural learning process to detect speech, facial expressions and vision recognition, and other sentiments, this module can do wonders. The four different module that it offers are:

2. Emotion Recognition API Module

Although in beta stage, this module is capable of taking image as an input and return the confidence across a set of emotions for each face in the image, as well as bounding box for the face, from the Face API.

3. Computer Vision API Module

This module is capable of extracting rich information from images to categorize and process visual data and machine assisted moderation of images to help curate your business services.

4. Azure Text Analytics API Module

  • Sentiment analysis
  • Key phrase extraction
  • Language detection

Acquia Lift Connector

A module that can help you merge content and customer data into a single tool, thus allowing marketers to target audiences in real time, enabling them to scale their web personalization efforts to drive better conversions. The Acquia Lift Connector module provides the integration with Acquial Lift Service and an enhanced user experience for better personalization, testing and direct targeting. This will help you in delivering cohesive, personalized experiences across multiple channels and cross devices.

Some of the features of Acquia Lift Connector include:

  • Drag-and-drop UI for content targeting Unified customer profile Content distribution Behavioral targeting and A/B testing
  • Unified customer profile
  • Content distribution
  • Behavioral targeting and A/B testing

Integrating AI into your Drupal Website - Why is it good for your Company?

Let your website be HUMAN!

The current level of AI, by no means allows developers to teach your Drupal website to think or behave like humans. However, this smart technology is catching up soon and is getting better at automating content management and customer service tasks. This in turn allows you to free up your editorial and customer support teams.

Better user experience

One thing that stands out in an AI incorporated Drupal-based business website is its ultimate user experience. With effortless content management and publishing, round-the-clock approach to customer support, better targeting and connecting with the customer touchpoint, Artificial intelligence empowers your company to craft personalized experiences for your customers.

Better targeting

It is a known fact that 80% of the digital data generated by businesses around the world is unstructured, confusing and thus underutilized. However, with AI and Machine Learning anchoring the tools that help your company analyze these data, mapping the digital customer journey is a cakewalk. With better understanding of the customer behavior based on historical data, you can come up with relevant products or service recommendations targeted to each individual customer and his needs.

Higher ecommerce conversion rates

Implementing AI in ecommerce will potentially grow the global ecommerce market profitability by 59% in a span of 15 years. Features such as advanced lead generation, predictive analytics, targeted customer service, and upselling opportunities will help you to create a AI driven ecommerce ecosystem with better conversions and revenue.

The Future?

The future of websites looks interesting and is predicted to be automatically tailored to individual user behavior by analyzing their searches, reads, time spent on each page etc. Every user will be assigned a unique ID (uid) and their behavior like the clicks, searches and exits on the website will be linked to this particular uid. Just like how the analytics tools do. Using AI and Machine learning, each uid and the data connected will be analyzed to tailor the website according to each individual user. While such personalizations have already been implemented by certain big websites, integrating it with Drupal will take it up by a notch.

Artificial Intelligence and Machine Learning have a lot to offer and on integration with Drupal CMS will open up new possibilities of feature rich modules with futuristic features. A digital ecosystem with features such as "voice controlling", "website personalization based on user behavior" and more can be seen as the dawn of customer interaction 2.0. Leveraging the power of AI and Drupal CMS will allow businesses to gain a competitive advantage and achieve sustainable futuristic growth.

Jan 17 2019
Jan 17

Beauty saves the world, and Drupal helps it in this mission. There are awesome beauty product websites built with Drupal that are not only beautiful but feature-rich and powerful. This is more proof of Drupal’s versatility for websites in any sphere — e-commerce, real estate, law firms, or any other. Our Drupal development team knows this firsthand because they build cool websites for our customers. So let’s now plunge into the world of beauty and enjoy examples of beauty product website designs on Drupal.

Great examples of beauty product websites on Drupal

  • Lush website built with Drupal

Drupal powers the website of the world-famous British handmade cosmetics manufacturer — Lush. The front page engages visitors with full-length video slideshows and offers them a place to watch the “Lush Player” stories.

If users choose to continue into the website, they are invited to their country’s specific version, since lush.com is a multisite with multiple languages that provides tailored experiences to users. The country is autodetected, but users can select another as well.

Lush.com is an e-commerce website with an extensive catalog of products that features user reviews, star ratings, product videos, related content, and more. Users can also shop by price or by popular scents. There also are a product guide, charity pot, wishlist, shopping cart, and integration with famous payment gateways.

The site also promotes offline sales, so it offers the ability to search for brick-and-mortar shops and shows their detailed contacts, including a map.

Lush website built with Drupal
  • Benefit Cosmetics website built with Drupal

The next in our examples of great beauty website designs on Drupal is the site of  Benefit Cosmetics LLC  — a manufacturer of cosmetics from San-Francisco. They sell their beauty products in more than 30 countries. Their multisite Drupal website, using multiple languages, is an awesome assistant to that. By the way, these features are among the famous strengths of Drupal.

The content is presented in a very user-friendly, cheery, and encouraging way — for example, the search bar asks “What are you looking for, gorgeous?”

The Benefit Cosmetics website showcases beauty products and services in many ways — in handy menu categories, special offers, as well as interesting content types like “Dilemma solvers” that offer solutions to customers’ “beauty dilemmas.”

When users get interested in a product, they are shown the available offline shops. They can also make an online reservation for beauty services in their area.

Benefit Cosmetics website built with Drupal
  • Miss Sporty website built with Drupal

Among great examples of beauty product websites built with Drupal, we should also mention the Miss Sporty. It is presented in three languages: English, Czech, and Polish.

The site features a handy catalog of beauty products with reviews and star ratings. When cosmetics are presented in a variety of colors, users can instantly “try” these colors out on the main product image. The search feature helps products be quickly found.

The Miss Sporty website has strong community features. In addition to the handy social sharing options, it features a whole big section called “Community,” which displays photos shared by users via Instagram.

Miss Sporty website built with Drupal
  • Natura website built with Drupal

You could also enjoy the design of the Natura website — a Peruvian beauty product resource. It immediately attracts users with a colorful front-page slider, and invites them to view the beauty content.

Users can browse the products from the catalog and, if they are interested, contact a beauty consultant. The consultant search feature is very precise. Consultants can be found by province, by area, and even by street, or you can use the map. Users also have the option to become consultants themselves, and are directed to the website’s chat for the discussion.

The website features the digital beauty magazine, as well as beauty product videos. It has a newsletter subscription and a search feature.

Natura website built with Drupal
  • Clinique website built with Drupal

Another pearl among the examples of beauty product websites built with Drupal is the site for Clinique Laboratories, LLC. It offers advanced e-commerce features and lets users shop by product category, by price, by most wanted items, by ready holiday looks, and more.

When users have added products to cart, they can check out via Paypal or via a regular checkout. It is possible to sign in via Facebook for shopping.

In addition to online shopping, users can send e-gift cards to anyone they wish to right from the website. They specify the recipient, the sum, the date of delivery, and other details.

There is also a promotional feature that gives points to users, which mean various awards and benefits. Points are calculated for shopping, reviews, social sharing, and so on.

Clinique website built with Drupal
  • MAC Cosmetics website built with Drupal

MAC Cosmetics is another famous beauty product manufacturer that trusts Drupal. Their website lets users view products in various categories and by them online.

Each product description is accompanied with reviews, star ratings, as well as related products that go with the current one. Various colors are applied instantly to the product image.

For those who want to shop offline, there is a search feature for stores. Users also can check the in-store availability of a particular product in the catalog by entering their zip code and distance within which they want to shop.

It is also possible to send gift cards online by specifying the recipient, the gift value, the delivery date, and more.

MAC Cosmetics website built with Drupal
  • “Be Beautiful” website built with Drupal

A whole world of beauty advice can be found on the Be Beautiful website, which is also powered by Drupal. This multilingual website has as many as 10 languages.

Users are presented with useful articles, news, and videos from beauty experts. All the beauty topics are conveniently categorized. The search bar offers additional help in finding the right content. The site also features an Instagram feed for more interactivity.

The website’s content includes links to beauty products with the directions to find them on Amazon or other online retailers.

Be Beautiful website built with Drupal

Love these examples of beauty website designs? Get one for you!

Our collection of examples of beauty product websites built with Drupal is not complete. First of all, it is missing your future website — but we can fix this! ;)

Contact us, and let’s add some beauty to this world together. Your beauty products and our developers’ talent could unite in an amazing Drupal site!

Jan 10 2019
Jan 10

Preview

Introduction

Drupal Mountain Camp brings together experts and newcomers in web development to share their knowledge in creating interactive websites using Drupal and related web technologies. We are committed to unite a diverse crowd from different disciplines such as developers, designers, project managers as well as agency and community leaders.

Drupal Mountain Camp Group Picture

Keynotes

The future of Drupal communities

For the first keynote, Drupal community leaders such as Nick Veenhof and Imre Gmelig Meijling will discuss about successful models to create sustainable open source communities and how we can improve collaboration in the future to ensure even more success for the open web. This keynote panel talk will be moderated by Rachel Lawson.

Drupal Admin UI & JavaScript Modernisation initiative

In the second keynote Matthew Grill, one of the Drupal 8 JavaScript subsystem maintainers, will present about the importance and significance of the Admin UI & JavaScript Modernisation initiative and Drupal’s JavaScript future.

Drupal Mountain Camp Attendee

Sessions

In sessions, we will share the latest and greatest in Drupal web development as well learn from real world implementation case studies. Workshops will enable you to grow your web development skills in a hands-on setting. Sprints will teach you how contributing to Drupal can teach you a lot while improving the system for everyone.

Swiss Splash Awards

As a highlight, the Swiss Splash Awards will determine the best Swiss Drupal web projects selected by an independent jury in 9 different categories. These projects will also participate in the global Splash Awards at DrupalCon Europe 2019.

Splash Awards 2019

Location

Drupal Mountain Camp takes place at Davos Congress. As tested by various other prominent conferences and by ourselves in 2017, this venue ensures providing a great space for meeting each other. We are glad to be able to offer conference attendees high quality equipment and flawless internet access all in an inspiring setting. Davos is located high up in the Swiss alps, reachable from Zurich airport within a beautiful 2 hours train ride up the mountains.

The camp

The Drupal Mountain Camp is all about creating a unique experience, so prepare for some social fun activities. We’ll make sure you can test the slopes by ski and snowboard or join us for the evening activities available to any skill level such as sledding or ice skating.

Drupal Mountain Camp Davos

Tickets

Drupal Mountain Camp is committed to be a non-profit event with early bird tickets available for just CHF 80,- covering the 3 day conference including food for attendees. This wouldn't be possible without the generous support of our sponsors. Packages are still available, the following are already confirmed: Gold Sponsors: MD Systems, platform.sh, Amazee Labs. Silver: soul.media, Gridonic, Hostpoint AG, Wondrous, Happy Coding, Previon+. Hosting partner: amazee.io.

Key dates

  • Early bird tickets for CHF 80,- are available until Monday January 14th, 2019

  • Call for sessions and workshops is open until January 21st, 2019

  • Selected program is announced on January 28th, 2019

  • Splash Award submissions is open until February 4th, 2019

  • Regular tickets for CHF 120,- end on February 28th, 2019 after that late bird tickets cost CHF 140,-

  • Drupal Mountain Camp takes place in Davos Switzerland from March 7-10th, 2019

Join us in Davos!

Visit https://drupalmountaincamp.ch or check our promotion slides to find out more about the conference, secure your ticket and join us to create a unique Drupal Mountain Camp 2019 - Open Source on top of the World in Davos, Switzerland March 7-10th, 2019.

Drupal Mountain Camp is brought to you by Drupal Events, the Swiss Drupal Association formed striving to promote and cultivate the Drupal in Switzerland.

Jan 07 2019
Jan 07
  • Shefali Shetty
  • Date: 07-01-2019

Did you know, on an average an adult makes about 35000 decisions each day?! And suddenly, life feels more difficult. Most are mundane but taking the right step towards an important decision can turn you into a winner. Since the release of Drupal 8 in November 2015, Drupal website owners have been in a dilemma. To upgrade or not to upgrade. To migrate to Drupal 8 now or simply wait till Drupal 9 releases and completely skip 8. And to make things more knotty, there are PHP, Symfony and other version upgrades to keep track of too.

At this point, you might wonder why choose or stick with Drupal at all when everything seems so complex and tedious. Why shouldn’t I just switch to a rather simpler CMS where I can sit back and just let my content work its magic, you ask? Here’s the thing – Drupal is an open-source content management framework that is best known for the security, robustness and flexibility it offers. Without constant and consistent updates and patches, Drupal wouldn’t have been the relevant, dependable and trusted CMS that it is today. This continuous innovation approach has helped Drupal in offering new Drupal features, advanced functionalities and security patches with every minor release.

Drupal’s Plan of Action

Few months ago, during his keynote, Dries announced (and wrote) about Drupal’s structured release schedule. Although this clarity gave much relief to many, it also sent some of our Drupal 7 clients in a frenzy.

Taken from https://dri.es/drupal-7-8-and-9

Optimistically, Drupal 9 releases in June 2020. The initial plan, however, was to release it in December 2020 but that would give website owners only 12 months to migrate to Drupal 9. Hence it was decided that it would be best to have an 18-month window at the least or a smooth migration. Drupal 8 support will end in November 2021.

Drupal 7 was expected to reach end-of-life by November 2020 initially but since several websites might still be running on Drupal 7 even by 2020, the community has decided to extend support to Drupal 7 till November 2021. Which means that both - Drupal 7 and Drupal 8, will reach end-of-life at the same time!

The Dependence

I believe PHP and Symfony are the heart and soul of Drupal. Every move Drupal makes depends on the release cycles of these two significant elements. Symfony releases a new minor version every six months and a major version every two years. In order to be compatible with Symfony’s releases, Drupal has timed its minor releases one month after every Symfony release. Because Drupal 8 depends on Symfony 3, which has an end-of-life in Nov 2021, Drupal 8 HAS TO end-of-life by Nov 2021.

Security Support for PHP version 5.x and 7.0 have ended in December 2018. While Drupal websites can still continue to run on older PHP versions, upgrading the PHP version will not only receive active community support but also immensely improve site performance. Dries recommends updating the website’s PHP version to at least PHP 7.1 and ideally to PHP 7.2 (supported by Drupal 8.5). The latest PHP version 7.3 will be supported by Drupal 8.7 which is scheduled to be released by May 2019.

So, why migrate my Drupal 7 websites to Drupal 8 now instead of simply migrating to Drupal 9?

I concur. This is an extremely valid query which makes total sense. Yes, you can completely skip Drupal 8 and migrate to Drupal 9 before Drupal 7’s end-of-life (Nov 2021). If you plan to hang on to Drupal 7 till then, you have to make sure you update your PHP versions for better support and optimized performance. You could also hire a vendor who will provide you with a Long Term Support (LTS) for your Drupal 7 website beyond its end-of-life.

Although, there are a few advantages of migrating to Drupal 8 now.

Mark your calendars!

Like everything else, Drupal too has evolved over the years and now has an extremely structured roadmap that can help tackle most of its obvious obstacles. With every release, Drupal is getting better while embracing its past and deprecating those outdated/unsecure elements. Drupal isn’t competing with anyone but itself – trying to outdo its past with every minor/major upgrade release. To upgrade to Drupal 8 now from Drupal 7 or to wait till Drupal 9 is out, is really a choice site owners need to make depending on their business goals, website complexities, budget and time constraints. Specbee is a Drupal development company and our Drupal experts can help you make a better decision.

 

Huge shout out to @malavya88 for his very insightful inputs!

Dec 26 2018
Dec 26

There is often a need to import and export content to and from your Drupal 8 website. The ability to do that lets you use the power of content in Drupal 8 more fully. One of the most popular content sources is a CSV file. Drupal 8 has a number of useful contributed modules for getting data from it, and many cases also need customization. Our Drupal team provides smooth CSV import for even for the most complex cases. Today we would like to share a simple way to import data from a CSV file to Drupal 8 with you.

For a start, what is CSV?

CSV, which stands for comma-separated values, is a popular format for data storage. A CSV file stores data as a table where values are separated by commas. CSV is compatible with any spreadsheet programs such as Google Spreadsheets, Microsoft Excel, and so on. Each value uses a cell in the table.

CSV files are incredibly lightweight, easy to organize, and awesome for manipulating large amounts of data. Huge tables with data can be quickly edited by website administrators and sent to Drupal when ready.

Some ways to import data from a CSV file to Drupal 8

Among the popular solutions for CSV import to Drupal 8 websites, there are contributed modules like Migrate Source CSV, Migrate Plus, and Migrate Tools. The CSV import process with these modules includes the creation of the migration configuration and the use of the “migrate-import” Drush command.

And there also is one very simple solution called the Content Import contributed module, which we would like to show in action.

An example of CSV import via the Content Import module

The Content Import module lets website administrators import data from a CSV file to a specific Drupal 8 content type. A content type has fields, and a table has columns, and this is where they should match. Remember, we can always save a CSV file as a table.

Each CSV file column should list the values of a particular field of the content type. The first cell of each column should match the field’s machine name.

Some special supported Drupal fields include:

  • Entity Reference for Taxonomy, Users, and Content
  • Geolocation, Timestamp, Boolean, and Date

There also are two columns announced as mandatory.

  • The first column should be called “title.”
  • There is also a “langcode” column that does not match a specific field of the content type. The default is “en” for English, and you can use other language codes.

In our example below, we are not using the langcode column, and still everything works. So it looks like using only one of these two is mandatory.

If your data has images, there will be a little more hassle — you will need an additional IMCE module for uploading images into the “public” folder.

Of course, our example will include images! ;) So let’s create a sample Drupal 8 content type and import CSV data into it. We have a tasty content type on our Drupal 8 website — “Menu item.” It has the following fields.

Drupal content type fields

In the settings of the image field, we specify the directory to which we will upload images like this: [content_type_name/images].

 Specifying the image upload directory in the field settings

The “Available for delivery” field is of “Boolean” type, and we put the options as “Yes” or “No.”

The Boolean type field in Drupal

Then we download the IMCE module that will help us put images in this directory. We go to site_name/imce, open the “public” directory, create the folder with our content type name, and within it, create the folder “images” so that the path is public/content_type_name/images. Then we upload our images there. A bulk upload works well for this.

 Uploding images with IMCE

Then let’s prepare our CSV file. We can create it as a Spreadsheet first, so it’s more handy to work with the cells. We put the machine names of the fields into the first row. Then we fill in the values for each field. The values for the images are their file names.

Data as a spreadsheet

When the spreadsheet is ready, we download the file as CSV.

Data as CSV

It’s time to import the CSV data to the Drupal 8 website. With the Content Import module installed and enabled, we go to Configuration — Content Authoring — Content Import and select the content type to import the CSV data to.

When we do so, we also see sample CSV file available for download. We are not interested in the sample right now, so let’s choose our CSV file from the computer and click “Import.”

Content import from CSV to Drupal 8

In a few seconds, we see the content is imported. All items are listed in Content, and each of them has all the field values imported from our CSV.

 Drupal content listedDrupal content item with fields

Our menu deserves to be created as a view on our Drupal 8 website, so it represents all our items in an attractive way.

Drupal content in a view

Your perfect CSV import

We have shown you how to import data from a CSV file to Drupal 8. Please keep in mind that this simple example will not fit on just any website. Especially if you have plenty of customizations, or need complex mapping between the CSV columns and Drupal fields, you will need custom migration solutions.

Contact our Drupal experts — and we will advise you the optimal CSV import scenario. And, of course, they will implement everything for you. Get the best from the efficient data formats and smart data exchange!

Dec 07 2018
Dec 07

Online stores opens unlimited opportunities with no geographical boundaries. Behind their lines of code are successful purchases, great profits, and happy customers. So online stores should be reliable, efficient, and attractive in everything — from product catalog to e-commerce checkout. An awesome choice for building an online store is Drupal 8, particularly with one of its greatest treasures — Drupal Commerce 2.x. Let’s explore Drupal Commerce 2.x features for your Drupal 8 online store in more detail.

Why choose Drupal 8 for e-commerce websites?

Before we move on to describing the features of Drupal Commerce 2.x, we will start with mentioning at least a couple of Drupal 8 characteristics that form a great support for your Drupal 8 e-commerce website.

  • Content + e-commerce = more conversions. Drupal is a powerful content management system, which means you are getting more than just an online store. You will have a website full of diverse content types to support your store with good content. The approach of content-driven commerce is a sure way to get engaged customers, better SEO, and increased conversions.
  • Mobile responsiveness. Since mobile sales are headed to overtake desktop sales soon, it is awesome that Drupal 8 is mobile responsive out-of-box. Drupal 8 has everything you need to make any theme responsive, so its elements magically adjust to mobile device screens. Let your mobile users shop with pleasure!
  • ​​​​​​Better performance. Loading speed is especially important for online stores. Users want to browse your website, compare various products, and place orders without delay. Drupal 8 has powerful caching techniques for faster loading. One of them is the innovative BigPipe, which lets you serve static website elements to users instantly and load dynamic ones next.
  • ​​​​​​Third-party integration. An e-commerce website usually relies on third-party services for payments, marketing analytics, online customer support, CRMs, and so on. Drupal 8 has built-in web services that make integrations incredibly smooth.
  • Multi-language. Customers are more willing to buy when they see information in their native language. Drupal 8 has awesome multi-language support. It is very easy to add languages to websites and translate exactly what you need. Interface translations are ready for a hundred languages.

Drupal Commerce 2.x for your Drupal 8 online store

Drupal Commerce is a solution for creating e-commerce sites from scratch or adding e-commerce features of any complexity to existing sites. It is free and open-source, like any other contributed Drupal module. However, it works like a full-fledged e-commerce framework that covers all the needs of an online store: product catalog, cart, checkout, shipping, orders, and so on.

Drupal Commerce 2 is the version for Drupal 8, and it has recently issued a new update — Drupal Commerce 2.10, which shows great advancements in product administration, third-party integration, and more.

There is also an ocean of add-on free contributed modules the extend Drupal Commerce 2.x features endlessly. However, Drupal Commerce 2.x out-of-box comes with an impressive pack of submodules that show its comprehensive capabilities:

Drupal Commerce 2-x - submodules

So let’s see what your online store can enjoy!

Why use Drupal Commerce 2.x for your online store

  • Single or multi-stores available

One of the awesome Drupal Commerce 2.x features is that, instead of having one store, you can use multiple stores in Drupal 8. Each of them can have its own product types, currencies, taxes, contact information, cart, checkout, and everything else.

  • Smart support for multiple currencies 

Drupal 8 lets you add multiple currencies out of the list, as well as custom ones by providing the currency code.

Here, the true multilingual soul of Drupal 8 shows perfectly! Drupal Commerce 2.x takes into account the names of each currency in each language, their formatting, and other important details.

This extensive information is provided by the commerceguys/intl library. It works in accordance with the internationally recognized CLDR standard.

Drupal Commerce - adding custom currency
  • Awesome product handling 

Your Drupal 8 online store can have whatever products you wish — from simple ones to products with attributes. Each unique combination of attributes is a product variation in Drupal Commerce 2.x, and it has its own SKU, or machine-readable ID. This is very convenient for managing your orders and stocks.

Thanks to the Fancy Attributes module now included out-of-box, creative selectors like color swatch are available for product attributes. Multilingual products are also easy to set up.

  • 70+ payment gateways & flexible payments features

Customers are more likely to buy when they have their preferred payment gateways. One of the great Drupal Commerce 2.x features is the support for 70+ payment gateways! Authorize.Net, Braintree, PayPal, Square, Stripe, Vantiv are just the beginning of the list. There are add-on contributed modules for any provider you wish. Custom modules can be created for all others.

Drupal Commerce 2-x - adding payment gateway

The flexibility in payment types is also awesome:

  1. On-site payment gateways let customers enter credit card details directly on your site, and tokenization can be applied for data protection.
  2. Off-site (redirect) gateways redirect customers to the third-party payment service and back to your site upon successfully completing the operation.
  3. Off-site (iframe) gateways do not redirect customers to the third-party service and handle the checkout process in an embedded frame.
  4. There is also a built-in “Manual” gateway option for such payment methods as Cash on Delivery, Card on Delivery, Cheque, Bank Transfer, and so on. They are marked as pending payments and are moved to complete by your store admin.
  5. It is also possible to set up an IPN (Instant Payment Notification) service and be instantly notified about events related to PayPal transactions.

Your Drupal 8 online store will have handy interfaces that let you authorize, void, or refund the payments.

  • Flexible promotions and discounts

Engage your customers with promotions! Your Drupal 8 online store will offer you a number of built-in offer types for fixed or percentage amounts. This can work in accordance with conditions that you set.

Drupal Commerce 2-x - adding promition
  • Smart handling for taxes

There is no need to bother about specifying the product price with taxes. Drupal 8 can automatically calculate the taxes for you. It has predefined taxes for countries, as well as letting every merchant choose special taxes. The system knows taxing specifics, for example, the difference in VAT calculation for physical and digital products in the EU.

  • Multiple order types

Your Drupal 8 onlines store can have not one but multiple orders types with special workflows for each. This allows for creating fine-tuned experiences for various product types. For example, selling tickets will need a different workflow than selling T-shirts. Order receipt emails are also very customizable.

  • Flexible checkout options

Checkouts are incredibly handy. They offer progress indication bars, the ability for users to checkout as a returning customer and reuse the previously entered information, the option for you to allow or not guest checkout, and so on.

Moreover, there can be different checkout flows for different product types. They may vary in the number of steps to take, which customer information to require, and so on.

Drupal Commerce 2-x - checkout flows
  • Great shipping options

With Drupal Commerce 2.x. you can configure the shipping methods, define which products are shippable, and manage the shipments.

The basic features are handled by an add-on module called Commerce Shipping. It lets you set up such shipping methods as flat rate-per-order and flat rate-per-item.

For more specific and advanced shipping integrations, there is a plugin-based system. There are existing plugins for famous shippers, and developers can create any other for you — whatever your favorite shipper is. It is also possible to provide shipping rates based on conditions.

Create an online store with Commerce 2.x on Drupal 8

This has been just a brief overview of Drupal Commerce 2.x features. This box of treasures can offer much more in good hands. In addition, customization miracles can fine-tune your e-commerce website in every detail to your liking.

Entrust your Drupal 8 e-commerce website to our Drupal development team. Our guys have a lot of experience with e-commerce and know how to use the benefits of Drupal Commerce 2.x in the best ways for you.

Nov 16 2018
Nov 16

In February 2017 the Drupal Mountain Camp in Davos was held for the first time. More than 120 experts from 17 countries came to the Swiss mountains and experienced a unique weekend. The event was a huge success with many highlights.

Keynotes

Both Laura Gaetano's (Travis Foundation) keynote about the open source community in general and Preston So's (Acquia) keynote about the future of Drupal with API first were well attended, very interesting and led to lively discussions.

Drupal Mountain Camp Davos

Discussions in the venue

Laura Gaetano on stage

Preston So on stage

Sessions

There were sessions by more than 30 different speakers with topics from the Drupal world from different areas like sitebuilding, frontend & design, business & showcases, coding & development. Drupal Mountain Camp featured presentations on Drupal 8 in general, Commerce, Translation Management, GraphQL, Media, Paragraphs and much more.

Session at the Mountain Camp

Sessions in Davos

Sprints

Sprints were organised in several rooms, where both beginners and experts met to code and develop ideas together.

Developers sprinting

Sprinting at the Mountain Camp in Davos

Social Events

After the varied, interesting and intensive daily program, various events took place in the evening at which the "campers" could experience a great time. They joined the skating rink, sled down the mountain, attended a game of the local ice hockey team, ate a cheese fondue and/or enjoyed the slopes on skis or snowboard.

Sledging in Davos

Fondue in Davos

Also, the venue and its food were amazing.

All in all it was a great weekend! Thanks to all our great sponsors that made this possible!

Read more reports from camp participants:

Alle Bilder von Josef Dabernig @dasjo

Pages

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