Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Aug 04 2020
Aug 04

What’s the secret sauce to a successful website? Well, there are more than 10 factors I can think of right off the bat. Like an attractive design, page-load speed, quality of content, marketing efforts and more.  One significant yet often overlooked element for a great user experience that drives a successful website is an intuitive navigation. Drupal 8 has a great set of modules to improve the navigation structure of your website. We have curated a list of top Drupal 8 (and 9) modules that enable easy and intuitive website navigation. Read on to find out.

drupal modules


A good website navigation lets site visitors know exactly where to get their information from as soon as they land on your website. Conversely, bad website navigation damages your rate of conversions and increases bounce rates. A website with attractive design does not always mean that navigating through it is intuitive. I have seen websites with ordinary designs with great navigation structures. And I keep going back to them because I know I can get what I need without scampering all over the place. According to CrazyEgg, the thumb rule is that it shouldn’t take more than 3 clicks for your user to find what they need.

Elements for an Intuitive Website Navigation

Your website visitors should be able to navigate from one page to another smoothly without getting distracted or confused. Distracted or confused users will leave your website before you establish a connection with them. Having a great design is good but if your visitors are not able to find your contact form, there is no point, is there? So, what makes up for a good navigation structure? 

1.    Main Navigation Bars 

This is the most crucial navigation element of a website. It is a horizontal (sometimes vertical) bar that lists links to point visitors around your website. A good main navigation bar needs to be simple, short, consistent, helpful, and catchy.

main-navigation-bar


2.    Breadcrumbs

These helpful navigational aids help site visitors to identify where they exactly are. They are a trail of links that starts from the parent page and ends with the current page, usually separated with a “>” or a “/” symbol.

3.    Multi-column Menus (and Submenus)

A more complex website with tons of branches and sub-branches should use multi-column menus. Again, these menus should be simple and easy to navigate through. 

4.    Sitemaps

Often considered as just an SEO booster, Sitemaps are extremely helpful as a navigation aid as well. A typical Sitemap should display a hierarchical structure of the entire website.

sitemap


5.    CTA (Call To Action) Buttons

This is where all the action actually happens! Proper placement of these CTA buttons play an important role amongst others like color, font style, size, text, etc.

CTA Button


6.    Sidebars

This is a good place to add page-specific links to enhance the UX for your site visitors. Good sidebars should be simple, not too long, contain a CTA and be ordered appropriately.

sidebar menu


7.    Hyperlinks

Here we are talking more about internal linking than external. A hyperlink should be intuitive and lead the visitor to the page they expect (no surprises please). Although having internal links are good for SEO, don’t over-do it or you may risk losing their focus on the page.  

8.    Footers

Footers are easy to ignore and are often used only to display only copyright details. The myth that people don’t scroll till the end of a page is now busted. A typical footer should contain links that you are not able to display in the header or sidebar sections. It could also have your contact details as well as mailing list sign up mini forms.

footer

Top Drupal 8 (and 9) Modules for Intuitive Navigation

1.    Menu Block 

The Drupal 8 Menu Block module’s design follows Drupal’s standard tree navigation style but  provides more enhanced features than the ones offered in the core Menu modules. You can easily configure blocks of menu links and specify the level you want to start and end with. There is no limit to the number of levels you can display. You can choose to keep your child menu elements expanded. Some basic features of this module are ported to Drupal 8 core. The Menu block module also supports Drupal 9.

Menu Block


2.    Easy Breadcrumb

The Drupal 8 Easy Breadcrumb module works by extracting location segments from the current URL of the webpage. It offers tons of configurable options and can replace the existing Drupal breadcrumbs module. You can choose to completely hide the home page link or any other specified links. The Easy breadcrumb module supports Drupal 9 too!

Easy Breadcrumb


3.    Superfish

The Drupal 8 Superfish module is ideal when you have large and multiple layered, multi-column drop down menus. The module integrates with the jQuery Superfish plugin which is a highly versatile menu plugin that works for touchscreens, screen-readers and other keyboard interactions. It can be configured to add time delays on mouse-out, animations, hide and reveal menu links, adds arrows if submenus are detected, and much more. It is also Drupal 9 compatible.

Superfish module


4.    Sitemap

The Drupal 8 Sitemap module is simple, clean and easy to use. It can display the entire site structure in a clean hierarchical structure. You can also choose to generate and display RSS feeds for blogs and categories. The Sitemap module supports Drupal 9.

sitemap-module


5.    Menu Item Role Access

This module allows you to add access control to your menus. You can enable and disable menu items depending on user roles. The Drupal 8 Menu Item Role Access module allows you to enter the role field (optional) to the menu items. It also supports Drupal 9.

Access control module          Image source: Menu Item Role Access


6.    Cheeseburger Menu

If you thought hamburger menus were great, wait till you check out the Cheeseburger menu. The Drupal 8 Cheeseburger menu module comes with some great features and is not just limited to mobile view, it also works with desktop views and varied screen sizes as well. It gives you the flexibility to choose the menu items that you want to appear in the Cheeseburger menu and also edit the menu titles. If you’re using Drupal Commerce, you can choose to display the shopping cart or the store phone number in the menu. Taxonomies could be chosen as the structure for your Cheeseburger menu. The Cheeseburger menu module supports Drupal 9 too!

Cheeseburger Menu 
Image source : Cheeseburger menu

7.    Simplify Menu

The Drupal 8 Simplify Menu module lets you render menus in your Twig template. It allows customization of the menu markup that enables accessibility and compatible with standards. You can render your menu tree as an array in the twig template and have full control over on the menu’s array. This module does not support Drupal 9 yet.

Simplify-Menu Module

8.    Total Control Admin Dashboard

The Drupal 8 Total Control Admin Dashboard is a useful administrative navigation tool. It acts as a centralized hub for all administration tools. The dashboard displays admin panes and quick links to users, taxonomies, menus, content types, site stats, views panel panes and more. The views panel panes can be further customized. This module also works with Drupal 9.

Total Control Admin Dashboard

9.    Footermap: a footer site map

As the name suggests, the Drupal 8 Footermap module provides a sitemap for your Drupal website that can be placed in the footer block. It allows dynamic generation of a sitemap and can be easily configured to support translation and caching. You can choose the menus to display, set the menu level limit (child menus), enable menu heading, edit the CSS to match your site layout and much more. The Footermap module also works with Drupal 9.

Footer sitemap


 

Jul 28 2020
Jul 28

By default, Drupal implements a "node/nid" URL path system. When you create your first node in Drupal 8, the default URL path looks like ”/node/1”, and the next one will look like “/node/2” and so on. This not user-friendly nor is it very SEO-friendly. Search engines always prefer URLs that are more descriptive of the page content, clean and legible. Using the Drupal 8 Pathauto module, you can obtain a path that looks like this -> "/category/my-node-title". The Pathauto module also eliminates the need to manually create path aliases for every type of content on a Drupal site. When you have an existing site with plenty of content, you can leverage the Bulk generate option in the Drupal Pathauto module to automatically generate aliases for them in a jiffy. Let’s learn how to configure and implement this time-saving Drupal module. The Pathauto module is also Drupal 9 compatible.

Drupal-Pathauto-Module

What does the Drupal Pathauto Module do?

The Drupal 8 Pathauto module enables automatic generation of URL/path aliases for different kinds of content like nodes, taxonomy terms and users. All of this without the need for the user to manually enter the path alias. So instead of a URL that looks like /node/1, the Pathauto module lets you create URL aliases like /category/my-node-title. Thus, giving your users a much better idea on what to expect from the web page. Without Drupal Pathauto, creating a URL structure is time-consuming and error-prone. The site admins can specify a pattern to follow for different types of content. The Bulk generate option lets you automatically generate or regenerate aliases for pre-existing content as well. 

Getting Started with the Drupal 8 Pathauto module

Installing

Installing the Drupal 8 Pathauto module is like installing any other contributed module. I’m using the Composer to install since it automatically installs all of the necessary dependencies and Drush commands to enable the module. However, if you choose to install manually, make sure you also have the latest versions of the CTools and Token modules installed. 
Open the terminal, within the project enter the following command.

      $ composer require drupal/pathauto

      $ drush en pathauto

Configuration

1.    Create Drupal URL alias Patterns 

  • Configure Pathauto patterns as required in Configuration -> URL aliases -> Patterns.
  • Click "Add Pathauto pattern"
     Drupal Pathauto Configuration
  • Select the Pattern Type. For example, if you are generating URL aliases for nodes, you should choose “Content” as the Pattern type.
  • Add the path pattern to the textbox, and you can browse available tokens for the pattern. When you click on the link, available options will show up. For example, I used the [node:title] pattern. So, the URL will be http://yourdomain.com/node-title
  • Select content type or you can also leave it empty. This pattern will be used for all content from the Content Type dropdown.
  • Enter the Label field which helps in identification of the pattern.
  • Hit the Save button. 
     Pathauto-Module   
  • Back on the Patterns tab, you will now see that the Pathauto pattern has now been created
     Patterns tab in pathauto module

2.   Generate Bulk URL aliases

  • Go to the Bulk generate tab for the entity type you want to bulk generate the aliases and click Update.
     Bulk URL Aliases Generation in Pathauto Module
     
  • Now you have created the URL aliases automatically.
     Pathauto
  • Now Click on one of the Alias just generated and the page will display the Content with the user-friendly URL as shown below

     Url Generated

3.   Deleting Aliases

You can also batch delete aliases from the “Delete aliases” tab. You can either choose the entity types you want to delete, or you can bulk delete all aliases. You can choose to delete the aliases that you automatically generated. This will not affect aliases created manually. 

Pathauto-Module
Jul 24 2020
Jul 24

Today, User experience (UX) is not just about how a user feels when interacting with your website. In this world of rapidly growing interfaces and APIs, content plays a supreme role in offering your users with exceptional UX. To keep up the pace, you need to adopt hot-selling, fast-moving front-end technologies like Angular JS, React JS, etc. that can deliver your content in an application-like speed.

Headless Drupal (or decoupled Drupal) is one such approach that is gaining much popularity because of its innovative ability to deliver outstanding digital experiences. Bigwigs like Weather.com, The Tonight Show, Great Wolf Resorts, Warner Music Group and many more, have taken the headless Drupal route offering their customers with interactive and unique front-end designs and fast-loading websites. With Drupal 8's commitment to the API-first architecture, content can be used and displayed anywhere.

What is Headless CMS?

headless drupal


To go headless or not is a rather tricky decision to make in this digital world. So what’s the whole buzz about going Headless? Simply put, in a headless CMS architecture, the front-end (consumers of content) of the CMS is detached from the back-end (provider of content). This not only enables your content to be delivered anywhere, it allows you to leverage latest Front-end technologies that offer unmatched user experiences.
 

What is Headless / Decoupled Drupal ?

Conventionally, Drupal websites are meant to multi-task. Which means, Drupal manages both - the back-end content management as well as the front-end rendering of content. There is no doubt that Drupal CMS on its own can deliver a rich user experience to the end user but when it comes down to instantaneous responses for a request, delivering content seamlessly in different interfaces, it does fall short. In a decoupled Drupal architecture, instead of the Drupal’s theme layer, a client-side framework like AngularJS, React or Backbone.JS is used. A user request does not have to be processed by the server all the time, which can drastically improve the speed and UX of your Drupal website.

Drupal 8 's API-first architecture took its first step by introducing REST API in core (Drupal 8.0). However, it came with its own set of challenges (setup and usage). Since then, many improvements have been made in providing better RESTful and non-RESTful webservices like JSON-API and GraphQL.

Technically speaking, a headless Drupal website sends out data in HTTP/JSON formats. A powerful front-end UI framework renders this data and delivers the web page.

Headless-Drupal

Categorizing Decoupled Drupal

In a traditional Drupal CMS architecture, the browser invokes a request that is processed by PHP logic which then renders the HTML and sends it back to the browser. Of course, the developer can embed Javascript for some client-side improvements but this can result in a situation where different client-side frameworks are being used for different modules. Thus making it an extremely complex system.

Progressive Decoupling

If you are looking to preserve your Drupal Theme layer and yet be able to provide immediate responses to the browser, the Progressive Decoupling approach is your best move. Here you can have your cake and eat it too! The initial application state is rendered by Drupal which can be then manipulated by client-side coding. Modules can be written in PHP or Javascript while you can avail the powerful performance benefits of Drupal.

This version of decoupled Drupal allows for contextualized interfaces, content workflow, site preview, and other features to remain usable and integrated with Drupal as a whole. While content editors and site assemblers feel at home with this decoupled Drupal version, it also allows front-end developers to pursue their own velocity while keeping site assemblers unblocked, by dedicating a portion of the page to a JavaScript framework.

In short, a progressively decoupled Drupal offers an approach that does a great job in striking the perfect balance between editorial needs like layout management and developer desires to use more JavaScript.

decoupling drupal
A graph illustrating the progressive decoupling spectrum for these examples – Source- Acquia
 

Fully Decoupled Architecture

And then there’s the Full decoupling – where Drupal’s presentation layer is completely replaced with a client-side framework. This version of the decoupled CMS allows an uninterrupted workflow as the client-side framework also acts as a server-side pre-renderer. Drupal CMS is purely used as a content repository that takes care of all the back-stage jazz. When you completely ignore Drupal’s theme functionality you are also letting go of some effective performance benefits that Drupal provides. Also a lot of rebuilding would need to be done to fully decouple the administrative interface and front-end of a Drupal website. Using Javascript on the server-side also complicates the infrastructure requirements.

While a fully decoupled Drupal architecture has gained more attention in recent years with the growth of JavaScript showing no signs of slowing down, it involves separation of concerns between your content structure and its presentation. In a nut shell, creating a fully decoupled Drupal system is like treating your web experience as a separate application that needs to be served content.

Which Decoupled Drupal Solution is Best for You?

Traditionally, Drupal CMS is meant to do both – content management and rendering the front-end for the whole website. A lot of pressure, don’t you think? Drupal experts believe that Drupal’s strengths lies in the power and flexibility of its back-end and that it needs to be service oriented first instead of HTML oriented. Decoupling Drupal means letting some other system manage the front-end while Drupal takes care of the back-end system. Why is it a good idea to decouple Drupal, you ask?

If you want to adopt cutting-edge and modern front-end technologies that Drupal cannot provide you will need a powerful front-end framework like React JS or Angular JS. With a headless Drupal approach, you can have all of this and still maintain your robust backend Drupal CMS.

  • With the Headless Drupal architecture, you can “Write once and publish everywhere”. This system allows content editors, marketers and business owners to create content once and deliver it to multiple interfaces seamlessly.
  • With a decoupled CMS, detaching the front-end from the back-end content management system will allow for more flexibility and efficiency of the Drupal content model. Just like how delegating work decreases your workload and increases productivity.
  • A layered architecture promotes a more secure system. Site admins can restrict access to different areas of the infrastructure. 
  • Headless Drupal allows front-end developers to have full control over the presentation, UI design and UX of the website. The combination of a great client-side framework and a seasoned front-end developer can get you a website with a rich, faster, application-like user-experience, and seamless interactivity.
  • Integrating with third party applications is easier and more efficient with a headless Drupal model.
  • Both the front-end and back-end developers can work independently which can lead to efficient and speedy delivery of a project.
  • If you want to redesign your website, you won’t have to re-implement your Drupal CMS. Likewise, revamping your back-end system can be accomplished without having to alter your front- end.

Is headless Drupal for everybody?

Although decoupling Drupal can help you achieve your goals of an uninterrupted and application-like user- experience, it might not be a good fit for everyone. Here’s why –

  • Websites like News sites or Blogs, that don’t really need much user interactivity, will not benefit from decoupling their Drupal website.
  • When you opt for a fully decoupled Drupal architecture for your website, you are letting go of some of the top (and free) functionalities that come with the Drupal theme layer like the block placements, layout and display management, content previews, UI localization, security features like cross-site scripting (XSS), etc. Some of them cannot be replicated by a client-side framework.
  • If budget is an issue you need to keep in mind about the price you will have to shell out for experienced front-end developers. Also the cost for rebuilding a missing (otherwise freely available) Drupal feature from scratch. 

Who uses Headless Drupal?

Many top enterprises have taken the headless Drupal approach and successfully so! Their websites are fast to load and offer interactive experiences to their users in all devices and interfaces. Some examples are –

  • The Tonight Show with Jimmy Fallon – uses Backbone.js and Node.js for the front-end
  • Weather[dot]com – uses Angular.js for the front-end
  • Great Wolf Resorts – uses CoffeeScript and Spine framework
  • EC Red Bull Salzburg – uses Angular.js for the front-end
  • Warner Music Group – uses Angular.js for the front-end

…And many more on this list here.

Jul 23 2020
Jul 23

Content authors and content editors always look out for a seamless, easy-to-use experience when it comes to page building. Drag-and-drop and WYSIWYG tools are something they expect when they want to create and design pages. Drupal Layout Builder offers this exact experience with its easy-to-use page building capability, in Drupal core. 

Drupal Layout Builder is unique and provides a powerful visual design tool to let content authors change the way content is presented. Introduced in Drupal core in its latest version, Layout Builder in Drupal 8 allows you to add/remove sections to display the content using different layouts, and customizing your pages based on the requirements. The Layout Builder Module in Drupal 8 also allows you to combine these sections and create a truly customized page. 

The Drupal 8 Layout Builder can be used in two different ways. It can be used to create a layout for each content type on the website, and also to create a layout for an individual piece of content.

Introducing the Drupal Layout Builder 

The Drupal 8 Layout Builder module allows you to customize the design of the entities such as content types, taxonomy, users etc. It provides an easy-to-use drag and drop option for site builders to place blocks, fields etc.

The layout builder module in Drupal 8 makes it easier to build your layouts by offering a preview of the changes made while building your layouts. Instead of having to save every small change made in the layout and then looking it up on the front-end, layout builder in Drupal 8 layout builder allows previews of the changes made for a seamless layout building experience. 

Installing and setting up the Drupal 8 Layout Builder module

In order to install/setup the Drupal 8 layout builder module, navigate to Extend and enable both Layout Builder and Layout Discovery module..

Installinf and setting up the layout builder

Note: Layout Builder was introduced as a stable module in Drupal 8.7 core. So, make sure you’re using the latest version. In older versions of Drupal, it was an experimental module.

1. Use Drupal Layout Builder to Customize Content-Type and Taxonomy

1. Once you have installed the module, navigate to Structure, Content types and click on “Manage display” for any content type , For now we will use the “article” content type.

layout builder module

2. Scroll to the bottom and click on Layout options and select “Use Layout Builder”, then click on Save.

Layout builder module in drupal 8

3. Once you’ve enabled Layout Builder on the view mode, you can see a “Manage layout” option instead of field formatters. You can use Layout Builder for any of the view modes present.
 

Manage Display

4. When you click on “Manage layout”, you’ll be redirected to article content type layout.

edit layout builder

2. Add Sections to the Layout

1. To add sections to the layout builder, remove the default section first. Click on the close icon (as depicted in the below screenshot). Further, you will be provided with an option to the right side of your screen to remove the default section. Click on “Remove”.

add sections to layout builder

2. Let us add a few sections to our layout by clicking on the “Add Section” option. Further, you will be provided with options to choose a layout of your choice for your section, on the right side of the screen. For now, let us select the “Two Column Section”.

edit layout

3. You will have an option to choose the width for your “Two Column Layout”. Let us select a “50%/50%” for now. Then click on “Add section”.

Two column layout

Once added, you should be able to see an “Add Block” link for each section region.

ad-block-layout-builder

3. Add Blocks to the Section Regions

After choosing your section for the layout, you can add blocks into your section. To add a block just click on “Add Block” and the “Choose a block” option will slide out from the right.

add blocks to section regions

1.Choosing a Block
 
Blocks can be chosen from the right by just clicking on them. You can even find blocks by filtering them out by their name using the “Filter by block name” text field. 
We will select “Authored on” content field for now.

choosing a block

When you click on the block you want to add, you’ll be able to adjust the field formatter. Once you’ve configured the formatter, click on “Add Block”.

configured-add-blocks

The “Authored On” content field will be placed on the left side of the block.

Authored-on-layout-buildr

After placing the “Authored On” field, you need to save your changes. Save all the changes you have made to your section by clicking on “Save Layout” option at the top of the Drupal 8 layout page

layout builder

Let us try adding some more fields into our layout to further customize our layout builder.

layout-builder

After saving this layout, if you visit an article content type page, you will be able to see a preview of the layout which you just built..

Layout-module

4.Override Default Layout

The layout which we just built will be applicable for all the articles. If you want to build a customized layout for a particular article in Drupal, we have to enable some options provided by Drupal for the same. You can do it by selecting “Allow each content item to have its layout customized.”

Override-layout

After enabling this option, if you go to an article, you should see a Layout tab button.

Layout builder

You can now modify the layout using the same interface. However, this will only change the layout on this specific piece of content.

Layout builder
Jul 21 2020
Jul 21

Views are the most significant part of a Drupal website. Almost every Drupal site uses one or more views to list their content. The Views module is a Drupal 8 core module that manages these lists of content. You might run into situations where you need to sort these views. Currently, there are very few options to sort view items. You can only choose between simple date sorting, alphabetical sorting, and few more. Also, the sorting will be content specific and depends on the value of each content. To overcome these issues, we can use the simple table drag option provided by the DraggableViews module in Drupal 8. It is easy to configure and manage for the site administrator or editors. In this article we will be configuring the DraggableViews module for a Drupal 8 website. 

Draggable-view-module

Installing the DraggableViews Module

Let’s get started by installing the module. You can download and install the Draggable views module from here or from the composer. Download and extract the file and then place inside your project directory. Alternatively, you can also use composer to download with this command – 

composer require drupal/draggableviews

Next, go to Extend and enable the module. You can also use drush to enable the DraggableViews module. Always ensure you have the latest version of Views installed before you start.

Configuring the DraggableViews module for drupal 8

Draggbleviews will provide drag and drop options for each row like how we drag and drop blocks or taxonomy terms. This is possible because of the tabledrag.js javascript that is used by these modules. Similarly, DraggableViews module uses the table formatted view display for using the core jquery feature from tabledrag.js which will allow you to drag and drop the HTML tables.

Steps to reproduce -
1.    Create a view
2.    Create a Draggable view display
3.    Add a menu link for easy navigation
4.    Setup the permissions

1.    Create a view: First, let us create a view for listing content of any content type as required for your website. Add the necessary settings needed for the view. Make sure you remove the existing sort criteria and add the Draggable view sort from the selection. Please refer to the attached screenshot. 

DraggableViews module for drupal 8

2.    Create a Draggable view display: Create a view or add page display to the existing view by selecting the table format. Also follow the below instructions -

Title: Title for the view. 
Format: Select the table format for the view display.
Fields: Under this section add the fields you need to show on the view page. At least three fields are required.
Content: Title: The fields which will be shown on the page. You can add any number of fields from the selected entity.
Draggableviews: Content: This is a mandatory field to make draggable views content to work. Click on the add button and search for Draggableviews (content) and add field.
Operational links : This is a mandatory field too to show the drag options for the user along with edit/delete.
Filter Criteria: Select the filters you want to include along with the selected content type.
Sort Criteria: Under this section remove the existing sort option and add the new sort by selecting the draggable views weight.

Path: Provide the valid path of your interest like /admin/content/sketches-order.
Pager: While configuring the pager, always display all items with no pager so that users can re-order all the items instead of each page item. See the attached screenshot for reference. 

Create a Draggable view display

3.    Add a menu link for easy navigation: Adding a menu link will provide the quick access for the Draggable view page. Please provide a valid path for views like “/admin/content/view-name” so that we can have a menu link under administration menus. To add a menu link to the navigation, edit the created view under Page Settings --> Menu. Select the menu tab and add the necessary settings here. See the attached screenshot for reference.

DraggableViews module for drupal 8

Setup the permissions: Draggable view module provides custom permissions for the user authentication to the draggable view. 

To update the permission please go to people --> permission. Next, search for draggable views. You will then see all permissions defined for roles. Select the trusted role and save the configuration. 

Draggable view display

Also, you will need to set the permission for the created view under Page settings ->   Access. Select the “Access Draggableviews” permission and save the view. 

DraggableViews module for drupal 8

And that's it! You will now have the page containing a drag and drop handle to reorder your content as in the image shown below.

DraggableViews module for drupal 8

Also, you can see the same order for all the created views of content type. Now reordering of your view items is much easier than before.

Jul 14 2020
Jul 14

A well-performing website just doesn’t cut it these days. To stand out of competition, businesses are looking for high performance websites with lightning speed load times. You could potentially lose a big chunk of customers with every additional second your website takes to load. Today let’s learn about optimizing the frontend performance of your website with the Advanced CSS/JS aggregation module for Drupal 8.

To make Drupal sites run faster, it is essential to load CSS/JS files as quickly as possible for a page. One problem with Drupal core aggregate is that it is not good at determining which resource (CSS/JS) files go together. So, when you have different pages that require different resource (CSS/JS) files, usually Drupal core does it in a way where there is lot of extra information that are unnecessary on certain pages. The Drupal AdvAgg module comes with a plethora of features to help websites render faster. And the module also supports Drupal 9!

What does the Advanced CSS/JS Aggregation module do?

The Drupal AdvAgg module does a lot of different things to help speed up delivery and loading of resource files on your website. Advanced Aggregation combines multiple CSS files and creates fewer CSS files so that sites render faster. It caches aggregated files more efficiently. It also provides more effective methods of compression. Thus helping in offering users with more engaging user experiences.

drupal-8-module

Getting started with the Advanced CSS/JS Aggregation module

Installing

Installing the AdvAgg module for Drupal 8 is like installing any other contributed modules. I’m using the Composer to install since it automatically installs all of the necessary dependencies. Open the terminal, within the project enter the following command - 

      $ composer require 'drupal/advagg:^4.1'

Next, enable the AdvAgg module

Install- Adv-agg-module

 

Configuration tab:

This tab provides several configuration options that are discussed below.

Global Options

Advagg- Configuration

 

  1. Enable/Disable the Advagg module temporarily by checking/unchecking the Enable advanced aggregation checkbox.
  2. Use this option if you want to allow DNS prefetching for external CSS/JS, which tries to settle domain names for links before a user clicks on them. Enabling this can have unwanted effects on site. Keep this unchecked unless needed.
  3. In the Cache settings, we have options like development, low, normal, high caching of resource (CSS/JS) files. High caching stores more data while normal stores less data compared to high. Development caching stores very less data. I'm going with normal here.

Compression options

Compression options-in-AddAvg

This provides Gzip compression and Brotli compression which are the methods used for compressing CS/JS assets.

CSS Options/JS Options

Css-options-JS-Options
  1. In order to avoid multiple CSS/JS files in one page, AdvAgg uses media queries to determine what files are needed on a page and combine them so that they load faster.
  2. Fix improperly set type – This option will fix the problem in syntax, when you are trying to reference CSS and JS files if there are any problem there
  3. If this option is checked, the external stylesheets on the same host are not converted into files.

CRON Options

CRON-Options
  1. Here you can set the minimum amount of time between advagg_cron() runs. The default value for this is 1 day.
  2. Use this option to Delete aggregates that were modified more than the chosen time. The default value for this is 1 month.

Obscure Options

This tab does not contain any configuration options. You can flush the module cache or entire cache in the Operation tab.

Bundler Tab :

This splits your aggregated resource files into multiple bundles of small resource files. With bundler active checked, you have more bundles of small CSS files, it makes sure that it strips anything that's not being used in a given page. Even with the more http request for a resource file you can have overall boost in the performance because of fewer bytes transmission.

Bundler tab

This tab has CSS Bundling and the Javascript Bundling with the same configuration settings.
1. Target Number of CSS/JS Bundles Per Page: Specify the number of CSS/JS Bundles to be sent per page.
2. Grouping Logic: You can select the aggregation logic should go by file count of file size.

CDN Tab:

CDN-tab

Content distribution network (CDN), is a distributed network of proxy servers that helps immensely in boosting website performance and load time. Website content can be distributed to servers closest to the site visitor which makes response and load times even faster.

  1. CDN to use - Choose between a network of server providers Google and Microsoft. 
  2.  Checking Use Minified resources would reduce the bandwidth needed because of the smaller file sizes.

CSS Minification tab:

CSS-Minification-tab

This allows the removal of white spaces, comments, unwanted variable names etc. You can select between the Core minifier or the YUI Compressor, where YUI is better form of compression.

External Minification tab:

External Minification is used when you are using command line compression.

JavaScript Minification tab:

java-script-minifaction

For JS minification select a minifier. Selecting a faster minifier is always better.

Old IE Compatibility tab:

Old-IE-capability

Prevent more than 4095 CSS selectors in the aggregated CSS file - You can modify the value to avoid getting errors from IE Version below 10, where if your CSS has more than 4095 selector IE will not render the page properly.


 

Jul 07 2020
Jul 07

Have you had enough of the spam comments, form submissions and email submissions by bots trying to infiltrate your website? Then you need a guard called Completely Automated Public Turing test to tell Computers and Humans Apart. Yes, and that is short for CAPTCHA. As annoying as it may be making us prove time and again that we are not bots, Captcha and ReCaptcha are the most effective against fighting automated programs trying to get into our websites. The Captcha module and ReCaptcha module in Drupal 8 are extremely helpful in protecting your Drupal website against spambots and used widely in user web forms and other regions of a web page where user inputs are required. Let’s learn more about the modules and how to implement them in your Drupal 8 website.

tech-captcha1

What is Captcha and ReCaptcha?

When we try to login to or register on a website, we are sometimes asked to identify and type the distorted numbers and letters into a provided box. This is the Captcha system. Captcha helps us to verify whether the visitor of your site is an actual human or a bot. ReCaptcha does the same in terms of protecting your website from spam except that it makes it tougher for spambots and more user friendly for humans.

The Captcha module in Drupal 8 is an easy to use module largely used in forms to identify if the user is a human or a bot. The Captcha module is also compatible with Drupal 9. Let’s get started with installing and using the Captcha module in Drupal 8.

Download and Enable the captcha module

Download the captcha module from here and enable it. To enable the module, go to Extend and in the spam control category, you will find the CAPTCHA option. Click on the checkbox and then click install.

 

tech-captcha2

 

Enable both Captcha and Image Captcha. Image captcha provides an image-based captcha.

Configure the Captcha module

After installing the module, we must configure the module as per our requirements.

To configure the module, go to Configuration > People > CAPTCHA module settings.

tech-captcha3

Select the Default challenge type. This type is used on all the forms. You can change the type for an individual form. This module has two built in types -

The example of this type is given in the CAPTCHA examples tab on the same page.

To change the type for an individual form, go to Form Settings tab on the same page. Here we can see the list of forms in the site. Click on the enable button to enable the captcha to form.

tech-captcha4

To change the challenge type to a particular form, click on the down-arrow and click edit.

tech-captcha5

Give the form ID for which you want to change the challenge type and can change the type in the dropdown provided under challenge type.

techcaptcha6

This is not required unless the structure of the form does not change.

Adding the description to the Captcha for the visitor

techcaptcha7

Click on the checkbox to show the Challenge description box. This is not visible by default. Just click the checkbox, the description is already written. This description is editable and can display any message of your choice to the visitor.

Set validation and persistence

techcaptcha8

These are some of the features to the validation of the captcha. Here, we can make the validation difficult by requiring case sensitive validation. We can also change the appearance of the challenges. The second option under persistence makes the process simple for the visitor by hiding the challenge once the visitor is logged in and successfully completes the challenge.

Permissions

The captcha can be controlled by giving permissions.

techcaptcha9

One can change the captcha settings who has the Administer CAPTCHA settings permission. Those who have the skip CAPTCHA permission are not given any challenge. To test the captcha the user should not have the skip CAPTCHA permission. Administrators cannot test as they have this permission by default.

The Captcha works as required, but there are some drawbacks to this. It is not user-friendly to visitors with visual disabilities. Reading distorted numbers and letters can be annoying to regular users. This may end up with the user not getting a chance to enter the site.

The solution for this problem is the ReCaptcha module. ReCaptcha module uses Google reCAPTCHA to improve the captcha system.

Download and Enable the ReCaptcha module

Download the captcha module from https://www.drupal.org/project/recaptcha and enable it.

tech-captcha10

Configure the module

After installing the module, go to Configuration > People > CAPTCHA Module Settings.

tech-captcha11

Select ReCaptcha in Default challenge type and click save configuration. After saving, go to ReCaptcha tab on the same page.

tech-captcha12

As the ReCaptcha uses Google ReCaptcha service, the site key and the secret key is required to use the ReCaptcha module. These keys are given by google once we register our site in google ReCaptcha. To register click on the register for reCAPTCHA link.

tech-captcha13

Once we click on it, we will see this form. We have to provide some information such as domain name, type of ReCaptcha. Accept the Terms of Service before clicking on submit. After the submission, you will get the site key and secret key. Enter it in the reCAPTCHA tab.

Choose which form you would like to use ReCaptcha. And then test the form.

techcaptcha14

 

If you want to test it in a local environment disable the domain name validation in reCAPTCHA configuration in google.

 

Jun 30 2020
Jun 30

As a publisher, it is especially important for you to get the most of what is offered when it comes to pay-per-click advertising. While selling or buying ads in the ad space can be complex, Google allows granular control over all your ads and configurations through Google Ad Manager. Combine this incredible ad management platform with Drupal 9's easy to use integration methods, and you will be able to manage multiple ads on your site while providing insightful reports for better optimization.

DFP Integrate

What is DFP?

Google Ad Manager, previously known as Doubleclick for Publishers (DFP) is an ad server which helps the individuals or business with a good number of page views to generate revenue from their pages on the site. This ad platform facilitates both the buying and selling of ads across various ad networks and multiple locations. Google offers its ad server in two variants – Google Ad Manager for Small Business (completely free) and Google Ad Manager 360. It should be noted that the small business offering has some limited features but works well for small to medium-sized businesses.

How to configure Google Ad Manager

1. Creating Ad Units - Ad Units are basic components of the Ad Manager. It defines the size of the ad and specific location of the Ad on your website or app where you want to display the ads.
Below is a sample screenshot of an Ad unit configured on the Ad manager account.

DFT - Integration

2. Delivering Ad unit - For delivering corresponding add units, we need to add Orders, Line items & Creatives.
•    The Orders in Google Ad manager, where we need to add advertiser & trafficker, in other word we can say if company A wants to buy ad space in our site, the first step to setting them up is to create their order in our google Ad manager account as all subsequent line items within this order.
•    Now create line item which holds information about the specific run dates, targeting, and pricing of one or more creatives.
•    A creative is a specific advertisement, such as an image file, a video file, or other content. One creative can be associated with more than one line item.

How to integrate DFP with Drupal 9

1. First, install and enable the DFP module.
2. Under structure menu, go to DFP Add tags. We have to set Network ID (prepending with “/“ (eg: /111111)  in global DFP settings tab which we will get from the Google Ad manager account. Save the configuration.

DFP Integrate


3. Fill up the following details in the Add DFP tag form.
   Ad Slot Name → Use the same label of Ad Unit configured in Google Ad manager account
   Size(s) → Copy the same sizes of Ad Unit configured in Google Ad manager account
   Ad Unit Pattern → Copy the exact pattern from the “Code“ of Ad unit configured in Google Ad manager account
  Under “Display Options”, make sure “Create a block for this ad tag“ is checked.
4. Save the Form. This will create a block with the required ad script.
5. Place the Block wherever it is required using either Structure / Block layout (for all pages).

Jun 23 2020
Jun 23

Twig tweak module is a huge time saver for Drupal developers working with advanced twig templates. It offers several useful functions and filters that can ease the developer’s job. Developers can also write well formatted code which is more comprehensible. I highly recommend usage of the Twig tweak module in Drupal 8 for quick and easy Drupal development. What’s more, Twig tweak is also supported in Drupal 9!

Twig tweak

How to Install the Twig Tweak Module

You can either download and install the module from Drupal.org or from composer. Once you download and extract the file, place inside your project directory. You can also choose to use composer to download with the following command – 

composer require drupal/twig_tweak

Go to Extend and enable the module. You can even use drush to enable the module.

Implementing Twig Tweak Functions and Filters in Drupal 8

Views and views results

To render the views in twig template, we can use the twig tweak snippet as below.

Syntax  
 {{drupal_view(views_name,display_id, args...)}}
 {{drupal_view_result(views_name,display_id)}}
   Arguments

 views_name : Machine name of the views.
 display_id: Machine name of the current display.
 args : Optional arguments for filters. 


Examples

  • {{ drupal_view('who_s_new', 'block_1') }}  This will place the who’s new views block_1 in a template.
  • {{ drupal_view('who_s_new', 'block_1', arg_1, arg_2) }} Extra arguments can be passed if the contextual filters are added can be used with passing arguments.
  • {% set view = drupal_view_result('related', 'block_1')|length %}
    {% if view > 0 %}
    {{ drupal_view('related', 'block_1') }}

{% endif %} In this code the view is displayed only if the view has results in a template.

Blocks

To place the plugin blocks in template, we can use the twig tweak snippet as below.

Syntax
 {{drupal_block('plugin_id',{label:'Example'|t,some_setting:'example'})}} 
  Arguments

 
  plugin_id : Plugin id of the blocks can be found in class annotations of the block.
 options : Second parameter is optional for providing  the configurations for the blocks.


Example 
{{ drupal_block('system_breadcrumb_block') }} to place the breadcrumbs block in template.

Region

To render the region contents from default or specific theme.

Syntax  {{drupal_region(region_name,theme_name)}}  Arguments

 region_name :  Machine name of the region can be found at info.yml   file.

 theme_name: Optional theme name to render the region content of   specific theme other than default.


Example
{{ drupal_region('sidebar_first', 'bartik') }} to place the sidebar first contents of the bartik theme in a template.

Entity and Entity form

To render the available entity and entity form in twig template, we can use the snippet as below.

Syntax

 {{ drupal_entity(entity_type, id, view_mode, language, access_check) }}

 {{ drupal_entity_form(entity_type, id, form_mode, values, access_check ) }}

Arguments  

 entity_type : Type of an entity i.e node, block, block_content, webform,     paragraphs etc.
 Id: Id of an entity. 
 view_mode: To view the entity by its viewmode available.
 language:  To specify language if not it will take default site language. 
 access_check: To check the access of block default value is true.
 form_mode: To view the entity form by its formmode available. 
 values: Array of property values defaults to [].

Examples

  • {{ drupal_entity('block_content', 1) }}  to display the content block whose id is equal to 1 in a twig template.
  • {{ drupal_entity('node', 123, 'teaser') }} to display the node teaser data of entity whose id is equal to 123.
  • {{ drupal_entity_form('node', 1) }} to display node edit entity form in a template.
  • {{ drupal_entity_form('node', values={type: 'article'}) }} to display node add form of article type.

Field

To display the available field value of any entity in twig template or to get field value, use the following twig tweak snippet.

Syntax  {{drupal_field(field_name,entity_type,id,view_mode,language,access_check)}} Arguments

 field_name:  Machine name of the field.
 entity_type : Type of an entity i.e node, block, block_content, webform,   paragraphs etc. 
 Id: Id of an entity.
 view_mode: To view the entity by is viewmode available.
 language:  To specify language if not it will take default site language.

Examples 

  • {{ drupal_field('field_image', 'node', 1, 'teaser') }} to display the field_image value of node 1 with teaser view mode.
  • {{ drupal_field('field_image', 'node', 1, {type: 'image_url', settings: {image_style: 'large'}}) }} to display the image field value with more detailed settings in a template.

Menu

To print the menu items in a template, we use the twig tweak as below.

Syntax  {{drupal_menu(menu_name, level , depth, expand)}}  Arguments

 menu_name : Machine name of the menu
 level:  Menu level to display default value is 1.
 depth: Maximum number of menu levels to display   default is 0.
 expand: To allow the user to select whether it is expanded or not. Default is false.

Example
{{ drupal_menu('main_navigation') }} to render the menu with its default values.

Form

To render the Drupal form in a template we can implement the twig tweak as below.

 Syntax  {{drupal_form(form_id. args ….)}} Arguments

 form_id: Form id of the form that you want to display in template.
 args:  Optional arguments that can be passed to the constructor.

Example
{{ drupal_form('Drupal\\system\\Form\\CronForm') }} to display the form in a twig template by providing the path to its class.

Image

There are several ways of rendering images in twig. Some easy ways with using twig tweaks are as follows.

Syntax  {{drupal_image(property_id, style, attribute, responsive, access_chek)}} Arguments

 property_id: It is the unique id of the image i.e fid, uuid or file_uri.
 style : Image style of the image.
 attribute : For providing the attributes to the image such as alt, title etc.
 responsive : To indicate the image style is responsive image style.
 access_chek : To specify the access check is required.

Examples 

  • {{ drupal_image(123) }} this will render the original image whose fid is 123.
  • {{ drupal_image('9bb27144-e6b2-4847-bd24-adcc59613ec0') }} this will render the image using the unique uuid of the image.

  • {{ drupal_image('public://2020/05/ocean.jpg') }} to render the image using the file uri of the image.

  • {{ drupal_image('public://2020/05/ocean.jpg', 'thumbnail', {alt: 'The alternative text'|t, title: 'The title text'|t}) }} here is an example of displaying an image thumbnail by adding the alt and title for the image. Note : uri path will be based on the default files location since it is set to sites/default/files/2020/05/ocean.jpg.

Token

Drupal 8 introduced tokens which are very useful and huge time savers for Drupal developers. From twig tweak we can render the tokens as below. 

 Syntax  {{drupal_token(token, data, options)}}  Arguments

 token : Name of the token to be printed.
 data: Array of values used for replacement of tokens.
 options: This also used as a flag when replacing tokens.

Examples
{{ drupal_token('site:name') }} to display the site name using the tokens in twig

Configurations

Printing the configuration values in twig will be very useful in a site where you need dynamic data to be printed according to the configurations.

Syntax   {{drupal_config(config_name,key)}} Arguments

 config_name: Name of the configuration yml file.
 key:  Specific value to be printed from the configuration

Example
{{ drupal_config('system.site', 'name') }} to print the name of the site from system.site.yml configuration into a template.

Dump

Debugging is the most important part of the development process. Here are some quick and cool methods to debug in twig. It needs Symfony var dumper component. It can be installed from composer by $ composer require --dev symfony/var-dumper 

Syntax  {{drupal_dump(var)}}  Arguments  var: to print the specific arguments in a template. If a variable is not provided, then all the variables inside the template will be printed. dd() is the shorthand for the method.

Example
{{ dd(var) }} this will  dump the var data from a template.

Drupal Title

To get the title of the current route we can use the twig as below.

Example
{{ drupal_title() }} this will print the title of the current route.

Drupal URL

To generate a URL from an internal path inside the twig we can use the twig tweak snippet as below.

Syntax  {{drupal_url(input, options, access_check)}} Arguments

 Input : use input link path.
 options : array of options including query params.
 access_check: to check the access default is false.

 

Example
{{ drupal_url('node/1', {query: {foo: 'bar'}, fragment: 'example', absolute: true}) }} this will return the https://site_name/node/1?foo=bar#example as output.

Drupal Link

It generates the link path if the URL is not accessible to the user. It works the same as Drupal URL but with extra attributes.

 Syntax  {{drupal_link(text, input, options, access_check)}} Arguments

 text : Text to be displayed.
 Input : use input link path.
 options : array of options including query params
 access_check : to check the access default is false.

Example
{{ drupal_link('View'|t, 'node/1', {attributes: {target: '_blank'}}) }} this will create a link with name View and also has an option to open the link in the new tab.

Drupal Messages

To display the Drupal status messages in template, find the example below.

Example
{{ drupal_messages() }} will display status based on user actions in the site.

Drupal Breadcrumbs

To display the breadcrumbs of the site in template as below, find the example below.

Example
{{ drupal_breadcrumb() }} This will display the breadcrumbs block in template.

Drupal Breakpoints

To add a debug point to a twig template is as below.

Example
{{ drupal_breakpoint() }} This will add a breakpoint in the template where you have added it.

Token Replace Filter

To replace all the tokens in a given string with appropriate values.

Example
{{ '<h1>[site:name]</h1><div>[site:slogan]</div>'|token_replace }} this will replace the tokens available in a string with its appropriate values.

Preg replace filter

It will perform a regular expression search on the text and replaces it with the options.

Syntax  {{text|preg_replace('(pattern)',replacement) }} Arguments  text: Text where the searching and replacing should   happen.
 pattern:  Text that should replace in an input.
 replacement: Replacement text to replace.

Example
{{ 'foo' | preg_replace('(foo)', 'bar') }} in this example “foo” is getting replaced with bar

Image style filters

It will return the image URL with the downloaded image style.

Syntax  {{image_uri|image_style(style)}} Arguments  image_uri: File uri of the image field.
 style: the style which you want to apply for the image.

Example
{{ 'public://images/ocean.jpg'|image_style('thumbnail') }} this will apply the thumbnail image style to the given image.

Transliterate filter

It will Transliterate text from Unicode to US-ASCII and replace unknown characters with “?” by default.

Syntax {{text|transliterate(language,unknown_chars,maxlength)}}   Arguments 

 text : The text which needs to be translated.
 language: language code for which it should translate default is en(English).
 unknown_chars: The character which needs to be replaced with unknown character   default is “?”. 
 maxlength: Max length of word that should check for the translation.

Example
{{ 'Привет!'|transliterate }} this will return the output in english that is “Private!”.

Check markup filter

Apply the enabled filters for the text provided.
 

Syntax  {{text |check_markup(format_id, language,filters_to_skip)}}  Arguments

 text : the text for which the filters should get applied.
 format_id : id of the text format should be used.
 language:  language to which the formatter should apply.
 filters_to_skip: array of filters to skip defaults to [].

Example
{{ '<b>bold</b> <strong>strong</strong>' | check_markup('restricted_html') }} This will apply the 'restricted_html' filter for the text given.

Truncate filter

This will be used to truncate the strings to a specified number of characters.

Syntax  {{text|truncate(max_length,word_safe,add_ellipsis,word_safe_len)}} Arguments

 text : text to be truncated.
 max_length : max length of text to be truncated.
 word_safe : boolean value to truncate at the end defaults to False;
 add_ellipsis: add … to the end of the text default is False. 

 Word_safe_len : if word_safe is true this option will specify the min length.

Example
{{ 'Some long text' | truncate(10, true) }} This will truncate the text to 10 characters and also truncate on boundary.

With Filter

This will add new elements to the array. It also returns an array with modified value.

Example
{{ content.field_image | with('#title', 'Photo' | t) }} This will add a title to the field image and returns.

Children Filter

To filter out the child elements of the render array in a twig template. Also, this will have an option to sort the elements by its weight. This will be useful when processing individual fields.

Example
{{ node.field_example|children }} this will render all the child elements of field_example in template.

File Uri and Url filter

These both filters will be used when dealing with images in twig. You can get the image Uri and URL using these methods in twig tweak.

Example

  • {{ node.field_image | file_url }} returns the absolute url of the image file.
  • {{ node.field_image | file_uri }} returns the uri of the image file relative to its sites/default/files directory.
Jun 16 2020
Jun 16

The Devel module in Drupal 8 is an extremely useful module for developers. The Devel module includes three submodules – the Devel Generate module, Webprofiler module and Kint modules. In this article we will delve into the Devel Generate module and how to work with it.

When building a Drupal website, you want to have a lot of content to check the overall display such as layouts, views, design. Content come in different forms and so it becomes important to test the website out with dummy content before adding live content. Instead of creating dummy content manually, wouldn’t it be nice to add them automatically? That’s where the Devel Generate module for Drupal 8 will come in handy. 

Drupal Devel module

What does the Drupal Devel module do?

Drupal 8 offers tons of helpful modules that can ease the job of a developer. Devel module has several useful features. As discussed previously, there are several modules that are part of Devel; One such is the Devel Generate module. Devel Generate is used for automatically generating sample or dummy content like menu items, taxonomy terms, and nodes. This is helpful if you need to test or showcase your Drupal website with data like dummy users, content, images, and so on. Drupal Devel module can create it all for you in a moment. Devel and its associated submodules are meant to be used on local development environments and should not be enabled on live production sites.

Getting started with the Devel Generate module

Working with the Devel module is as simple as installing it. Let’s get started with the installation and how to use Devel module in Drupal 8. 

Installing

Installing the Devel Generate module for Drupal 8 is like installing any other contributed module. I’m using the Composer to install it since it automatically installs all of the necessary dependencies. Open the terminal, within the project enter the following command.

      $ composer require drupal/devel
     
Next, enable the Devel and Devel Generate module. 
devel module in drupal 8


Generate content using the Devel UI

 1. Go to Configuration. Here you will see a long list of options under Development. Choose Generate Content.

devel module in drupal

 2. The Generate content interface offers a number of options to set before you hit GENERATE:

  • Generate content for all content types or select for specific content type
  • Check the checkbox if want to delete all content of a certain content type before generating new content 
  • Specify how many nodes to generate and how far back the node creation dates should go
  • Specify the maximum number of dummy comments for each node that support comments
  • Set the maximum number of words for the title of each node
  • Hit Generate
     devel module in drupal


3. You can see the list of dummy nodes generated by going to admin -> content

devel module

4.This is what an article looks like with a dummy title, image, and body content

devel module in drupal


Helpful hint: If taxonomy and tags are defined, the generate content module will assign tags at random. If you create vocabularies and terms first and then generate the content, you will end up with more useful test data. Devel can generate vocabularies and terms automatically, but they will be in fake Latin. It’s better to create your own vocabularies and terms because it makes testing easier when you have a meaningful taxonomy to work with.

Jun 09 2020
Jun 09

The future of the web is here. Drupal 9 has arrived, and we are more than just thrilled! All that elbow greasing that went into building Drupal 8 has finally paid off. A much more modern, reliable, compact, and revolutionary open-source CMS has emerged.

Drupal 9 promises much more than continuous innovation. Incorporating the best of open source technologies, the latest version of the CMS opens doors to many more open source communities while offering a secure and sustainable ecosystem.

It goes without saying that none of this would be nearly possible without the incredible Drupal community. I have been fortunate enough to talk about Drupal 9 to some significant Drupal contributors and community members recently. Read on for some honest and passionate comments on what are they most excited about Drupal 9.

What"s the big deal about drupal9?

Alex_Morenoto1

Alex Moreno

Technical Architect at Acquia

quotes The thing I'm more excited is that it is an uneventful event. We all know how painful it has been migrating between previous releases. We've been talking for years about migrations Drupal 8 and wrote hundreds of pages. The least exciting the better in this case. And Drupal 9 on that aspect is not exciting at all. It just works changing a switch, a label… which makes it super exciting!!

jacob

Jacob Rockowitz

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

quotesAs a developer, I am excited about Drupal 9's removal of deprecated code. Removing old code allows us to move forward with improving and extending Drupal core. For the Webform module, I have been working toward tagging a new major release that removes deprecated code, fixes some significant bugs, and improves to some key APIs. Professionally, I am most excited about using Drupal to build a headless content authoring platform. Drupal 8's API first and media initiatives were so successful, the Drupal community can now focus on improving Drupal’s content authoring experience.

jaydeep

Jaideep Singh Kandari

Senior Engineer at QED42

quotes The fact that Drupal 9 is the simplest and easiest major release in Drupal's History is exciting. The community made some great decisions in developing Drupal 8 and that laid the foundation for extending and maintaining Drupal. It is because of those decisions and community support that Drupal can be modified iteratively and can include industry's best practices into Drupal. Modifying Drupal core has never been easier. There are lots of new features which are in progress and might land soon in Drupal 9. One particular feature I'm very interested in is the Automatic Updates. With this in place, Drupal sites will receive automatic updates which greatly reduces the maintenance effort. This initiative is in the development phase and you can see lots of communication happening for this initiative. While there are many other reasons to be excited for the new Drupal 9 release, I think it’s time to thank the community who supported Drupal in difficult times and allowed a planned and timely release of Drupal 9. This shows how the Drupal community is not just engaged in consuming, but also nurturing it and growing it every day. That's why it makes me proud to be a part of the Drupal Community.

joel

Joel Pittet

Web Coder. Drupal 8 Theme System Co-maintainer

quotesI'm excited about Olivero (the new front-end theme), the upgrade transition and ease/experience.

malabya

Malabya

Open-source evangelist. Drupal Practice Head at Specbee

quotesI am excited about Drupal 9 because it's basically Drupal 8 minus the deprecations and plus upgraded dependencies which removes the dichotomy between the two version. This will help developers to stay relevant as alike modules. If you know Drupal 8 then you will know Drupal 9.

markus

Markus Kalkbrenner

CTO at Bio Logis

quotesI’m just excited about the newer Symfony version and semantic versioning. To be honest there's not too much I'm really excited about. I'm more and more concerned about the fact that "fancy" features are accepted for core. On the other hand essential backend components, for example the Form API to just mention one, aren't state of the art anymore. So while Drupal becomes more "complete" as out-of-the-box CMS it becomes less attractive as development framework.

nick

Nick Dickinson Wilde

Drupal Tech Lead at Taoti Creative

quotesWell, there is very minimal new feature wise, but all that deprecated code being gone and less excess ways to do things is nice. I guess beyond all the internal cleanup, I'm very eager on updating of all the Symfony dependencies - lets me update them for a bunch of personal projects too. Also, really keen on the new complete node migration for D7 projects to D9. That's gonna make complex site migrations quite a bit cleaner and simpler.

rachel

Rachel Norfolk

Community Liaison at Drupal Association

quotesI’d say that the most exciting thing about Drupal 9 is how we now have a far, far better way to handle the relentless pace of change in technology. For me, it is actually exciting that Drupal 9.0 brings “nothing new” over Drupal 8.9; it is simply an exercise in dropping old code that is no longer needed. It means that we can then bring great new features in 9.1, 9.2 and so on, whilst having a smaller, more modern, codebase we have to check against.

I remember thinking back to the Drupal 8 release and being a little scared at the huge change to everything. I wasn’t the only one who felt that way and we learned from that lesson. Drupal 9.0 is “no big deal” and that IS a big deal!

Renato

Renato Goncalves

Software Engineer at CI&T's Drupal Competence Office

quotesI'm very excited about Drupal 9 because it will be very important to use the new version of Symfony and Twig. Another important point is that the deprecated code will be removed, and this will make the code cleaner and more organized. Last but not least: I'm very happy because the contrib projects will work on both versions D8 and D9. This is excellent for me as I help the community and I maintain 40+ contrib projects and it helps the maintainers' job.

And Lastly....

Much gratitude to all the community members on this list for taking the time out of their busy schedules to share their thoughts with me. We at Specbee are especially thrilled about Drupal 9 because we can offer more modern digital experiences and easy migrations. We’re ready to shine with Drupal 9!

Jun 02 2020
Jun 02

Blocks are an integral part of any Drupal website. They are chunks of content that can be placed in various regions and can be easily moved around the web page. Blocks can contain simple text, forms, or some complex logic.
The Block module is now a core module in Drupal 8 that can be enabled. Sometimes installing other core or contributed modules can make blocks available. Although these blocks can be modified to suit the layout, complete flexibility and customization can be only achieved with Custom blocks.
We can create a custom block programmatically or via the Drupal Interface. Here, we will be creating a block programmatically and enabling it through the admin interface.

Programmatically creating a block in Drupal 8 – A brief tutorial

How to Create a Custom Block in Drupal 8?

Let us get started with creating a custom block in Drupal 8 in a few simple steps -


1. Create a module

To create a custom block, it is necessary to create a “.info.yml” file in modules/custom directory. Here a custom directory does not exist. You will need to create it. Create a directory named “custom” under the module directory. And under “modules/custom” create a directory called “block_example”. This directory name will be the name of the module created.
Inside this folder that you just created, create a “<module name>.info.yml” file. Here it will be block_example.info.yml as the module name is block_example. Within this file, enter the following contents:
 

Create a custom block module


After creating the folder and file with the above content, go to the dashboard and enable the module you just created. The name of the module here is Block Example.

example block

2. Create a Drupal Block Class

Now to define the logic for the block, we must define the Drupal block class. We need to follow PSR-4 standard code for custom blocks. The php class of the block is placed under modules/custom/block_example/src/Plugin/Block directory. Create this folder structure and create a class named ExampleBlock.php under the Block directory.
This file should contain:

  • Annotation metadata - This will help to identify the Block created. To know more about Annotation check Annotations-based plugins.
  • Annotation contains:
      The “id” which is a unique, machine readable ID for the custom block created.
      The “admin_label” defines the human readable name of the custom block which is displayed in the admin interface.          
Example custom block

The ExampleBlock extends Blockbase class which will provide generic block configuration form, block settings, and handling of user defined block visibility settings.

Example Block extends Block base

Here we are displaying a markup in the block.

3. Enable the Block to display the content

  • After saving the file to enable the block, go to admin > Structure > Block layout.
  • Click on Place block under the region the block should be displayed. Here the block is placed in ‘Sidebar second’.
  • After clicking on Place block, search for the custom block you just created.
     
Place block
  • Click on Place block for the block you want to display. The configuration window opens where you can set the configuration as per requirement.
save custom block

Here the block is displayed for every user's front page. After the configuration is changed as per the requirement, click on Save block and come back to the site.

save custom block

The Drupal 8 custom block created is now visible in the region where the block is placed.

4.Methods used in the class created for custom blocks

  • build() : This method will render a render-able array. In this example a simple markup is returned. Even the complex contents like forms and views can also be returned.
  • blockAccess() :  This method defines a custom user access logic.
methods of custom block

                       • The AccessResult class is called here. 
                       • The method allowedIfHasPermission() checks if the current user has thepermission to view this content or not.
 

  • blockForm() : This method allows to define a block configuration form. 
custom block in drupal 8 module
  • blockSubmit() : This method is used to save the configuration defined in the previous method blockForm(). custom block in drupal 8
  • blockValidate() : This method validates the configuration form of the block. custom block in drupal 8
May 26 2020
May 26

The power of Drupal lies with its modules. With thousands of core and contributed Drupal modules to choose from, Drupal developers can easily implement ones that meet their needs. But what if the requirements are very specific and you don’t have a module available for it? How can you customize a Drupal website for a client who has unique needs that just cannot be accomplished with core or contributed modules? Enter Custom modules.

Custom modules in Drupal 8 give you the flexibility to create new features and/or tweak existing features to accommodate a business’ unique and growing aspirations. Drupal 8 custom modules propels innovation and enhancements to help enterprises expand their horizons. This article should help you get started with creating your very own Drupal 8 module 

drupal module development

Getting started with Module development in Drupal 8

Let’s now get started with creating a custom module in Drupal 8 in a few easy steps:

Step 1: Name the Drupal 8 Module

First, we need to create a custom module under ‘web/modules/custom’ folder. We will name the folder as welcome_module.

module development


Some things that you should keep in mind before giving a machine name to your module are:

  • It should not start with uppercase letters.
  • There should not be any spaces between the words.

Step 2: Get noticed with the info.yml file

We have to create a yaml file with the machine name of our module for Drupal to be able recognize the module. I’ll create a yaml file like this welcome_module.info.yml.
Here is our welcome_module.info.yml file created under "welcome" directory we created in Step 1.

name: Welcome Module
type: module
description: 'First Custom Drupal 8 Module.'
package: Custom
version: 1.0
core: 8.x


name: Welcome Module (The name displayed on the modules list in Drupal) 
type: module - (Declaring that this is a module or theme) 
description: Custom Example Drupal 8 Module (Description of the module) 
package: Custom - (Mentioning that this is a custom module) 
version: 1.0 - (Module version) 
core: 8.x - (Drupal version)

Step 3: Creating the routing file with routing.yml

Next step is to add a welcome_module.routing.yml file under the "welcome" directory:

welcome_module.welcome:
  path: '/welcome/page'
  defaults:
    _controller: '\Drupal\welcome_module\Controller
\WelcomeController::welcome'
    _title: 'Welcome to My Module in Drupal 8'
  requirements: 
    _permission: 'access content'


The first line is the route name [welcome_module.my_welcome].
Under path, we specify the URL path we want this route to register. This is the URL to the route.
Under defaults, we have two things: the _controller which references a method on the WelcomeController class and the default page title (_title).
Under requirements, we specify the permission of the accessing. User needs to have to be able to view the page.

Step 4: Adding a Controller 

Create a folder "modules/custom/welcome_module/src/Controller". In this folder, create a file named "WelcomeController.php" with the following content:

<?php
namespace Drupal\welcome_module\Controller;
class WelcomeController {
  public function welcome() {
    return array(
      '#markup' => 'Welcome to our Website.'
    );
  }
}


Now Login to your Drupal site and enable your module. To check if it functions properly, visit the path you specified in your routing file, that is /welcome/page. If you get the ‘Page Not Found’ error, then clear the cache by navigating to admin->configuration->performance. Check again and it should function properly this time.

drupal module


That’s it! You’ve successfully created your very first custom module in Drupal 8.
Finally, when you go to /welcome/page URL, you'll see Title “Welcome to My Module in Drupal 8" and markup “Welcome to our Website." text printed from our module.

May 19 2020
May 19

Bit.ly for Drupal 8 provides a rich API that other Drupal modules can use to access Bit.ly functionality. Today’s topic of discussion is on how we can integrate Bitly with Drupal 8 easily in just a few simple steps.

What are the first three reasons that come to your mind for shortening a URL? Here are mine –

  • To make more space for content to be posted on micro-blogging sites such as Twitter
  • To mask the original URL 
  • To simply reduce the length of a super-long, ugly URL

Bitly has been out go-to URL shortening service for a long time now and we love its efficacy and speed. For those of you who haven’t stumbled upon Bitly yet, Bitly is a link management platform that offers products and services on link shortening and more. It allows you to shorten URLs for your websites. 

bitly implementation in Drupal

Getting Started- Bitly Integration with Drupal 8

Bitly allows for easy integration with your Drupal 8 website. Since there are no stable modules to integrate Bitly in Drupal 8, we will learn about how to call the Bitly API and create forms to integrate it. Here are some steps to get you started with it -

Step 1 – First, you need to create a Bitly account. Go to https://bitly.com/ and create an account. You need to login to your Bitly account once you have created the account.

You will then see your Dashboard page.

Bitly Integration with Drupal

Step 2 - Next Click on top right side of the screen and go to ‘Profile Settings’

Profile settings


Go to Registered OAuth Applications -> Register New App -> Get Registration Code. 
It will send you an email for your mail id that you used to sign up.
 

Get Registration with bitly

Step 3 - Click on Complete Registration. It will take you to back to Bitly website where you have to add the below details -

complete registration


And Save this OAUTH App. Once saved, a ‘CLIENT ID’ and ‘CLIENT SECRET’ key will be generated as shown below.

OAUTH APP


Step 4 - Next, go to your browser and enter this Url :
https://bitly.com/oauth/authorize?client_id={YOUR_CLIENT_ID}&redirect_uri={YOUR_WEBSITE-URL}
Once you hit this Url, it will redirect to {YOUR_WEBSITE_URL}?code={YOUR_CODE} . Copy this code and paste it somewhere safe so it's not lost.

Step 5 – Next, you have to use POSTMAN to call the API or you can use the CURL command also. Learn more about how the Postman tool can help you with API development and testing.

The method will be POST, Url is https://api-ssl.bitly.com/oauth/access_token and parameters will be client_id, client_secret, code, redirect_uri.

Bilty API Development


When you hit this API, it will return the following –

access_token=TOKEN&login=BITLY_LOGIN&apiKey=BITLY_API_KEY
access_token - The OAuth access token for specified user
login - The end-user’s Bitly username
apiKey - The application key which will be used
This login and apiKey values should be stored and can be integrate with your Drupal modules.

Implementing the integration

Now let us learn to create a custom form for integrating with Bitly as there is no stable module for this in Drupal 8.

bitlyForm.php
<?php

namespace Drupal\bitly\Form;

use Drupal\Core\Form\ConfigFormBase;

use Drupal\Core\Form\FormStateInterface;

/**

* Class bitlyForm.

*

* @package Drupal\bitly\Form

*/
class bitlyForm extends ConfigFormBase {

 /**
  * {@inheritdoc}
  */
 protected function getEditableConfigNames() {
return ['bitly.shorten_url'];
}
 /**
  * {@inheritdoc}
  */
 public function getFormId() {
 return 'bitly_shorten_url_configuration_form';
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this->config('bitly.shorten_url');
   $form['configuration'] = [
     '#type' => 'fieldset',
     '#title' => $this->t('Configuration'),
   ];
   $form['configuration']['login_name'] = [
     '#type' => 'textfield',
     '#title' => $this->t('Login Name'),
     '#default_value' => $config->get('login_name'),
     '#required' => TRUE,
   ];
   $form['configuration']['app_key'] = [
     '#type' => 'textfield',
     '#title' => $this->t('Application Key'),
     '#default_value' => $config->get('app_key'),
     '#required' => TRUE,
   ];

   return parent::buildForm($form, $form_state);
 }
 /**
  * {@inheritdoc}
  */
 public function submitForm(array &$form, FormStateInterface $form_state) {
   $this->config('bitly.shorten_url')
     ->set('login_name', trim($form_state->getValue('login_name')))
     ->set('app_key', trim($form_state->getValue('app_key')))
     ->save();
   parent::submitForm($form, $form_state);
 }
}

Bitly-Integration-with-drupal-8

Add the Login name and Application Key that you have generated and stored previously.

Now, let’s create a function to integrate your Drupal website with Bitly.

/**

* Generate Shorten Url.

*

* @param string $url

*   The url.

* @param string $login

*   The login name.

* @param string $appKey

*   The api key.

*

* @return string

*   Returns bitly url.

*/

public static function makeBitlyUrl($url, $login, $appKey) {

 // Create the URL.

 $bitly = ‘http://api.bit.ly/shorten?version=2.0.1&longUrl=’. urlencode($url) . '&login=' . $login . '&apiKey=' . $appKey . '&format=xml';

 // Get the url

 // could also use cURL here.

 $response = file_get_contents($bitly);

 // Xml.

 $xml = simplexml_load_string($response);

 return 'https://bit.ly/' . $xml->results->nodeKeyVal->hash;

Let’s now call the makeBitlyUrl function to generate the Bitly Url.

$config = \Drupal::config(‘bitly.shorten_url');

$bitlyUrl = (string) makeBitlyUrl('https://www.example.com', $config->get('login_name'), $config->get('app_key'));

You will now get the integrated Bitly Url in the $bitlyUrl variable.

May 12 2020
May 12

Drupal 9 is just around the corner and the beta release is out to be tested already! What’s your Drupal 9 plan?  Are you still in the “Why should I upgrade to Drupal 9 after all” phase? Or are you wondering what your next steps should be for Drupal 9 readiness? We have answers to all your questions including Drupal 9 features and a quick Drupal 9 checklist on how to prepare for Drupal 9.

The best way to prepare yourself for tomorrow is to give your best today. And very apparently, the Drupal community has done just that. I know, migrating to Drupal 8 from previous versions was hard. It meant a complete rebuild of the code and a lot of learning. But once you are fully onboard Drupal 8, life gets easier. Think of it as a hard climb for a gorgeous view from the mountaintop. Truly worth all the effort, isn’t it? So, if you’re still on Drupal 7 (or 6), this is a good time to migrate to Drupal 8 and then simply upgrade to Drupal 9 from there. As you read this, modules are being ported (and made compatible) to Drupal 9 as a collective effort by the amazing Drupal community.

drupal 9 readiness

The Much-Talked-About Drupal 9 Release Date

One of the most frequently asked Drupal questions lately has been about the Drupal 9 release date. So, when is the most-awaited Drupal 9 release date? Drupal 9 is currently scheduled to release on June 3rd, 2020. The Drupal community has been successfully releasing minor versions every six months since the adoption of semantic versioning in Drupal 8. Every minor version came with several valuable new features. 

Drupal 8 extensively depends on third-party libraries like Symfony, Twig, Guzzle, CKEditor and must keep up pace with their updates as well. For example, Symfony 3 (Drupal 8’s biggest dependency) will reach EOL (end of life) by November 2021. Drupal 8 reaches end of life as well. Drupal 9 will be released with the latest Symfony 4.4 support and will not be backwards compatible with Symfony 3. 

Drupal 9         The Drupal 9 Readiness Roadmap (Image Credits – Drupal.org)

Drupal 9 Features - What’s New in Drupal 9?

Here are some key features of Drupal 9 that we will be discussing about in detail thereafter –

  • Easy to upgrade to Drupal 9 (if already on Drupal 8)
  • You get the latest of the best! (Symfony, Composer, Twig, PHP, CKEditor and more)
  • Will receive community support and security fixes after November 2021 (after Drupal 8 EOL)
  • Subsequent Drupal 9 minor upgrade versions will be backwards compatible to Drupal 9
  • Drupal 9.1 will have an all new and modern default theme called Olivero to offer 
  • Many exciting features and enhancements to look forward to, starting Drupal 9.1!

Drupal 9 is already being built within Drupal 8. Drupal 8.9 will release along with Drupal 9.0 in June 2020. This is because Drupal 9 is going to be the same as Drupal 8.9, except that it will be a cleaned-up version that is updated with support for its third-party dependencies. And hence one of the greatest Drupal 9 features is that it is so easy to upgrade!

Every new minor version of Drupal 8 saw many new features , but it also contained a lot of old code so it could be backwards compatible. This “old code” is also famously known as “deprecated code”. Because of the dependencies on third parties like Symfony, Twig, etc., Drupal 9 will incorporate updates to these dependencies. Drupal contributors and module developers are collectively making the road to Drupal 9 easier by eliminating “bad smelling code” (as Jacob Rockowitz calls it in his blog about deprecating code for his Webform module) from various Drupal 8 modules.

       Drupal 9.0 = Drupal 8.9 – Deprecated code + Upgraded dependencies

Drupal 9          What’s new in Drupal 9.0 (Image Credits - Drupal.org)

The Drupal 9 Readiness Checklist

Regardless whether you’re upgrading from Drupal 7 to Drupal 9 or Drupal 8 to Drupal 9, you will need to start planning for Drupal 9. The scheduled release is soon approaching and now is a good time to get prepared for Drupal 9. 

  • Drupal 7 to Drupal 9 Migration

If you are still on Drupal 7 and looking forward to getting onboard Drupal 9, it is not too late. Ideally, it is recommended to split this process into two parts – 1. Migrate to Drupal 8 and 2. Upgrade to Drupal 9. 

  • Migrate content and code to Drupal 8
  • Check for availability of modules in Drupal 8 using the Upgrade Status Drupal module
  • Upgrade your Drupal 7 modules to Drupal 8 with the help of modules such as Drupal Module Upgrader
  • Stay updated with the latest core releases.
  • Remove any deprecated code
  • Upgrade to Drupal 9

And as already discussed, upgrading from Drupal 8’s latest version to Drupal 9 is easy as pie. A Drupal 7 to Drupal 9 migration will take as much resource time (and resource budget) as a Drupal 7 to Drupal 8 to Drupal 9 upgrade. Drupal 7 will reach end-of-life by November 2021 and will continue to receive community support until then. For detailed instructions on how to install Drupal 9, check this article.

  • Stay Up to date with Drupal 8

With every new minor version release of Drupal 8, the benefits are not only restricted to access to new features and enhancements. It also takes you one step closer to Drupal 9. Since Drupal 8.8 is the last minor release before the Drupal 8.9 release (which also happens at the same time as Drupal 9!), it is the last Drupal 8 version to contain significant feature additions. Drupal 8.9 releases on June 3rd, 2020 and will include more stable modules (that were previously experimental) and a few UX and API enhancements. So, the best thing to do now is to keep Drupal core updated and update your website to Drupal 8.8.  

  • Weed out the Deprecated code

Make way for new and improved Drupal 9 features by removing old and deprecated code from your Drupal 8 codebase. When you keep Drupal core and contributed modules up to date, you are also embracing cleaner code. Updated versions remove usage of deprecated code and API. There are various methods to check for deprecated code. 

  • Sometimes functions are marked with @deprecated annotations that warn the developer that the following code is deprecated and what they should be using instead. 
  • Use a command-line tool like Drupal Check (by Matt Glaman from Centarro) to help check for deprecated code and other bugs. It can also be integrated in continuous integration environments.
  • Download the Drupal 8 Upgrade Status module on top of Drupal-Check for a more UI based solution. It can scan your entire Drupal project and generates a clean visual report that illustrates any compatibility issues, the need to upgrade modules to the latest version and Drupal 9 readiness. 
  • Drupal.org also offers support to check for Drupal 9 readiness and deprecation within its testing system. Like enabling static analysis with phpStan or by setting a trigger_error() when a deprecated level is reached.

    Once identified, it is time for some manual work to remove the deprecated code and refine existing codebase. Use automated tools like Drupal 8 rector to resolve some code issues, although it does need some manual intervention.

Drupal 9 Checklist                                     
                                                   Drupal 9 Checklist
May 05 2020
May 05

Drupal 8 has thousands of contributed modules meant to make the lives of Content editors easier. The Focal point module in Drupal 8 is one such module that we are focusing on today. 
Content editors spend a big chunk of their time on editing images. Unless they are also experts in Photoshop, cropping and resizing could get messy sometimes. Simply cropping out an image to fit well on the screen might seize the importance out of it. Drupal offers many interactive means to crop and resize images but they don’t provide the flexibility that the Focal Point module offers. The Focal Point module allows for smart cropping while focusing on the important part of the image.

Focal Point Modules

Installation of the module

Step 1: Install the module using the composer. Use the command “composer require drupal/focal_point”.

Step 2: Enable the module.

Installation of the Focal Module

The module can be enabled through front-end or with the help of the composer, which also enables its dependency modules.

Working of Focal Point Module

Step 1: Create Image styles for the image.
Go to the path Configuration-> Media -> Image styles to create your custom image style.

Focal point module

Step 2:  Select the effect to your image style.

Select, Focal Point Scale and Crop option from the drop-down menu.

Focal Point Scale and Crop

Step 3: Give image Height and Width for smart cropping.

After the effect is added to the image style, an option to add the width and height of the image is offered. This is basically the width and the height to which the image should be cropped.

focal point module-height and width

Step 4: Selecting widget type in Manage form display.

After creating the image style, navigate to manage form display of the field, and select “Image (Focal Point)”.

demo focal point module

In the image widget settings, select the custom image style which you have created.

focal point widget settings

Step 5: Selecting image style in format settings of Manage display.

Under manage display, navigate to the format setting of your image field and select the image style which you have created.

Focal-point

After completing all these steps, you will be able to add content to a content type. Once the image is uploaded, a plus(+) mark appears at the center of the image. Also, a preview button will be displayed below the image.

Focal-point

In the above image, you can see the plus symbol, and also the preview button. If you click on preview, you will be redirected to the preview of the cropped image.

Focal-Point

Initially, the original image is  of a bigger size and once the image style is selected, the preview of your image is displayed. You can also change the crop section by moving the plus(+) mark anywhere on the image.

Focal Point

In the above image, I have moved the plus symbol to the right corner, so it crops the left portion of the image.

Focal Point

In the above picture, the left portion of the image is cropped by placing the plus(+) mark on the right of the image. This is how the drupal focal point works. 

Apr 28 2020
Apr 28

Combining the powers of Apache Solr and Drupal 8     results in unmatched digital experiences with high-performing, enterprise-level search features and functionality. In this article, we will learn about why Apache Solr should be chosen and how we can configure Apache Solr in Drupal 8. 

What is Apache Solr? 

Solr is a solid and ascendable open-source search platform that provides distributed indexing and load-balanced querying. Built initially for and by CNET Networks, this Java based project was later offered to the Apache Software foundation.  Apache Solr is the best solution for super-fast, credible and awesome search applications. Big guns like Netflix, Instagram and Twitter including various e-commerce sites and CMSs, use Apache Solr for their search functionality.

config-apache-solr

Why choose Apache Solr?

With many options available in Drupal 8 core to implement your search functionalities and features, why should you choose Apache Solr with Drupal 8? Here are some reasons Apache Solr might be the best fit for your project:

  1. Apache Solr offers Faceted navigation to let users add multiple filters that can help them navigate easily through piles of information. Facets are elements for navigation that can be queried.
  2. It allows for Full-text searches that offers precise results along with its near real-time indexing and searching capabilities. Indexing with Apache Solr is not only faster, it can also be merged and further optimized. 
  3. The Hit Highlight feature enables highlighting the search words or phrases to make it easy to identify.
  4. The Dynamic clustering feature allows to group search results and offer related searches or recommendations.
  5. Allows spell check and auto-complete suggestions for a better search experience.

Using Apache Solr with Drupal 8 enables better control over your website search and offers an interactive admin interface. Check out how we enabled a leading Healthcare provider to boost their search experience with Apache Solr and Drupal.

Implementing Apache Solr in Drupal 8

Let us divide this process into the following parts:

  1. Install Apache Solr
  2. Install the Drupal Solr Module 
  3. Configure Apache Solr with Drupal Module

1. Installing Apache Solr

Step 1: Install Java

As Apache Solr is completely based on Java, we need to install Java to begin with. For Apache Solr 7, we need Java 8 or higher to run. If you don't have Java installed in your system, install Java using the below command –

$sudo apt install openjdk-11-jdk

Verify the active Java version using the below command - 

$java -version

Step 2: Install Apache Solr on Ubuntu

Now, you can download the latest Apache Solr version from its official site. Else, you can also use below command –

$cd /opt
$wget https://archive.apache.org/dist/lucene/solr/7.7.2/solr-7.7.2.tgz

Now, extract Apache Solr service installer shell script from the downloaded Solr archive file and run the installer using the following commands.

$tar xzf solr-7.7.2.tgz solr-7.7.2/bin/install_solr_service.sh --strip-components=2
$sudo bash ./install_solr_service.sh solr-7.7.2.tgz

Now, Solr should be installed on your system. You can use these commands to Start, Stop and check the status of Solr service –

$sudo service solr stop
$sudo service solr start
$sudo service solr status

Default Solr runs on port 8983. You can access your Solr admin panel by typing localhost:8983 in your browser.

Install-apache-solr

2. Installing the Solr module in Drupal 8

The Drupal 8 Search API Solr module should be installed before we go any further. This module integrates Drupal with the Apache Solr search platform and provides a Solr backend for the Search API module.

Install this module in your site using Composer using the below command –

$composer require drupal/search_api_solr

Once it is done, enable the module.

Go to Extend → Search Search API Solr Search → Enable it

3. Configure Apache Solr with the Drupal Search API Solr Module

Step 1: Create a core in Apache Solr

After Installation of Solr, you need to create a core in the Solr in order to work with the Solr platform. This is an important step where we can index the contents to the Solr core. You can see the indexed content in the core which you have created. You can create the core using the below command in ubuntu –

$sudo su - solr -c "/opt/solr/bin/solr create -c first_solr_core -n data_driven_schema_configs"

This command will differ depending on where Solr is installed. Here, it is in the /opt folder of my Ubuntu system. You can see the created core in the Solr admin panel.

solr server

Step 2:  Create a Solr Server

In this step you need to create a Solr server and index in your Drupal website. To create a Solr server –

Go to Configuration -> Search And Metadata -> Search API -> click on Add server

Apache solr

When you click on the Add server you will get one form you need to fill that form 

  1. Server name: Enter the Server name
  2. Enable: You need to check the enable check box. If you don’t enable it, you cannot index the items
  3. Add server description: A brief description of the server.
Apache-solr

Next, you need to configure the Solr backend. Click on the CONFIGURE SOLR BACKEND in the form. You can see the form elements as shown in the image below:

solr collector

Solr Connector: There are four connectors available. You need to select a connector to use for this Solr server. I am using the Standard connector.
 
HTTP protocol: Choose https or Http (depending if your server uses SSL or not).
Solr host: localhost (if your Solr Server is on a different machine, please enter the IP or hostname of that host here)
Solr port: 8983 (This is Default port)
Solr path: "/" (The path to locate server and this is based on the solr server version If the solr server version is 6.6.4 in this case solr path is different like "/solr" ).
Solr core: Enter the solr core name which you created before.
The values as defined default work fine. However, you can also change them accordingly.

Step 3: Create the Search Index

Here we are going to create a Search API index that will index the Datasources that you selected in the index. To create an index –

Go to Configuration -> Search and Metadata -> Search API -> Add index

apache-solr

Index name: Enter an index name.

Data sources: Here you need select the Datasources to index the items for the search functionality. In my example, I selected content. When you select the content, you will get the option to select the bundles in the CONFIGURE THE CONTENT DATASOURCE. Here you need to select the bundles you want to index.
Server: Select the server to index the items. I have selected the Apache-solr-server.
Enabled: This enables the index. Don’t forget to enable the selected server as well for this to work.

Once done, hit Save and add the field. 

solr-apache

After successfully creating an index, you now need to add fields to the index. 

To add the field that you need, go back to the search API, click on Edit the index which you have created.

You will then see the Fields tab. Click on the fields tab and you will see a window as shown in the image below.

solr-apache

Next, click on the Add fields. In the popup that appears, you need to add the fields you need. After adding the fields, click on Done and then Save.

index-solr

Now, the Index and server are created on the website. After this, the next Important step is copy the configuration files to Solr core. For this, you need download the config files from the server in the website. 

Go to Configuration -> Search and Metadata -> Search API -> <Server name> 

You will get a window as shown in the image below –

solr apache

Next, click on the “Get config.zip” button. This will download the config folder. Once done, extract the zip folder and copy all the files into the conf folder in the core.

get-config.zip

To copy the files, open the terminal and move to the Solr core folder. In Ubuntu, Solr core folder will be stored in the /var/solr/data. In the data folder, you will see the Solr core folder which you had created earlier. Go to that Solr core folder and you will find a folder with the name conf. in this folder you will find some files. Delete those files and copy all the files from the config folder that is downloaded from the website server. Once done, you need to restart your Solr server in the terminal.
Next step is to index the contents –

Go to Configuration -> Search and Metadata -> Search API -> click on the index that you have created. You will see a window as shown in the image below.

search and metadata

Next, click on the index to index the contents. Now all the contents are indexed in the Solr core. Now you can create a view of Solr index and add the indexed fields to the view to get the results from the Drupal 8 Solr.

Apr 07 2020
Apr 07

The Drupal 8 Webform module is a contributed module and is one of the most powerful and flexible modules in Drupal 8. It is an open source module used for building forms and managing submission. Drupal Webform has also made it to our list of top Drupal modules that you absolutely need for your next Drupal project!

Drupal Webform is a highly versatile module that is used to build forms and extract information from the users in Drupal websites. For example, we can use this module to create surveys, contact forms, feedback forms and much more. After submission, this module will allow to send emails to the user and can send notifications to the administrator regarding the submission. There are options to view the submission, publish it as a node, page or block and export the results into a CSV file.

Webform Logo derived from Drupal.org/Webform   
           Webform Logo derived from Drupal.org/Webform

Getting started with the Drupal 8 Webform module

The Drupal community has given us some phenomenal modules and Webform is certainly one of them. Jacob Rockowitz, the builder and maintainer of the Webform module, had once discussed with us about Webform and his contribution towards the Drupal community. “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.“ Read more about Jacob and many more of our Drupal community contributors here.
Now, let’s get started with installing the module and creating Webforms.

Install and enable the Drupal 8 Webform module

Download the Drupal Webform module from https://www.drupal.org/project/webform and enable it.

Install and enable the drupal 8

To enable webform, go to Extend and in the webform category, you will see a webform along with the checkbox. To work with Drupal 8, webforms enable Field API, System module, User module. Without enabling these three modules, the webform cannot be enabled.
There are many options under webform which provide specific functions. Enable them as per the requirement.

Create a new Drupal Webform

To create a new Drupal 8 webform, enable Webform UI and Webform Access. Webform UI provides a good user interface for building / maintaining webforms and Webform Access controls the webform nodes. Enable the Webform Node before enabling the Webform Access. Then goto Structure > Webforms.

Create a new web form

Here are some options for webforms.

  • In the first tab, Forms, are a list of webforms created. By default, there is a contact form. This is the template provided by the Webform module.
  • There are more templates in the second tab Templates.
  • In the Submissions tab, we can view the forms submitted by the users.
  • Options have a predefined reusable set of values that are available for the radio buttons, checkboxes, and menus.
  • There are a few more reusable values in the Add-ons tab.
  • In Configurations, general settings of the webforms are provided.

 To create a new Webform –

  1.           Click on Add webform.
  2.       On clicking Add Webform a tab opens with title, description, category, and status.
  3.       Add a title to the Webform and a short description about the webform.
  4.            At the end, under Status, there are two options open and closed. This means if the status is ‘open’, the form is available to the user else it's closed. After editing all the options click on Save. For example, here the title is ‘Registration’.
webform adding fields

Adding Fields to the webform

On clicking Save, a page opens with the title of the webform given (here – Registration).

webform Registration


●    To add the fields to the webform click on +Add element.
●    On clicking +Add element, there comes a popup with the list of fields that can be used in the webform.

add elements in web form


To preview the elements, click on Show Preview on the right top. To add the element, click on the Add element of the respective element. On clicking, the popup opens on the right side of the page.

web form elements


Here there are options for editing the title name and many advanced settings for the field. After making all the settings changes, click on the Save button in the end. Click on the checkbox under required for all the required fields in the webform.

●    You can view the webform created by clicking on the View tab on the top. The Submit button is created automatically on adding an element to the webform.
●    Test tab provides testing to the webform created. The values to the form fields are auto filled with random values.
●    In the Result tab, the values of the submitted form can be viewed. There are three options under the result tab.

  1. List of all the submitted forms under the submission tab.
  2. Submitted results can be downloaded in four formats -Delimited text, HTML tables, JSON document or Yaml document under the Download tab.
  3. Can clear the submitted forms in the clear tab of results.

●    Settings tab has the general settings of the webforms which can be changed according to the requirement of the user.

●    The configuration of the webform can be downloaded from the Export tab. The configuration is displayed and can be downloaded by clicking the Download button on the end of the page. The configuration is downloaded in Yaml format as the Yaml config file can be easily imported to another Drupal instance.

Adding Content to the Drupal Webform

As soon as the Drupal Webform module is enabled, a content type with the name ‘webform’ is created. It has fields like title, body and webform. The Webform has a dropdown with all the created webforms.

To add the content to the webform, goto Content > Add content > Webform. As mentioned, there will be a title and body. There is a dropdown labeled Webform, which has the Title names of all the web forms created.

web form

Next to that there is another option called ‘Webform settings’.

web form settings

In Status, there are three options, Open(to keep open to the users), Closed(to close the form to the users) and Scheduled(it will provide the date and time field and according to the date and time mentioned, the form will be kept open to the users to fill).

You can also provide default data by filling the Default submission data field with an available token. A token can be browsed by clicking on Browse available tokens. Examples to write the token can be viewed by clicking on the Example link. And can view all the submitted forms under the Result tab.

Adding the Drupal 8 Webform as a Field in Content Types

        To add webform in content type goto Structure > Content types >Manage fields of the content type for which the form is required.

        Click on the Add field. In Add a new field select ‘Webform’ under the ‘References’ section, give a label to that field and click ‘Save and Continue’.

        In Field settings, can give the number of values allowed to the field and click on ‘Save field settings’.

        You can select the default form from default value or else click on ‘Save settings’.

        Now go to Contents > Add content and select the content type which has a field referred to the webforms.

web form

        Select the form from the dropdown which is required for this content. The submitted form can be viewed in the Result tab of that content.

 

Adding Captcha in Drupal Webforms

You must have seen Captcha being widely used in many websites. Before submitting a form, it provides a question and asks for a response from the user. This prevents the bots to overload the servers by making many of form submissions and email submissions.

Drupal Webforms lets you add the Captcha element while creating the web form. Drupal webform captcha requires you to enable the Captcha module.

Steps to add Drupal webform Captcha in forms:

        Download and enable captcha module from www.drupal.org/project/captcha.

        Navigate to Structure > Webforms.

        Click on the build of the form to which captcha is required.

    Click on Add element and expand Advanced elements. By expanding the list of the advanced elements can be viewed. Click on Add element of captcha to add the captcha.

webforms captcha

        Clicking on Add element will open a settings window on right. Check on the box Admin mode so that admin can debug and view the captcha.

        And in the Challenge type, we have 2 options -Math and Image. You can select any one of your choices. Then click on Save and on Save elements.

        Add the field in the content type of the field type Webform and refer to the form for which the captcha is added.

        Now go to Content > Add content > and content type which has a field referred to the form.

        Fill the title and save the content. When you view the content the form along with the captcha is published. Before checking the submit button the captcha field should be filled, else the form will not get submitted and gives the alert message.

drupal 8 web form

Advantages of Drupal 8 Webforms

    Drupal Webform module is open source, which means it is free and you only need time to set up and configure the forms.

        These Webforms are flexible and allows for customization of fields used in the forms.

        It gives many options in a single installation like sending notifications and mails to the user and the administrator.

        It is easy to export the results of the submission. Users can view the result of the submitted form in the admin interface and can also export the result in CSV format by clicking a single button.

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 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!

Nov 13 2018
Nov 13
  • By: Shefali
  • Date: 13-11-2018

Digitalization has opened doors that nobody imagined even existed. Opportunities did not just come knocking, they exploded their way in. Digital evolution has taken the world of professional publishing by storm. However, this evolution brought along a whole new set of challenges that publishers are still trying to cope up with. Many publishers of physical magazines had to shut shop as most of their readers had now shifted to e-magazines but the ones who saw the silver lining in the cloud, went online! And now the whole world is their audience.

Consumers are altering their preferences of consuming content ever so often and publishers have to make sure they reach their audience through more than just one medium. Plain text is passé – content that’s not enriched with any media (images/videos/gifs) are blindly rejected.

As our attention-spans are evolving (for the worse), it has become crucial for content to be fresh, relevant, interactive and alluring. Which means, publishers need to work even faster and find efficient ways to exhibit their content for better consumer engagement. A good Content Management System will let publishers to create and publish fresh content fast and efficaciously. Thunder - a Drupal 8 distribution – aims to resolve the problems faced by professional publishers and make their lives much easier.

Feel the Thunder

Originally designed for and by Hubert Burda Media, Thunder was later released as an open-source software in 2016. This community-driven CMS is based on Drupal 8 and consists of varieties of hand-picked modules meant solely for the publishing sector. Because it is open-source and completely non-profit, a Thunder Coalition was shaped where publishers, industry partners, core team and developers share their code/modules/extensions. So everyone benefits from the coalition while giving back at the same time.

With Drupal 8 already providing a vast collection of modules that are valuable for professional publishers, it was the most obvious choice of CMS to backup Thunder. Custom modules developed for Thunder are also contributed back to the Drupal community which encourages a strong circle-of-life.

So why reinvent the wheel when you can just realign it? – Said Anthony J. D’Angelo. And with Thunder, you don’t even need to realign it most times.

Get launched – quick and easy

A Drupal distribution is a complete package that comprises of installation profiles, modules, themes, libraries that are industry-centric and easily downloadable. Thunder distribution is an all-in-one package focused on professional publishers that is stable, extremely scalable and customizable. It consists of all the bare-necessities needed for a publisher to get up and running in the market faster. Installation is easy and quick and allows you to set-up your website faster than you think. Because it is open-source and free, it cuts down development efforts helping you save on time and money!

The Out-of-the-box Experience

Unless you want a feature that is very specific and bespoke, you are good to go with the core features Thunder has to offer. Responsiveness comes out-of-the-box not only for site visitors but for the editors and administrators too. The Paragraph module lets you create, modify and play around with content. It lets you drag and drop content and multimedia making it really flexible and easy to create beautiful stories.

Scheduling your content to be published is as easy as 1-2-3! Modules like Media Entity and Entity Browser make media handling more effective. Content Lock comes handy especially when many editors work together. It lets an editor lock a node they are working on and notifies the other(s) that the content is being edited. When you want to instantly check if your content looks alright on different devices, use the Responsive Preview module. Embedding videos from Youtube or Vimeo just got easier with the Video Embed Field module.

The Extra-Ordinary Extras

The little extras are what makes the ordinary, extra-ordinary. Thunder provides some optional modules that promise to give professional publishers that extra boost. Have you seen those articles on your Facebook app that load up in a jiffy and makes you feel like you haven’t even left the app? Yes, I’m talking about Facebook Instant Articles. With this module, editors can easily add content from their Drupal website to Facebook and drastically reduce load time on mobile devices.

The Google AMP (Accelerated Mobile Pages) module lets you deliver content like text, images, videos, Instagram and Twitter cards in a flash. If you need to cover an event as it occurs, the LiveBlog feature is your best friend. When you want to add content like surveys, polls, quizzes or top 10 lists, the Riddle Interactive Content plugin is precious. The Nexx.tv video player integration allows efficient distribution and flexible streaming of videos across various platforms.

The Drupal Advantage

Being a free and open-source content management framework, Drupal was the most obvious choice and Hubert Burda Media had to look no further. They had already had a great experience with Drupal and the release of Drupal 8 just made things better. Core Drupal features like Menu Management, User Management, Taxonomy, RSS feeds, system administration and page layout customization helped Thunder in building a strong foundation. A foundation that has been further enhanced with many more publisher-centric modules.

The Drupal community is constantly evolving, thereby adding more features, beefing up security and giving you all the support you need. The Thunder and Drupal Community are so closely-knit, you can’t tell the difference. Thunder makes it easy for organizations to share their customized modules with other industry-partners and the Drupal community so everyone benefits from their contribution.

Thunder has been built for publishers by publishers and just cannot be ignored if you are a professional publisher. It addresses all the pain-points of a publisher and helps accelerate the process of getting to market. Top publishers like Marie Claire, BUNTE, ELLE, Playboy, InStyle and many more trust Thunder. “Don’t give to get. Give to inspire others to give”. This seems to be the thought motivating the Thunder Coalition and the Drupal community to share the power of innovation. The advantages of being open-source are abundant but the most significant is the fact that you can give back to the community. It is like this amazing cycle of life that runs on trust and goodwill.

Oct 29 2018
Oct 29
  • By: Shriganesh
  • Date: 29-10-2018

One of the most important aspects of technology in education is its ability to level the field of opportunity for students. --- John King, U.S. Secretary of Education

How many of you were aware of the fact that the very first instance of what became of the internet, was a communication link between UCLA and Stanford in October 1969?! At that time, more than half of the eventual nodes on the ARPANET - the precursor to today's Internet - were universities. To be fair, the internet was literally born in universities.

In the 80s and the 90s, most of these organizations had a significant online usage penetration and were amongst the first ones to have a digital presence and develop a website of their own.

With the faculty members and the administrators of the education organisation having better access to the internet in much larger numbers, this was viewed not as a potential source of revenue, but as an educational imperative. Unlike their corporate counterparts, higher ed organisations had fewer restrictions, thus making this less about profits and more about the mission.

Today's Scenario?

Over the past 2 decades, the advancements in technology have been tremendous and these changes have played a major role in allowing educational institutions to move into a teaching and learning method inspired and driven by technology.

However, the changes while creating new opportunities for students, have brought upon new obstacles for colleges and universities to overcome.

Today's technology driven higher education is rich and also in tangles. With almost zero editorial governance, most of the universities are caught up in a heap of long trail of microsites, internal portals, mismatched designs, and patchwork integrations.

In the present scenario, from textbooks to exercises, from software simulations to data sets containing educational data, it is necessary to rethink the way these educational resources or “learning objects” are managed.

Though this is all exciting to begin with, it is not just tiny web presence that is the issue. Let us discuss about some of the common problems that higher education institutions face when it comes to content management.

Diverse Audience

In an ideal condition, a website is crafted for a specific audience. However, think of an higher ed institution and the website of its own which will be serving multiple audiences from all the possible corners of the world with a diverse background of their own. Apart from the main set of audience, serving dozens of smaller sub-audiences, the higher education institutions faces the daunting task of serving more people with more complexity in a more challenging web environment.

When we talk about the challenging environment, it is just not about different people needing different information. For example, students might want to access a class video on their mobile device. However, this is driven by various other factors such as students with different economic backgrounds and financial conditions, different broadband speeds, different internet access regulations and many more.

This clearly implies that the requirements for a higher education universities with respect to content, design and development need to be broad, drastically broad!

Contributor Base

With a long tradition of direct web publishing with little or no oversight whatsoever, the higher education projects are always present with larger numbers of content contributors from various departments and wings of the organisation than any other type of industry. They have their own independent departments, each with their own stake, audiences and outcomes, resulting in the faculty members publishing their content in the form of research to public websites under the university banner without clearing this with the central governing body.

To add to the complication, even if the higher education body has a centralized editorial board, the departments often come up with their own editorial teams, making it difficult task for the central governing body to maintain the vision of each individual team.

With all this going on, the most affected are the permissions and the security features under the high number of users and student population. A streamlined user management driven by a central management for permissions and supported by a user database for the website independent of the rest of the organization is a rare sight in the higher education institutions.

Too Many Units, Websites

Most of the large higher ed websites are actually several (in some cases even hundreds) of loosely associated microsites, department websites, external applications and more. Consisting of a number of semi-autonomous departments, the organizational structure is completely paralleled in their website management and governance. This results in a major architectural issue, struggling to keep consistency between the various different groups and their content.

With so many microsites, it often appears as though there is a seperate website for each department. In some cases these websites might differ in terms of visual appearance, architecture of the information, and also the editorial tone. Some extreme cases can also have the micro sites running on seperate servers, powered by their own CMS and operated as complete separate entities!

System Integrations

A great university does more than just handle a bunch of students and teach them a few subjects. Similarly, a great website does more than just show a text page or two. An average higher education institution is quite complex, involving lot of people, departments, students and more. Thus the average website of this average institution is bound to be complex system of interlocking technologies.

A typical website for a higher education institution is a complex world of system integrations with functionalities bolted onto the main content management systems. With multiple portals and support systems to service the academic needs of the student population, there lies a huge challenge in how to balance the specific needs of their diverse audience and also manage the technology constraints with respect to standards of integrations.

The Solution

When we think from the perspective of an educational institution there is a lot of data that is travelling among the teachers, students and the administrators. Comprising of worksheets, homework, reports, assignments and so on, most of this content is not managed and maintained by the educational institution but by the teachers themselves, making it entirely dependent on context and the learning goals to be achieved.

Quoting Wiley, in his “content is infrastructure,” the learning process must be created on top of such infrastructure, and there is a real need for managing all those contents available on the Web.

This fact combined with the concept of open educational resources, enables a new environment for learners that view the web as a learning space with many possibilities, with no time or space barriers. While content management has traditionally been related to content producers such as news and media agencies, publishers and other portals, the higher education institutions are a major contender (courtesy of their methods to churn out their own content on a regular basis) to use a CMS effectively.

A CMS is basically defined as a combination of three distinct concepts: content, process and technology.

Content usually refers to the text, graphics, videos, animations and other media that comprise the base of a system.

Process is more concerned about the users and the actions performed by the users. Defined as the set of actions that produce a notable outcome, process refers to the ways integrated into the system for the users to perform certain tasks such as publish, share or download.

Technology is the driving force to perform the process and control content over the internet.

Content Management System & The Concept of Compound Learning

The basic purpose of any CMS in any industry is to manage the information workflow in a database and publish the content onto the web environment. However, even when the purpose is standard for any user, the process and the way to present it to many other users differs according to the user requirements that can range from a simple task to a complex one.

In the case of educational purposes, a CMS can be used to submit various assignments or publish research papers or update information on the student portal etc. Furthermore, using the CMS as a support for classroom instruction results in a structure for Compound Learning.

Compound Learning is the combination of both the traditional instructions and e-learning with the support of an effective CMS like Drupal. This ensures that the students are not deprived of the interactivity in the classroom and also are exposed to technology that eases their workload.

From the teacher's point of view, this integration of a CMS like Drupal helps them effectively manage their online information such as audios, videos, animation, interactive applications and more. Providing an effective usage to control processes for managing content and its users, some of the features that Drupal CMS offers are,

  • Easy navigation
  • Effective information management
  • Ease of access and usage
  • Architectural organization
  • Different interfaces and functions for different user groups
  • Robustness & Scalability

Furthermore, by using a CMS like Drupal, higher education institutions can develop up-to-date information on a regular basis, improve their system administration and also lower their expenses at the same time. Also, achieving following goals with a Drupal CMS becomes much easier.

  • Ease of use with security and permissions
  • Creating workflow administration
  • Separating content from design and view
  • Managing and controlling content
  • Handling structures for metadata
  • Creating depository for reusable content and more...

When education systems find it hard to maintain knowledge acquisition, management and publishing process because of their complexity, web based content management systems like Drupal makes things easier irrespective of the amount of content owned and the amount of updates and modifications required.

In any higher education institution, it is very important to understand how a CMS impacts a number of people and the departments concerned. While analyzing the current website of the institution and using the input from some of the key individuals helps in understanding how a CMS fits into the environment, the decision is still based on an extensive process and open communication. In the field of educational technology, it is an often repeated motto to emphasize teaching with technology rather than teaching the technology itself.

Sep 20 2018
Sep 20
‌‌

"You want to enable your developers to easily deliver content to different devices, channels, and platforms. This means that the content needs to be available through APIs. This is aligned with Drupal 8's roadmap, where we are focused on web services capabilities."

tweet this

Dries Buytaert

If you know Drupal, you HAVE to know Dries. He’s the founder of Drupal, CTO of Acquia, an excellent blogger and a Young global leader at the World Economic Forum.

Quoting him from one of his blogs where he was talking about why headless Drupal is gaining more and more popularity within organizations and how Drupal 8 is focusing on making it more efficient and easy to adopt -

“You want to enable your developers to easily deliver content to different devices, channels, and platforms. This means that the content needs to be available through APIs. This is aligned with Drupal 8's roadmap, where we are focused on web services capabilities. Through Drupal's web service APIs, developers can build freely in different front-end technologies, such as Angular, React, Ember, and Swift, as well as Java and .NET. For developers, accomplishing this without the maintenance burden of a full Drupal site or the complexity of configuring standard Drupal to be decoupled is key.”

He also gives us some statistics on the adoption of Drupal 8 – “Drupal 8 continues to gain momentum, as the number of Drupal 8 sites has grown 51 percent year-over-year.”

"You want to enable your developers to easily deliver content to different devices, channels, and platforms. This means that the content needs to be available through APIs. This is aligned with Drupal 8's roadmap, where we are focused on web services capabilities."

tweet this
Sep 12 2018
Sep 12
  • By: Ganesh
  • Date: 12-09-2018

"The most compelling advantage of API-first Drupal is not the way it negates Drupal's presentation features, it's the way it enables the capabilities of the CMS to power multiple applications and devices.”— Jason Enter, Manager Technical Services, Acquia.

The relationship between content and code is not a healthy one anymore. The consumer-facing presentation layer is not as removed from the content editor layer, as it used to be, mainly because of the new interactive experiences being provided to consumers through apps.

Modern frameworks and programming languages allow for flexibility in the formation of your content management stack. Thus, decoupling content from code has become a common practice in the recent years and Drupal was one of the early adopters of the same.

What is “Decoupled”?

Well, decoupled Drupal does sound "cool" doesn't it? Seems like everybody is talking about it, so it must be a better, more easier solution right? Well, maybe. Offering a wide array of benefits, this strategy, also known as "headless drupal" is used to exploit Drupal solely as a Content Management System without a presentation layer. i.e there is only content and the administrative UI, sans the public facing themes and the other templates, thus exposing an API for other applications.

But perhaps the most important question that you have in mind would be, what are the benefits of decoupled architecture?

A headless architecture does a great job in reducing or completely eleminating most of the problems that are a part of the monolithic content management systems.

Simplified upgrades: A decoupled architecture ensures that a CMS upgrade does not affect the presentation layer, thus keeping you from having to set-up again after every CMS upgradation.

Better focus: A huge advantage for developers, with decoupled architecture, they only need to be concerned about setting up their part of the stack. Back-end developers need not worry about compiling CSS and the front-end guys need not scratch their heads about composer installs.

Easy troubleshooting: A headless architecture is structured in such a way that the platform consists of smaller, discrete parts rather than a single giant application. This makes it a lot easier to locate bugs and troubleshoot them.

Improved performance: With both the teams working simultaneously in a decoupled manner, development of new features can happen seamlessly without running into walls. This in turn improves the overall performance of the platform.

Easy troubleshooting: A headless architecture is structured in such a way that the platform consists of smaller, discrete parts rather than a single giant application. This makes it a lot easier to locate bugs and troubleshoot them.

How Important is JSON for a Decoupled Website?

Powerful architectures, responsive and user-friendly web applications are a result of JavaScript frameworks, that has become quite popular since its introduction in early 2010. And with an increasing number of people opting to use mobile devices to access digital content, building native applications for a website makes a lot of sense.

Realizing this potential, Drupal has added the support for building RESTful APIs into the core. However, this comes with its own drawbacks as the RESTful services of Drupal core does not provide robust solutions out of the box.

A traditional REST API implementation usually come face to face with a certain set of problems:

  • An entire data graph needed to construct the view in the consumer will require too many requests.
  • A significant response bloat returning all the fields and relationships of every entity.
  • Finding content based on the data attributes of the entities is a herculean task.
  • Versioning the API so consumers and back-end implementations can iterate separately.

In order to address these problems, there are several specifications out there, JSON API being one of the most prominent ones.

What is JSON?

JSON - JavaScript Object Notation is one of the most common data format for the exchange of data over web services. Primarily replacing XML, the lightweight and easy to read nature of JSON makes it quite awesome.

Why you should consider implementing JSON specifications?

A set of pre-defined standards and conventions that describe how the APIs should be served by the servers and consumed by the clients for exchanging data in JSON format, the JSON API specifications offer key benefits when implemented:

Efficiency: The JSON API specifications are designed in such a way that, they keep the number of requests and the size of the data to bare minimum.

Productivity: It so often happens that, as a devloper you are quite confused about which best practices to follow when building an API. On the other hand, by following a set of standards you are out of dilema.

Consistency: The specifications offer a consistent structure and behaviour while being consumed to build applications.

Support: The specifications are widely accepted and the implementations required for client libraries can be found for almost every framework and programming language.

The JSON API Module

When you install and enable the JSON API module, a REST API is immediately available for every type within your Drupal implementation. By traversing entity types and bundles such that it can generate URL's at which it can access and manipulate entities, the module achieves this feat.

While the JSON API is quite a complex specification to deal with, the JSON API module does a great job in simplifying the process of consuming it, especially for early decoupled Drupal developers.

tweet this

However, by following the approach of "less configurations" and production readiness right of the box, the JSON API module does come with a set of disadvantages of its own.

Support: The JSON API module is entirely entity-based, which means that it is centered around the Drupal's entity types and bundles. However, the module fails to support or handle custom data.

Task Failure: Since the module is entity-based and cannot handle custom data, it also fails to perform other tasks such as login, creating sessions or logging out a user etc.

Pre-defined Structure: The JSON API Module presents a pre-defined payload structure that cannot be modified. Once the module is enabled in Drupal, the consistent payload structure cannot be changed or customized with change in vendor requirements

Learning curve: As JSON API module exposes all the attributes of an entity, it might get complex in nature. With quite a steep learning curve, JSON API may not be everyone's cup of tea.

How to download and install JSON API Module?

Having a dependency on serialization module, it has to be enabled first before downloading and installing JSON API. This can be done by using any of the following methods:

Using Drush

$ drush en serialization -y

$ drush dl jsonapi && drush en jsonapi -y

Using Drupal Console

$ drupal module:install serialization

$ drupal module:download jsonapi && drupal module:install jsonapi

While the JSON API is quite a complex specification to deal with, the JSON API module does a great job in simplifying the process of consuming it, especially for early decoupled Drupal developers. Although the module lacks certain features (Drupal core's REST web services can be used for the same purpose) it still provides production-ready API right of the box with advanced features including paging, sorting and filtering to minimize the requests for retrieving the required data. JSON API is more than just a specification. It really puts the focus on the hard problems.

Sep 07 2018
Sep 07
  • By: Malabya
  • Date: 07-09-2018

On September 6th the Drupal team shipped Drupal 8.6.0, a huge update to the Drupal project. Packed with powerful features shipped with Drupal, the release is a significant one for content editors, site builders, developers and evaluators.

With a rapid year-on-year adoption of Drupal 8, the release is set to be the leading choice for many big organisations. Known for constantly improving itself with every release, the features of Drupal 8.6.0 are quite interesting.

The new features of Drupal 8.6.0

As mentioned, Drupal 8.6.0 ships with a lot of new features out of the box which will help business leaders to showcase the potential of Drupal as a platform. The notable features added in Drupal 8.6.0 are:

Media library for Ease access to Media

One of the major features of Drupal 8.6.0, this addresses the media support provided by Drupal. While Drupal had basic files & image support, it was still far behind from what a modern web system should ideally support out of the box, for media handling. The media initiative was taken to include a rich media support system which enabled the content editors to reuse the existing media, and also have more control and meta information of the site media. In the latest version of Drupal, the rich media library is added which not only provides a quick access to the existing media entities, but also uploads new media entities out of the box.

drupal-8.6.9

Apart from this, a more significant improvement was the ability to add remote media types. Now content editors can easily embed YouTube or Vimeo videos into the content. This approach makes it very easy to add videos from a remote source to your content with ease. Drupal in its latest release will also provide a library for the remote media type, to easily attach a media in your content.

3D object

New Experimental Workspace Module

Drupal at its core, is a Content Management System which is all about managing your content. The experimental workspace module will change the way content authors and site maintainers work and review their content before publishing it to the end users. This will enable the creation of environments like Staging and Production, allowing content to move from one environment to another with ease. The approach will drastically relax the tiresome effort of reviewing the content, and editors can have a full site preview of how the site appears once the content gets published.

3D object

Improvements in the Layout Builder

As a site builder, it is really important to create pages of different layouts quick and with ease. In Drupal 7, this was done by contributed modules like Panelizer & Display Suite. But now, Drupal 8 has this capability in its core. Using the Layout Discovery module, site builders can easily create new layouts which will be used by Layout Builder module to build beautiful landing pages.

The features of Drupal 8.6.0 bring something new for each user, whether you are a content editor or a developer.

tweet this

3D object

Quick Installation of Drupal

One of the biggest problem for evaluators was setting up a new Drupal site which was quite a task. In this modern and fast paced world, evaluators and first time users would like to quickly set a fresh Drupal instance and review it. To tackle this issue, a new “quick-start” command was added in Drupal 8.6.0 , with only one dependency i.e PHP, enabling a new user to quickly launch a new Drupal site from scratch without the need of setting up a webserver and database.

3D object

Umami Demo environment

Apart from the “quick-start” command to launch a fresh Drupal site, the team has worked relentlessly to build a demo profile for the evaluator. The Umami demonstration will quickly exhibit the powerful features of Drupal 8 like data modelling, content listing, blocks and content moderation. This will not only help a new user to come onboard, but also help the service providers to demo, thus harnessing the capabilities of Drupal to potential customers.

3D object

Drupal has been evolving rapidly and bringing in a lot of modern functionalities which are out of the box while improving the usability and robustness of the system. The features of Drupal 8.6.0 bring something new for each user, whether you are a content editor or a developer. With releases like this, it proves the potential and the enthusiasm of the contributors to make Drupal a better product with every release.

Aug 29 2018
Aug 29
  • By: Johnny Aroza
  • Date: 27-08-2018

The Drupal bangalore community came together for the July Meetup and it was quite an informative experience, with experts sharing their knowledge on some of the best practices on Drupal.

There were 3 informative sessions, one of which was on “Improving your Development workflow” by Malabya that showed how developers can improve the quality of Development by efficiently using git and by setting the local environment with Lando or Docker instead of the traditional way. He also spoke about the importance of using composer for dependency management and deployment.

Codebase

Malabya quoted very well that “if you don't use git even God cannot help”, and that's quite true for developers. In every project CODE is the backbone for any webapp and often developers waste a lot of time in just struggling to deploy and in version controlling, while GIT can help developers in version controlling without any hassle.

While maintaining a codebase, it is always better to follow these points.

  • One Codebase per application/site.
  • Tracked by a version control (Git or other version control)
  • Many deploys (dev, staging & production)

3D object

By using GIT we can have the same codebase and switch branches according to the environment.

Local Development

Developers can follow one of these approaches for local development,

  • Mamp/Xamp/Lamp
  • Vagrant/VM
  • Docker

It so often happens that developers face a lot of problems in setting up their local with ideal environment. The scene as it stands would be that the local environment set-up using Mamp/Xamp/Lamp will have issues with production, or functionality which will be working fine in local machine, but failing when deployed in server(prod/dev/stage)

How developers can improve the quality of Development by efficiently using git and by setting the local environment with Lando or Docker instead of the traditional way

tweet this

To avoid this, developers can opt for Docker or Vagrant which helps in replicating the environment as per the requirement and it's easy to customize.

For Vagrant, Developers can go for Drupal VM,Scotch Box,vagrant boxes or can create their own box according to your need. And In Docker Developers can chose between Lando,DDev,Dockersal,Wodby Docker4Drupal.

Composer Workflow

Developers can use composer to declare and install dependencies via manifest files. Drush make is an age old practice now, and it's time to adopt COMPOSER.

Composer can be used to download Drupal, Drupal contributed projects (modules, themes, etc.) and all of their respective dependencies. These instructions vary based on your approach to managing your Drupal installation.

One of the following approaches can be used for installing a drupal site using composer,

  • drupal-composer/drupal-project
  • hussainweb/drupal-composer-init
  • drupal/drupal
composer create-project drupal-composer/drupal-project:8.x-dev \
example --stability dev --no-interaction


composer require drupal/devel
composer require --dev drupal/devel
composer install --no-dev

composer require cweagans/composer-patches
"extra": {
  "patches": {
    "drupal/devel": {
      "2860796: Create a branch of devel compatible with Media in core": "https://www.drupal.org/files/issues/2860796-2.patch"
    }
  }
}
composer update drupal/devel
composer remove drupal/devel
composer config platform.php 7.1

Deployment

Deployment becomes a piece of cake when developers use Git. All the configurations stays in one code base and it is recommended to have the config folder outside the Drupal root.

Gitignore plays an important role, and it is better to have the following files/directory in gitignore,

  • Core directory
  • Contributed modules
  • Contributed themes
  • Contributed themes
  • Contributed profiles
  • CSS files
  • Vendor

By having these files in gitignore, git diff files will be smaller in size, easier to review and quite impossible to hack the core.

Deployment Process

Manual deployments are error prone. This is because it involves humans doing stuff,if developer is lucky he can recover. This job can fall to developers and testers in a development team who would otherwise be spending their time producing the next set of awesome features and improvements to the software.

Developments team can have automation in deployment.Implementing automation needs some basic configuration and then you are all set for the automation deployment. If your using Slack u can use configure to get the notification.

There are lot of Automated Deployment Tools available you can chose them according to your requirement ,some of them listed here,

  • Jenkins
  • AWS CodeDeploy
  • CircleCI
  • Travis CI
  • BuildBot

These Continuous tools reduce lot of time and makes the deployment process easy.

Deployment Process commands

git pull origin master
composer install
drush update-database -y
drush config-import -y
drush cache-rebuild

By adapting to Git, Composer and automated Deployment, the development team can save lot of time. It also reduces human prone errors, thus allowing the developers to concentrate on coding without wasting time on non-productive configuration.

Jul 20 2018
Jul 20

Change can be hard and terrifying, especially at its inception. Yet, a change is what allows you to grow, evolve and progress.

I know it can get painful to take a decision as big as a migration of your Drupal 7 or 6 content management system – the one that you knew and have loved, but once done, you will know you have made the most brilliant decision, ever! Don’t just take my word for it, get hold of Drupal 8’ers (yeah, it can be a term!) and ask them. As you read on, you will know how Drupal 8 migration can play a key role in the success of your business.

It has been a while, about three years now, since Drupal 8 has made its entry into the field. The best of the Drupal community toiled for 4 years to produce this masterpiece of a CMS and finally announced its arrival in November 2015. Since then, more than 150,000 drupal websites have migrated to Drupal 8, only to find a higher performing, robust and a more flexible solution. If you’re not ready to take the plunge yet, maybe these reasons will help you dive in.

Still on Drupal 6?

If you’re still stuck on to Drupal 6, you must know that everyone else has moved on. Today, the web has changed and so has Drupal. The Drupal community no longer supports Drupal 6 since February 2016. Which means, there will be no new drupal modules or features to look forward to, no more bug-fixes, security updates and patches. Thus putting your website’s security at high-risk and of course depriving it of some TLC from the community. If you still want the best for your website, migrate to Drupal 8 now! Yes, you can completely skip Drupal 7. Drupal’s migrate module is now included in Drupal 8 core and makes the switch easy and fast.

High-performance Personalization

Personalized content has time and again proven to be one of the most effective content marketing strategies to improve your revenue. However, there is a fine line between personalization and being creepy. When you start using personalization the wrong way, you will look like an intruder. But when you implement it the right way, you will look like a company who cares for your consumer’s preferences and choices

Although Drupal 7 also supports personalization by providing many modules to select from, Drupal 8 makes the deal even sweeter. With personalization, there’s bound to be tons of unique content which cannot be cached. Lesser caching of a page means slower loading time, thereby driving the customer away. Drupal 8’s new BigPipe module to the rescue! It lets you segregate your page into different sections (called Pagelets) which can be rendered as they get available (Cached first). This lets you drastically improve your page’s perceived performance and speed.

Google Trends

Drupal 8 comes packed with even more powerful features and functionalities like never before. If you thought Drupal 6 or 7 was amazing, wait till you experience Drupal 8

tweet this

Drupal 8 also integrates seamlessly with third-party personalization tools and our personal favourite is Acquia Lift that connects customer data with content efficiently. While Drupal 7 also provides this integration, it does not receive any new features now. The latest version of Acquia Lift in Drupal 8 features a suave in-context, drag and drop UI.

You’ve got your basics covered!

One of the most stunning features of Drupal 8 is that you have (almost) everything you need, out-of-the-box. This is why content managers are loving Drupal 8 - It’s almost like Drupal 8 has been personalized just for them.

  • Responsive websites are not a luxury anymore, they are a necessity. All of Drupal 8’s themes are responsive off-the-rack – which not only works great with all devices also makes configuration and set up of your Drupal website a lot easier.
  • A built-in, well configured WYSIWYG editor CKEditor lets you preview and edit your content in a breeze. You also have an in-place editor that lets you edit blocks, content, menus, etc. right in the same page.
  • SEO gets you noticed and out-there. With some of Drupal’s built-in powerful SEO modules , you can take your website places! Modules like SEO Checklist, PathAuto, Redirect, MetaTag, etc. are killing it!
  • The newest and most powerful version of HTML, which is HTML5 is now built-into Drupal 8. It lets you embed complex input elements like audio, video, date, email, etc with ease and better functionality across all devices.
  • Take your business global with Drupal 8’s out-of-the-box multilingual support. You can not only create pages enabled with language-based views, even the admin interface allows you to select our preferred language. The built-in content translate modules enables you to translate any content entity into different languages.

Drupal 8’s API-First Approach for better brand interaction

By the year 2020, there are going to be more than 50 billion internet connected devices. Content is now consumed via a plethora of mediums – computers, mobiles, IoTs, wearables, conversational interfaces, smart TVs… and the list keeps growing. Which means, your brand needs to interact with a lot more devices and in many more formats than just a website. Content delivery has gotten a lot more challenging.

Just so we are on the same page, an API (Application Programing Interface) is a set of rules or routines (functions or programs) that specifies how applications can interact with each other. For example, if you want to display the current weather on your website, you can invoke an API with websites that offer this service.

To be able to handle the content delivery challenge efficiently, content needs to be treated like well-structured data. Drupal’s API-first approach, lets you create an API before you build your website or mobile app. This futuristic approach allows you to turn content into services which can then interact with diverse devices irrespective of the formats. While Drupal 7, also supports the API-first approach with the help of additional modules, Drupal 8 comes built-in with the content-as-a-service model.

This is what our in-house expert Drupal Practice Head, Malabya Tewari has to say about Drupal 8’s API first approach – “Drupal 8 has taken this approach to another level and here’s why- REST module is now in core, where you can create own custom web-services using Views (which is also added in core in D8). It is easier to create custom REST APIs using the core REST module. Adding basic authentication is in core as well. You can get APIs, including JSON API and GraphQL, for all entities - out of the box! “

As quoted by Drupal founder, Dries Buytaert – “Drupal 8 changes everything we know about content management as we move from websites to digital experiences.” Drupal 8 comes packed with even more powerful features and functionalities like never before. If you thought Drupal 6 or 7 was amazing, wait till you experience Drupal 8. Migrate to Drupal 8.

Jul 13 2018
Jul 13

“Bitcoin is a technological tour de force” - Bill Gates, Co-Founder of Microsoft

There is a new Birdman in the town! An idea that has gripped the biggest institutions in the market. A technology, that enthusiasts believe, could change the world.

"A truly extraordinary invention that does really mundane things", as told by Paul Brody, E&Y Global blockchain leader.

Some see it go much further than the effect on "big stock trades". Further into cracking down on music piracy, child labor and a lot of other things around the world.

Yes, I'm definitely talkng about Blockchain Technology!!

What is all the noise about?

This fuss about blockchain technology has been around for a long time now. So long that even Google is working on its own blockchain related technology. We all know that it has brought quite a change in the tech flow! But what is the clatter about?

This might help you out a little

Google Trends

As defined by the experts in the tech world, "Blockchain technology is a decentralized, replicated & shared ledger for managing and keeping record of transactions across multiple participants".

In layman’s terms, transactions no longer use a centralized database for storage, instead store among the participants itself (called nodes). Before the blockchain technology swept everyone right of the floor, traditional transactions were centralized and dependent on a third-party to create a trust-worthy environment where the transaction partners are strangers. With multiple issues from high transaction costs and low speed to single point of failure and lack of transparency, businesses were in need of a better system in place.

With blockchain technology, the distributed ledger technology allows different nodes to interact directly with each other, being independent of a third party source. Also, blockchain technology handles every other issue with ease.

How Blockchain Works

The Transformation

Before it raced ahead to be recognised as the potential to become the disruptive standard in commerce, Blockchain was originally devised for Bitcoin. This 'not-so-real" cryptocurrency is based on the distributed ledger principle. As one of the most common blockchain application with a market capitalisation of more than $19 billion (as known on April 13th 2017) and a daily traded volume of $330 million, it allows transactions by decentralised confirmation and integrating it to the blockchain.

In addition to the trusted ledger functionality, blockchain very quickly adapted to exchange of files through the transactions. As a major brakthrough, NXT since 2013 and LINQ by Nasdaq since 2015 have been using the blockchain technology to transfer tokenised assets.

It was all about blockchain 2.0 from the late 2015 when Ethereum was launched to allow the use of smart contracts on a much larger scale than Bitcoin. These contracts allow automatic execution of code on blockchain.

What Does This Mean for Digital Content?

Quite recently, the digital world was rocked by one of the most complex cases of data breach by a leading organization that caught the entire world completely by surprise! And ofcourse you all know about the “Terms of Service” that allows websites to actively track almost every internet activity of yours.

My point is, this data, handled by a central entity, is easily accessible and the user does not have complete control.

However, with Blockchain technology, things are going to be different. Spearheading the momentum of decentralization, Blockchain ensures that the data stored is completely tamper proof. This being the main reason enterprises have shown interest in this technology.

centralized vs decentralized

With the capability to decouple the business logic from data using "Smart Contract", Blockchain ensures that no single organization can take hostage of data.

Some of these Blockchain powered decentralized technologies that are playing a vital role in digital content management are : IOTA for decentralised payment processing, Smart Contracts from Etherium, Bitcoin, Hyperledger, Blockchain database from BigchainDB.

The fact that decentralized CMS allows users to control the content they produce is something that businesses around the world are ready to embrace.

Where Does Drupal Fit In?

The idea that Drupal and Blockchain can work together to create a secure decentralized architecture is quite fascinating. Look at this tweet by Dries, way back in 2016.

Tweet

We all know that the workflows of Drupal and Blockchain are completely different. While Drupal uses a centralized database, blockchain on the other hand does not require a middle man and instead acts a verification element.

This is where things get interesting.

Let us for example consider a Hospital with a number of branches around the country. A healthcare network is huge, with great amount of data. Doctor information, patient information, academia, pharma, insurance etc. There is a ton of data and everything has to be handled efficiently to ensure things don't go out of hand!

Blockchain can do wonders here!

By creating a decentralized architecture which is secure and also immutable, blockchain can handle every piece of information precisely. Patient data for example can be made universally available and the info can be validated by the patient himself, by providing him access and control.

Patient medical records can be made accessible not only to the patient and the doctor, but also to research organizations, insurers and anybody seeking the required information. And the fact that the patient himself can validate the entire access is a vital point.

In the short-term blockchain can be a source to streamline processes. However, in the long run, on integration with Drupal, this technology is bound to have a huge impact on the entire structure.

tweet this

Also, Blockchain will play a huge role in reduction of cost and the time-cycle of transactions and medical claims. Improved administration process, fast efficient payments, reduction in medical claim fraud and multiple immutable authentication can further stamp Blockchain's importance.

Blockchain can create an architecture that allows rule based transactions possible with no communication gaps. All the approvals and the information edited, deleted and corrected will be documented. Yes, this system has a few challenges of its own with respect to need for a decentralized consensus.

This is where, Drupal CMS comes into the picture. Now if this entire healthcare network was on Drupal, each department of the hospital had its own website handled by Drupal individually. For example, Drupal 1 could deal with patient data across the main website. And Drupal 2 could take care of medical claims and other insurances. While Drupal 3 could handle career and other campaigns.

My point here is, to use Blockchain and synchronise users and the user data so that it is available throughout the entire infrastructure.

Imagine having a patient to enter all the information on the main website for the first time to sign in, and then forcing the same patient all over again when he visits the other website for his medical claims. Definitely not an option for a seamless experience.

Ofcourse, with Drupal, a centralized database can be maintained to avoid such repeated interactions! However, multiple user functionality, vulnerability to errors and the need for logic to bypass the mature Drupal system are quite a headache.

With Blockchain and its peer-to-peer distributed ledger, the healthcare infrastructure looks something like this. (No middle-man ofcourse)

decentralized

This architecture ensures that an update on one of the Drupal websites, gets synchronized on all the other ones. This decentralized architecture has a set of its own advantages and challenges.

While it completely avoids the "single point of failure", thus keeping the entire system from loosing data, the work required to integrate data into the system is not an easy task. However, when worked on it for a better integration, Blockchain and Drupal together can do wonders.

Jun 26 2018
Jun 26
  • By: Ganesh
  • Date: 25-06-2018

When the open source Accelerated Mobile Pages project was launched 3 years ago, Google wanted to get back at Facebook's Instant Articles. With a handlful of launch partners and an aim to impact the future of content distribution on mobile devices, AMP was introduced to the world.

Fast forward to today, and Google's AMP is the hottest thing on the internet. With over 25 million website domains that have published over 4 Billion AMP pages, it did not take long for the project to be a huge success. Comprising of two main features; Speed and Support to Monetization of Objects, AMPs implications are far reaching for enterprise businesses, marketers, ecommerce and every other big and small organizations.

With great features and the fact that its origin as a Google Initiative, it is no surprise that the AMP pages get featured in Google SERP more prominently.

Why AMP??

Impacting the technical architecture of digital assets, Google's open source initiative aims to provide streamlined web pages to mobile browsers and other apps.

It is Fast, like Really Fast

AMP loads about twice as fast as a normal comparable mobile page and the latency is as less as one-tenth. Intended to provide the fastest experience for mobile users, customers will be able to access content faster, and they are more likely to stay on the page to make a purchase or enquire about your service, because they know it won't take long.

An Organic Boost

Eligibility for the AMP carousal that rests above the other search results on Google SERP, resulting in a substantial increase in organic result and traffic is a major boost for the visibilty of an organization. Though not responsible for increasing the page authority and domain authority, AMP plays a key role in sending far more traffic your way.

ROI

The fact that AMP leverages and not disrupts the existing web infrastructure of a website, makes the cost of adopting AMP quite lesses than the competing technologies. In return, AMP enables better user experience which translates to better conversion rates on mobile devices.

Drupal & AMP

With better user engagement, higher dwell time and its easy to navigate between content benefits, businesses are bound to drive more traffic with AMP-friendly pages and increase their revenue.

Before you begin with the integration of AMP module with Drupal, you need to have 3 things:

AMP Module : The AMP module mainly handles the conversion of regular Drupal HTML pages to AMP-complaint pages.

Two main components of AMP module:

AMP Theme : I'm sure you have come across the AMP HTML and its standards. The one that are responsible for your content to look effective and perform well on mobile. The AMP theme produces the mark up required by these standards for websites looking to perform well in the mobile world. Also, AMP theme allows creation of custom-made AMP pages.

AMP PHP Library : Consisting of the AMP base theme and the ExAMPle sub-theme, the AMP PHP Library handles the final corrections. Users can also create their own AMP sub-theme from scratch, or modify the default ExAMPle sub-theme for their specific requirements.

How to setup AMP with Drupal?

Before you integrate AMP with Drupal, you need to understand that AMP does not replace your entire website. Instead, at its essence, the AMP module provides a view mode for content types, which is displayed when the browser asks for an AMP version.

Download AMP Module

With your local prepped up, type the following terminal command:

drush dl amp, amptheme, composer_manager

This command will download the AMP module, the AMP theme and the Composer Manager module (suppose if you do not have the Composer Manager already).

If you have been a user of Drupal 8, you are probably familiar with Composer and its function as a packaging tool for PHP that installs dependencies for a project. The composer is used to install a PHP library that converts raw HTML into AMP HTML. Also, the composer will help to get that library working with Drupal.

However, as the AMP module does not explicitly require Composer Manager for a dependency, alternate workflows can make use of module Composer files without using Composer Manager.

Next, enable the items that are required to get started:

drush en composer_manager, amptheme, ampsubtheme_example

Before enabling the AMP module itself, an AMP sub-theme needs to be enabled. The default configuration for the AMP module sets the AMP Theme to ‘ExAMPle subtheme.’

How to Enable AMP Module?

The AMP module for Drupal can be enabled using Drush. Once the module is enabled, the Composer Manager will take care of the downloading of the other AMP libraries and its dependencies.
 

drush en amp

Configuration

Once everything is installed and enabled, AMP needs to be configured using a web interface before the AMP pages can be displayed. First up, you need to decide which content types should have an AMP version. You might not need it for all of them. Enable particular content type by clicking on the “Enable AMP in Custom Display Settings” link. On the next page, open the “Custom Display Settings” fieldset. Check the AMP box, then press Save.

Drupal Module

Setting an AMP Theme

Once the AMP module and content type is configured, it is time to select a theme for AMP pages and configure it. The view modules and the field formatters of the AMP module take care of the main content of the page. The AMP theme on the other hand changes the markup outside the main content area of the page.

Also, the AMP themes enables you to create custom styles for your AMP pages. On the main AMP config page, make sure that the setting for the AMP theme is set to the ExAMPle Subtheme or the custom AMP subtheme that you created.

Drupal theme

One thing is for sure. Google favors websites that provide the best experience possible for mobile users. With tough competition from Facebook Instant Articles and Apple News, Google AMP aims to decrease page loading time to influence the user experience. With Drupal, the Drupal AMP module and AMP PHP library, supports the usage of AMP on your website. Beyond the success of publishers and ecommerce websites on Drupal, a number of other websites are utilizing AMP along with the inclusion of progressive web apps. With a bright future ahead, Google AMP will be one of the strongest tools for traffic generation and conversions.

Jun 12 2018
Jun 12
  • By: Ganesh
  • Date: 12-06-2018

The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect. - Tim Berners Lee, Inventor of World Wide Web.

The internet as we know it today is 10680 days old! Originally conceived to meet the demand for automatic information sharing between scientists in universities and institutes around the world, the internet today is an integral part of more than 3 Billion people in the world. For various reasons ranging from social networking to collecting information for projects, internet today is arguably the most powerful resource known to mankind.

Over the years, the boom in chatbot and machine learning applications has led to businesses crafting their online presence in the form of websites and using artificial intelligence for a better customer experience. This is not surprising, given the fact that in recent years, chat or messaging has taken over social media to be the "go-to" option for users who want to contact a business.

But have you ever stopped to think, can everyone access the web?

It is 2018 and I wonder, why is web accessibility still less, well, accessible?? As a business, the competitive market pushes you to reach as many people as you can to promote your brand. More the barriers, lower the chances of reaching potential customers. This basically is the concept behind web accessibility: to eliminate the barriers that the audience face!

What is Web Accessibility?

Generally, people refer web accessibility with screen readers or visual disabilities. However, the range of topics that it covers is vast and includes more than just the disabilities. For example, having an appropriate screen contrast for a person to see the screen on a sunny day is a use case for someone with a normal vision rather than for someone with a disability.

The World Wide Web Consortium has introduced some guidelines to achieve certain levels of accessibility to ensure that a website is as useful as possible. Published in 1999 as version 1.0 and later in 2008 as version 2.0, the WCAG 2.0 is generally accepted as the standard to measure when talking about web accessibility and the information you present to a user.

How is Web Accessibility Important??

With the internet's growing importance in people's life, if what you want to convey (your content basically) is not easily accessible to everyone, you’re turning away your audience before they ever get to the door. For example, something as simple as a broken hand or a temporary blindness can make it difficult to navigate the web.

While the fact that web accessibility is not only for those with disabilities is quite resonant, businesses need to know that the flexible and responsive design of a fully accessible website is a benefit to everyone.

What does Drupal do?

Drupal CMS, a web based SaaS provides the ability to organize a manage an organization's web content in a systematic manner. The guidelines of the World Wide Web Consortium is divided into two - ATAG 2.0 that addresses the authoring tools and the WCAG 2.0 which addresses the web content and is widely used by developers and accessibility evaluation tools. Drupal CMS, as a platform, has been built to adhere to both the guidelines. While the accessibility initiative started with Drupal 7, the content management system's latest version addresses some of the best accessibility features.

Drupal 8 Accessibility Features?

The most advanced version of Drupal CMS allows your website to be far more likely to be accessible, to assistive technologies and the users who depend on them, than ever before.

Better Contrast

Poor contrast level is often cited as the most commonly overlooked feature by the developers. However, in Drupal 8, the core themes have higher contrasts, thanks to the Drupal's accessibility maintainers. With improved contrasts, users suffering from colour-blindness can easily websites. Also, this feature is an added advantage when visiting a website under bright sunlight in a portable device like a mobile phone or a tab.

Forms

Errors while filling forms is one of the most common factors that affect the user interface. With the new standards, identifying these errors becomes much easier. By using a better form validation error verbiage, Drupal 8 provides an option to turn on this feature that improves accessibility related to the display of form errors. For example, a visually impaired person can now easily identify what errors he might have made when filling in a web form.

Alt text usuallt refers to the words that are used to describe a particular image. Though not visible or rendered on the page, these alt texts are used by tools like screen readers and is a great asset to web accessibility. This feature which is set to required by default in Drupal 8 helps visually impaired audience to know what the image is all about with the help of the text.

Buttons instead of links

A common practice among many website owners is to use anchor texts as "call to action" instead of buttons. From a semantic standpoint, it is more logical to use a button rather than anchor texts as these user interface elements are action oriented. Thus, Drupal 8 has called for this measure to use buttons rather than links. This new standard set by Drupal 8 can be handled without becoming heavily dependent on WAI-ARIA that can be useful in identifying the purpose of some elements.

The Future of Web Accessibility in Drupal

Over the years, Drupal has taken some great steps forward to achieve web accessibility through several of its major releases and is one of the leading implementations of the web accessibility standards. With web accessibility being one of the major factors contributing to the user interface and the ability of a business to reach the maximum audience, several strategic initiatives for Drupal core is sure to shape the future of how people interact with a website. Some of the noteworthy ones include:

  • Application-like interfaces and various UI interactions that are presented without full-page refreshes: sliding panels, autofocus, live result filters, drag-and-drop, pop-up success messages, live previews,wizard-like progress steps, and role impersonation.
  • Automated accessibility testing using headless browser drivers.
  • Supporting more interaction modes, such as MS Windows' high-contrast mode, and speech-driven control.
  • End-user testing for accessibility
  • The theme component library initiative which involves much refactoring of how Drupal produces output.

With its latest version, Drupal CMS now adopts more WAI-ARIA practices which makes content architecture easier to understand. Drupal 8 is now much closer to the ideal, which is to render the web accessible to all. Drupal developers and core maintainers have done a great job to accomplish enhancements regarding accessibility with some of the best features that will play a major role in being beneficial for better usability. However, whatever features Drupal CMS brings out, it is always up to organizations to decide, plan and build websites or web applications by keeping web accessibility in mind.

May 28 2018
May 28
  • By : Ganesh
  • Date :28-05-2018

Businesses and enterprise organisations today are falling into a trap. A trap built around the ROI of their business. Return on Investment is a term in its own right, capable of flipping over businessmen and marketers who have worked decades to understand how the market functions. In the form of an age-old formula, it is still one of the key reliable ways to measure the effectiveness of business strategies and campaigns.

However, organizations these days are hell bent on believing that the ROI for online businesses is either black or white. That is, it is either postive or negative. Now here is the twist; does positive ROI mean you are getting the bang for your buck? What businesses fail to notice is that, a positive return does not always gurantee for what you are really after, a best possible return.

So how do businesses go on to get a measurable ROI and how to achieve it? Here is where Drupal as an enterprise CMS platform plays a key role in driving organizations towards successful campaigns with a better ROI. But what sets Drupal websites apart? What out-of-the-box features of Drupal CMS have an impact on businesses? Let us analyze.

Content Marketing

Marketing is like telling the world that you are a rockstar. Content marketing is showing the world that you are one - Robert Rose, CEO, Content Marketing Institute

Content marketing is more than a buzzword now. The growing demographic diversity and the adoption of more personalized technologies is likely to put any organization into a convergence of changes that challenge the always-been-present, familiar tactics that businesses use to communicate with customers. With the buyers demanding more interactive and relevant content, content marketing is the right choice to fill this gap and create content and distribute, to have an impact on the customers by engaging different market segments. In today's world, if a company does not utilize content marketing, it is certainly missing some vital revenue.

When it comes to content marketing, Drupal is ahead of the curve as it ensures that a content marketing strategy need not pitch a hard-sell but deliver the right content to the right audience, effectively. With its effective modules, themes and an array of tools that makes content creation, customization and publishing an easy task, Drupal is a dream of every content marketer. Some out of the box features, tools or modules that enable Drupal to perform in a seamless manner are :

  • Field Group
  • Path Auto
  • BigPipe
  • Mail System
  • CKeditor

Performance

Sustaining in a world where every business wants to go online is not an easy task. Add to that the ever increasing demands of the customers, a slight mistake can cause businesses to tumble down the ladder. One such key factor that determines the success of an online business, is its website performance. Website visitors these days are more demanding and less patient to start of with. This is inevitable due to the fact that there are hundreds of options available and a business that lacks technology and a flexible architecture to stay competitive, could prove to be an expensive mistake.

Drupal as a content management system could very well prove to be the solution for a better performing website. Drupal development ensures secure, scalable. modular and a fast efficiently performing website that could be the spear head of a company's success. Drupal with its customization capabilities, is a key resource to help businesses align with their goals resulting in a better ROI for online business.

Track, Study & Analyze

Although it is highly impossible to account for the future scenario, it is always advisable to find ways to atleast take a glimpse at the road and see where you can improve or be careful in order to meet online business goals. This is an important factor for online businesses where risking on the money, time and effort invested can sometimes just go down the drain. But why is it so important to trcak and measure? To establish a base number and then try to improve upon the same. Now its not as easy it sounds. With multiple factors affecting the growth and the success rate, managing various aspects requires a strong hand.

Drupal with its effective techniques to track the performances, enables online businesses to structure their campaign in a better manner and not waste time iin creating strategies and other plans that do not serve the business purpose. Use of certain tracking metrics like the visits, boune-rates, source of the traffic and landing pages allows marketing executives to evaluate the behaviour of their traffic and strategise accordingly.

Digital Personalisation

In spite of the fact that personalisation is considered to be one of the best practices for online businesses, almost a third of enterprise organisations consider it to be of a lower priority. Personalisation basically follows the understanding and behaviour of the cutsomers in order to fulfill their needs. That means knowing where they are, what they do, what they prefer, which includes purchase and behavioural data. Also, it might be concentrated on knowing how they have received a single piece of content. Personalisation provides that additional step, if done correctly, to target specific market and succeed with a better ROI.

Drupal's ability to integrate with digital tools & better the personalisation experience, helps enterprise organisations to deliver relevant content to potential customers. The customized content allows businesses to prove their value and convey the message, thus keeping the customers engaged.

MultiMedia Content

One of the top content driven social platforms, Facebook, is pushing hard towards curtaing multimedia content. It is quite simple these days. Would you prefer spending 10 minutes on reading a blog post or 3-5 minutes watching a video on the same subject? Or perhaps you prefer a visually appealing infographic. Irrespective of what your answers are to these questions, everyone have their own preferences. Some like texts, some people respond to photos, while some prefer videos. As a company fighting for people's attention, multimedia content is a great way to attract potential customers.

With a well-equipped stack of media management modules and tools that make tasks involving media asset management a lot easier, Drupal adds a whole new dimension to how multi-media content is handled on your website. Some of the hand-picked Drupal tools for a better content management are:

  • Media Module
  • Media Entity
  • Scald
  • Asset Module

With a high degree of customization, scalability, better adoption, integration and more, Drupal CMS with its unique capabilities is the perfect choice for enterprises to achieve a better ROI. With its adavnced features that do a great job in attracting and retaining the customers, Drupal platform is quite reliable for businesses across all verticals. Enterprise organizations looking to drive a successful strategy for a higher ROI can depend entirely on Drupal to help them stay ahead of the curve. The best way to do this is to work with a top drupal development company which can understand your online business needs and structure the strategies in accordance to the same.

May 18 2018
May 18
  • By : Ganesh
  • Date :18-05-2018

There is always a benefit in studying and examining some of the decisions that media companies made in the past that portrayed their success or the way they came crashing down the market. For instance, I recently came across this stint by Time Inc where they were leveraging Vignette; a custom CMS created by one of the first media companies on the web, CNET. However by 2011, Time Inc ended up with several complexities with Time Warner division leading to complete spin off from the entity. Time Inc then decided to move more than 20 of their well known publishing brands to Drupal.

The reason I'm talking about this is, the high demand for creating a seamless digital experience across numerous devices and channels has challenged the classic approach of the media industry. The changing technology landscape and the business models have forced the companies to think out-of-the-box to drive customer interaction and avoid competitive differentiation to catch up with them.

In this blog, let us discuss why media companies are shifting over to the open source content management systems like Drupal CMS, when there are literally hundreds of CMS solutions that they have developed on their own. What drives them to adopt Drupal technology and approach drupal development companies to create a better experience? Why are the media & publishing industry opt for Drupal? How will Drupal development affect them? Are there any key benefits?

Content Distribution & Management

An interesting fact that presents itself when we talk about media industry is the need to manage a large number of similar websites that are differentiated by the local media. For example, suppose a particular media company owns several radio stations in multiple cities, then a generic global content is of less importance at such stations when compared to the localized content. This is when companies should break their head on how can they use centralized content sharing to fit their plan.

This is where Drupal CMS plays its part as a highly content driven CMS capable of diverse content publishing, dynamic maintenance and support the various phases of content development and management.

Managing Digital Assets

Media websites are known for the compelling use of photos and videos as a major part of their content, and they face a stiff challenge in forming a strategy for how to deal with this content in the best possible way.

weather.com

As an example, weather.com is the most trafficked Drupal site, serving over a 100 million people every month. They serve content which is unique to each region and each user. Imagine the diversity in their content and the technology required to handle. These digital assets are what runs a media organization and they cannot afford to go easy on their data tracking and handling. Drupal's latest version is the prime example of how good it is as a CMS in managing digital data and ensures that they are not misused.

Rocketing Costs

One factor that has affected the media and publishing industry in the recent times is the rising costs. Most of the enterprise CMS are costly and are not the first bet for the media industry. This means that the open source CMS like Drupal is a better option available to overcome the shortfalls of the other enterprise CMS. Drupal CMS is nothing less than the enterprise ones as it plays a great role in managing the online content with its built-in modules.

Responsive Design & Work flow

A feature that enables Drupal to have an edge over the other CMS is its Responsive Design. With the ability to publish content on any device, resize images without hassle and take care of device orientations automatically, Drupal enables flawless publishing across several devices. This plays an important role in effecting a proper workflow that enables the media organizations to handle content publishing across numerous platforms.

Built-in modules and tools facilitate publishing, un-publishing, archiving and managing the content with a centralized dashboard that analyze analytics and other data to offer a key personalized experience.

The media industry is expected to grow exceedingly well in the next couple of years, especially due to their adoption of technology, and the decreasing paper stocks. Also, the increase in production cost has led media companies to shift to a digital approach. With the incorporation, business needs have changed where broadcast based media consumption is no longer a preferred approach. The consumers need customization and this model is achievable only with a technology that supports this new business model. As a leading Drupal development company , we have been creating Drupal websites to businesses of all verticals, including those from the media and publishing industry.

May 10 2018
May 10
  • By : Ganesh
  • Date :10-05-2018

Today's world is a close reality to something I dreamt of as a child. A world run by devices, the technology they use and their potential to change the future. New interfaces and devices have brought in sweeping changes to transform the web as we know it. With Artificial Intelligence, IOT and more have started to establish and make an impact in the digital world. This impact has changed the way how we perceive a future with seamless, feature rich websites.

However, while the newly web-enabled devices continue to dominate, we have evolved the way we develop for the web. Though the content remains the same, delivering this content differs from one to another based on requirements and complexities. With such requirements, it is tough to stick with the old solutions. This is the reason why in Drupal it was agreed upon that: it was high time to implement front-end frameworks for a better performance. This gave rise to "headless Drupal," an architecture where developers build the front-end on their own without using Drupal.

But how do you pick the right framework? Let us discuss in detail.

Angular JS

The most preferred front-end framework on the list, Angular JS is a developer's favourite when it comes to interfacing with Drupal. It lets them create feature-rich dynamic web applications and allow Drupal to work more efficiently, resulting in a dynamic, secure and a gripping Drupal website. Backed by Google itself, this open source framework allows you to do handle your user's browser without having to fetch data from your server.

Things Developers Love about Angular

  • Extremely light weight and extensible with a wide scope of features.
  • An interactive frame-work, a result of it great functionality like the two-way binding which allows user actions to immediately trigger application objects.
  • Developers love HTML and the fact that AngularJS uses plain HTML templates that can be easily re-used, modified or extended, allows them to build interactive feature-rich web applications.
  • With a client-side nature, AngularJS does a great job in handling cyber attacks as any data looking to breach the security cannot get anywhere near the server.
  • Immense community support which provides answers, tutorials and used cases, with well-developed documentation.

Drupal & AngularJS

With the user expectations growing with each passing day, decoupled Drupal or headless Drupal as it is commonly known, is a norm these days in the digital world. The idea is to take advantage of Drupal's flexibility and powerful back-end capabilities while using a front-end framework to handle the browser end. What better option than the interactive AngularJS to do the talking to the browser while Drupal takes care of the feature filled back-end.

Also, AngularJS does a great job in offloading Drupal from some of its logic and helping Drupal function effectively at the back-end. By moving display logic to the client-side and streamlining the back-end will result in a site which is better and faster.

Vue JS

Created by former Google employee Evan You, this incredibly adoptable JS has quickly gained recognition among developers. A javascript library for building modern web interface, it provides data-reactive components with a simple and flexible API.

Things Developers Love about Vue

  • With a shallow learning curve and a component model, Vue stands on the shoulders of giants to provide benefits of reactive data binding and composable view components with a simple API.
  • A combination of React's best - Virtual DOM and Angular's best - two-way binding, allows VueJS to perform efficiently and improve the performance of the websites.
  • Real-time monitoring of the progress in development with a built-in state management is an added advantage.
  • VueJS follows a component oriented development style with modern tooling and supporting libraries. With a simple-to-use syntax, people who are using it for the first time find it easy to adopt.
  • VueJS is one of the top trending JS frameworks on Github.
  • It is highly supported by an awesome community and adoption within the PHP community which does a great job of maintaining good documentation.

Drupal & Vue JS

Vue allows developers to request and store Drupal content as data objects using the official Vue-Resource plugin.

In combination with Vue, Drupal can exhibit its magic at the back-end while the compelling features of the JS handle the client side. The component system in Vue is one of its most powerful feature that allows large-scale application building which comprises small and self-contained reusable components.

ReactJS

ReactJS is more of a library than a framework, used to build user interfaces that work on a concept of reusable components and aim to solve the issues created by the slowness of the DOM by replacing it with the virtual DOM structure. An open-source project maintained by Facebook, ReactJS is the go-to option for some of the biggest corporations for a fast and seamless client-side user experience.

Things Developers Love about React

  • By nature, ReactJS is very much readable and easy to understand thus making it easier to understand how components render from their source files.
  • ReactJS does a great job in combining HTML and JavaScript into JSX, which is a great asset for developers as the complexity between HTML and JS is eliminated.
  • With Virtual DOM, React can easily process large amounts of data in an efficient manner by monitoring the lightweight virtual DOMs.
  • Rendered extremely fast, ReactJS is a great option to build speedy public facing apps and sites that are smooth and offer a best in class UI experience.
  • A ton of proper documentation, invaluable tools, add-ons and more which are available to developers, courtesy of constant contribution by Facebook towards the development of React.
  • It is highly supported by an awesome community and adoption within the PHP community which does a great job of maintaining good documentation.

Drupal & ReactJS

A hybrid approach to use React for dealing with the UX complexities while relying on Drupal for handling the content can be an added advantage which easily allows consistent mapping of Drupal and React components

With Drupal, one of the major weaknesses that hinder its performance is the way it consumes and displays the structure of content to the end user. This goes out of hand when the user interactions are complex and even the combination of Twig with JQuery is not good enough to match the complexities. However, integration with a modern library such as React provides all the necessary modern mechanisms that do a great job in building seamless, rich user experiences.

End-users are now accustomed to better performing websites and they don't expect anything less than a speedy, interactive website with a rich user-experience. To overcome Drupal's limitation in rendering the client-side, decoupled Drupal was preferred. With the "headless Drupal" approach, the best of Drupal can be experienced without any interruption. These three frameworks are not the only ones available for integration. However, when it comes to the performance of a Drupal website, these three are the most preferred by drupal development companies. Analyze them, match your requirements and then choose the suitable framework to build your business.

Apr 25 2018
Apr 25
  • By : Ganesh
  • Date :25-04-2018

Big brands, high traffic websites and immense customisations are a part of one of the best CMS in the market - Drupal. Catering to diverse requirements and versatilities with ease makes it stand apart from the others. Known for its rich set of features , Drupal CMS is a platform that constantly wants to improve itself by introducing better functionalities in the latest versions for an improved experience. The latest one - Drupal 8.5.0 comes packed with some interesting features and upgrades. This blog talks about these exciting features, updates for developers and more.

The BigPipe Module

Introduced as an experimental module in Drupal 8.1, the Big Pipe module became a part of the Drupal core in its next version, as a stable module. This module which provided an implementation of Facebook's BigPipe Strategy, is one of the first examples of Drupal's approach to shorter release cycles.

In Drupal 8.5.0, this has been made a part of the standard installation profile i.e it is available by default.

BigPipe Module

Stable Modules

There are a couple of other amazing modules which are stable in the latest update.

  • Settings Tray Module: A part of an initiative which allows changing the most common configuration from the Drupal front-end. Which means that it allows content moderation tasks to be taken care of without having to leave the front-end of the website.
  • Content Moderation Module: Defines the different content workflow states, allowing only website editors with required permissions to publish. The module allows you to define the state in which a particular content is placed. It can be a draft, published, unpublished or needs review. Also, you can define the user permissions that are required to move the content between these states.

Experimental Layout Builder

Drupal 8.5.0 sees the introduction of a new experimental layout builder module. Tearing through the myths of Drupal being a complex CMS, this layout builder is a perfect example of how things can get simpler when you use Drupal CMS. The module allows you to edit the layout on the actual page itself rather than having to do it with a separate form, thus simplifying the entire Drupal website design process. Also, there is an added feature that allows you to have a different layout on a per-page/item basis.

Media Module

Having worked over the efforts done on contributed Media Entity Module in Drupal 8.4, The Media API added into the core had its own set of user experience issues. Due to this,the module was hidden from the user interface. Thus there was no way a user could enable or disable the module. In Drupal 8.5, these issues have been taken care of and these modules are now an integral part of the system, ensuring that anybody with the access to module management page can now easily enable or disable the media modules.

Media Module

PHP 7.2

The first version of Drupal to fully support PHP's latest version, Drupal is keeping up with the latest advancements and the array of advantages it holds. With new features and improved performance over 7.1, PHP 7.2 is now being recommended to use with Drupal 8. Also, since Symphony 3.2 does not receive security coverage anymore, Drupal 8.5.0 uses Symphony Components 3.4.5.

Drupal Migrations

A major milestone for Drupal, considering the number of contributors who have worked for over 4 years on closing issues related to the migrate system architecture, it has been rendered stable with the latest release. Additionally, upgrading monolingual sites is now an easy task with Drupal Migrate and Drupal Migrate UI modules becoming stable. Also, incremental migrations i.e working on the website while the content is still being added, is also supported in Drupal's latest version.

Media Module

Drupal for sure is improvising at an exceptional rate and it is reflected by some of the biggest websites online. There is a reason why drupal development companies and the other organizations love it - It is a feature rich CMS that reflects your ideas. Not only does Drupal do a great job to make your business thrive, it enables you to stay ahead of the curve from your competition and find success.

Apr 19 2018
Apr 19
  • By : Ganesh
  • Date :19-04-2018

One of the biggest challenge to medicine is the incorporation of technology in our practices - Samuel Wilson

I recently stumbled upon an article which stated some facts on technology and its impact on one of the biggest sectors in the world - Healthcare. I was taken by surprise to know that a survey which engaged patients of all varieties, stated that two thirds of them had not been in a discussion with the doctors about their own treatment, more than 35% did not have a clear picture about the goals of their treatment, and 20% received a conflicting information from different professionals.

This article was a little old and I'm sure the numbers must have improved a bit over a couple of years. However, the ultimate challenge of achieving an electronic health care system capable of representing and sharing the required information with the patients and within their family has been tackled for quite a while now.

The regulatory environment and the complex requirements faced by the hospitals, medical device companies, and healthcare service providers reflects the dire need of a complete technology makeover. A successful campaign requires systems to manage huge and complex medical information, a focused business intelligence to stay ahead in the competitive market and an IT infrastructure to meet the ever constant customer demands.

Above all, the industry needs something which is much more powerful and intelligent than your average CMS.

Of course there is no "the one and only right CMS" for an industry like healthcare where the options are completely dependent on certain variables based on the requirements. But the open-source Drupal CMS is often one of the top contenders, with Drupal development companies having built some of the top notch healthcare websites.

Drupal for Healthcare Websites

A robust platform with numerous modules for customization, and designed to accommodate innumerable changes, Drupal with its out of the box functionality is one of the most preferred CMS in the healthcare industry in recent times.

The Backbone

There is not much to be happy about the Healthcare IT sector, as the need to opt for a complete technology makeover looks bleak with the decreasing budgets and the increasing requirements. In dire need of user-friendly, human-centric healthcare websites or applications for the patients and the clinical team, Drupal CMS seems to be the best CMS for healthcare organization out there in the market.

Its flexibility allows healthcare web applications to exploit APIs to create fully integrated platforms to improve data flow between multiple systems. This allows you to build new healthcare websites, applications and solutions using the Drupal architecture as the backbone.

Data Accessibility

Data accessibility is one of the biggest concerns in the healthcare industry. With hundreds of patient records, their health history and other important details being accessed by multiple teams, there is a high risk of security, chances of data being misplaced or even exchanged in certain cases. A common flaw in every healthcare system, this affects the workflow directly thus reducing the efficiency.

However, Drupal improves data liquidity and thereby decreases redundant workflows to make data more accessible to the necessary teams in a quicker fashion. This helps them make decisions faster (especially in a critical situation) and also gives them more time and ability to interact with the patients to provide better care.

Caught Up? Not Anymore

As an organization, your requirements are bound to change with time and using a single vendor or a specific web partner can sometimes be a hindrance as this requires migrating to a new platform. And this is a common scenario in the healthcare industry. Fortunately Drupal makes things a lot easier for healthcare systemsor organizations looking too upgrade.

Drupal ensures that if there is a need to switch vendors, migration is not required as there are numerous qualified vendors who support Drupal and prevent you from getting "caught up" with a single vendor.

A Robust Lot

Drupal's robust API integrations can be a huge advantage to the healthcare industry who can benefit by extending your current Health IT platforms without having to completely tear down the pre-existing system and replacing it. This approach not only helps you improve the user-end experience (for the patients and the clinical team) but also saves you from spending some big bucks and reduces IT disruption.

Options Galore

An open framework that offers limitless ability to extend and customize, Drupal CMS is the perfect platform for all types of healthcare websites.

  • With the enterprise level healthcare systems having a global reach, multi-language websites is more of a necessity to drive more traffic. Drupal boasts of an extensive multilingual feature right out of the box with built in translations in the admin interface.
  • Responsive design, with built in themes that follow a mobile-first approach.
  • Easier content management with limited access allotted to users with secific roles to maintain content adherence.
  • Better Integration with third party applications and a wide variety of databases.
  • Built-in SEO tools to guide healthcare websites to the top of Google page results.

With a unique ability to provide a fully integrated, responsive, seamless, intuitive and a cost-effective solution capable of adapting to the constant change in the healthcare industry, Drupal has been a key resource to achieve enhanced experiences while bringing better healthcare for the patients.

While the enterprise Drupal CMS has been a great success and is the first choice for organizations in government sectors, education, and media, it is the robust API capabilities and the extensibility that will help the platform make headlines in the Healthcare system. As a content management system for healthcare, Drupal creates an unforgettable customer experience by leveraging a unified platform for content, community and commerce. As a Drupal development company, we don't see the exponential growth of Drupal CMS in the healthcare sector slowing down anytime soon.

Apr 11 2018
Apr 11
  • By : Prince
  • Date :10-04-2018

As all know, Drupal 8 is API driven first and keeps on adding in new API's which can be altered, extended for different decoupled Applications. When we talk about decoupled Drupal, developers are allowed to use any technology frontend to bring in better User experiences. The actual UI experience is met when we present contents which fulfill the needs and requirements of the user.

Drupal 8 Views

Drupal 8 views are now in the core and are among the greatest features available with Drupal to handle any type of dynamic UI designs to bring in better user experiences. Using RESTful views, we can embed views content to external applications.

In this guide, you will learn how to get the view content in JSON or XML format via Rest API.

  • Step1. Go to admin/modules and enable the required modules available in the core (REST and Serialization).
  • Step2. Next, For testing purposes, you can create dummy content using the existing content types. (Articles or Basic page)
  • Step3. Now, create a view using the available content. We don't need to select a page or block while creating views.
  • Step4. After you have created a view with the required fields, we need to select REST export display from the Add options right of Master display in the views.

Drupal 8 Views

  • Step5. Specify a path for REST export which will be used to return formatted contents of the created view display.
  • Step6. You will also find an option to select the required format (say JSON, XML etc.) that will be allowed in the responses.

That's it, you have the Request URL to return either entities or fields from views. When you try accessing the URL directly on the browser, you will have view exported with the format you have selected or JSON by default. Also, you can test the formatted data using POSTMAN services available with Google Chrome.

Hope, the above steps will help you built REST API using Drupal views. Get in touch with our Drupal developers if you face any queries working with API's. We will be glad to help.

Subscribe For Our Newsletter And Stay Updated

Apr 02 2018
Apr 02
  • By : Prince
  • Date :02-04-2018

Symphony is an open source PHP based web application framework. Symphony uses a set of reusable PHP components to build web applications from scratch. Symphony follows MVC architecture. A kernel is the heart of symphony (Its just a class) and symphony extends this class to in its built applications. Drupal 8 uses some of the symphony core components to extend in terms of quality, scalability, performance, and maintenance.

Core Symphony Components in Drupal 8

1.Http Foundation

We all know that all web application communications happens using HTTP.

Drupal SEO Checklist
web communication

In Drupal 8, when a request is sent from the Web client to the server, it is taken to the front controller (index.php), which in turn sends a request to the handler function. The handler function fetches the results and does the required modifications and responds back to the front controller. From the front controller, the response content is sent to the browser and the request is terminated.

Drupal SEO Checklist
code

HTTP foundation mainly deals with two trivial objects:

  • a)Request
  • b)Response

A request gathers request from $_GET, $_POST, $_SERVER and the response object helps in getting page content & other messages. In Drupal 8, the main support here is to create RESTful API's using the request.

2.Routing

Routing is a controller that processes the above-mentioned HTTP request. In Drupal 7, this was handled by hook_menu functions and in the current version (Drupal 8) it is handled in module.routing.yml file.

example.content:
     path: '/path' 
     defaults: 
      _controller: '_ExampleController::exampleContent' 

In the above example, a route is created with the path (/path) and is mapped to an ExampleController Object and its exampleContent method.

Drupal SEO Checklist
routing

3.Event dispatcher

This concept actually means communicating with all the dependent objects before taking an action.

For example, Let us consider an action node deletion (node_delete). On node deletion action, the event dispatcher needs to check whether any comments are included for the node. If yes, then the node has to communicate with the comment system before performing the action.

EventDispatcher:adding listners

In the above example, the comments are the actual listeners and they register themselves to event dispatcher as listeners. After the comment system has accepted deleting all the comments, the node has to perform delete action.

Event Dispatcher: Event

The above action of letting the listeners know that node is going to be deleted is known as dispatching events.

5.HTTPKernal

HTTP Kernel is the core of Drupal 8 and is extended from HTTPKernelInterface. Drupal kernel is the first object created in Drupal 8. It creates the service container, registers all service providers to the kernel, Handles a request to convert it to a response.

4.Dependency Injection

Symphony uses a service container that efficiently manages the services throughout the applications. This is known as Dependency injection.

In Drupal 8 everything is considered as an object. If you want this object to be available through the applications, then we need to register this as a service in service.yml file. The service container is another object that allows us to create and get services that we already been registered for.

$container ->get('service.name');

Helper components in Drupal 8

1.Serializer

It is the process of transforming objects into specific formats. The formats can be JSON, XML etc. This process of translating data structures can be easily stored and formatted. It is heavily used in Drupal 8 REST API's.

2.Validator

Used for validation of form values based on some rules. It creates constraints for form fields of various field types. For example, validation of a form email field requires validation of its constraints email format.

3.YAML

YAML is the markup language commonly used for storing all configuration. YAML in Drupal 8 is present throughout the system (module.info.yml, services.yml, routing.yml) and views configurations export.

4.Drupal console

Drupal 8 has its own console and can be installed using composer. It is mainly used for debugging and creating skeleton codes for easy implementations.

Some of the common Drupal console commands are:

  • generate:form
  • generate:module
  • generate:controller
  • debug:container

5.Twig Template

Twig in Drupal 8 is a replacement for PHP template engine and is a part of the symphony2 framework. Twig template comes with a wider PHP approach and is most logically suited for Drupal 8 theming.

The Symphony framework consists of various components, some of which have been discussed in this guide. While some of these are vital to the system, the others are just the helper components. With Drupal 8 being more flexible than ever, the open source platform has strengthened its ties with symphony components which play a very important role in determining the direction of Drupal 8 development.

Mar 28 2018
Mar 28
  • By : Ganesh
  • Date : 28-03-2018

Recently, I was looking for a module in Drupal and something just crossed my mind. In the Drupal world, when you are looking out or considering for solutions, the first thing you might hear is, "there is a module for that!". While there are close to just 40 core modules in Drupal, it is the additional contributed modules built by the Drupal community that extends the platform's functionality. And with Drupal 8 (the latest version of Drupal), there is a completely different architecture and modernized approach towards CMS , with a shift towards object orientation to improve the overall efficiency and software quality.

Why do you have to build a module?

A custom module is essentially built to extend the core functionality of Drupal; which by itself comes with built-in set of core modules. However, the true nature of Drupal mainly comes from hundreds and thousands of custom modules developed by the dedicated community.

Regardless of how your experience has been with the previous versions of Drupal, module development in Drupal 8 has its own set of challenges. To give you a fair idea, there are some differences between Drupal 7 and Drupal 8, the key ones being that Drupal 8 requires the latest version of the php5 to run and it uses Symphony, a php framework that relies on Object Oriented Programming. Also, there are changes in the way a module is built and there are certain best practices to keep up with the community standards. Let us talk a bit more about this, and some of these practices for Drupal 8 module development.

File Structure

One of the major things to be aware of, in Drupal 8 module development is the file structure which is quite different from the one in Drupal 7. In Drupal 8, the custom modules built are stored in the /modules directory, unlike in Drupal 7 where this directory was reserved for the core modules. The core modules of Drupal 8 now go into the /core directory.

Next up, to let Drupal know that your custom module exists, you need to create a .info.yml file which provides the meta data. This process is similar to the one used for Drupal 7.

name - This key is to provide a name for your custom module.

type - This key defines the type of the extension (module/theme/profile).

description - This key provides the detailed description about the custom module (displayed on the module list page).

package - This key specifies the package in which the module should be included.

version - Specifies the version of the module.

If your file is something like 'blogexmple_module.info.yml', the syntax will be as follows.

name - Blogexmple Module

type - module

description - A simple demo module

package - Custom

version - 1.0

core - 8.x

Use of Configuration before code

Having to rewrite the code every time you change it is not something which you would want to do. Instead of hard coding a class into a theme, set the values in the configuration and apply it with the code. This ensures easy and faster ways to code and also results in high quality modules. With reusable codes being the norm in writing quality software, configurations in the code ensure advanced functionality and and "easy to modify" features.

Use What Drupal Offers

Once you have built your module, you should know that Drupal comes with various built-in admin functionalities to store and display module data and settings. The module settings page can be defined with hook menu . This hook enables modules to register paths in order to define how URL requests are handled. With the drupal_get_form page callback usage, all you have to do in the callback function is define and return the settings that are to be stored.

Too Many Cooks Spoil The Broth

Having worked on large scale Drupal sites for a long time, Drupal developers would have learn that hundreds of modules can work their magic together to produce an effective large-scale project. But when working on enterprise Drupal websites, it is important to note that avoiding a single poor module has greater effects than avoiding 30 well built Drupal modules (in an attempt to use lesser modules). This too many modules advice leads programmers to favor programming their own modules over reusing modules. The higher the number of custom modules you write for a project, the more work it takes to maintain and modify your Drupal site later. Instead, consider publishing your modules on Github. This allows you to avoid usage of a large collection of custom modules and instead encourage you to create reusable code that has the required configuration.

Environment & Coding Standards

Development environment is an important influence as it ensures that a Drupal project runs without any hassle. Drupal development companies ensure that the entire team works in an exactly same development environment for an efficient work-flow.

While working in such an environment, one of the biggest issues to handle is to make sure that the code is clean and maintainable. Drupal developers need to make sure that their code is readable and makes sense to everyone they are working with. And this doesn't apply only to the team members or to anyone from your organization, but also to the larger Drupal community itself. With community involvement being an essential part of Drupal development and a key aspect in distributed teams working together efficiently, following the coding standards helps in achieving a project's goals and objectives.

Being an open source platform, in a short span of time, Drupal has made tremendous impact on businesses. Many top organizations like PayPal, Tesla and NASA have leveraged the power of Drupal with their modular framework. Backed by a strong community which is constantly improving the platform and extending its core functionalities with new and exciting modules, Drupal has gained a competitive edge. As an experienced Drupal development company or a Drupal developer, you are bound to face some bumps when you get your hands on building those custom modules, and following the above discussed best practices will help you steady the ship.

Mar 19 2018
Mar 19
  • By : Ganesh
  • Date :19-03-2018

In the long run, the world will evolve in computing from a mobile-first to an AI-first approach. - Sundar Pichai, CEO, Google Inc.

While it is quite easy to dream about a "machine first" future, we still know only the tip of the iceberg. Not long ago, people used to have a good laugh about chatbots for their lack of reasoning. After all, many people had no idea what a chatbot was, and little did they know about how Eliza (the first Chatbot) or Parry (the chatbot which simulated a patient with schizophrenia) worked. To them, it was all about a lady at the bottom of a page, giving out dumb responses for their questions.

Over the years, the boom in chatbot and machine learning applications has led to businesses crafting their online presence in the form of websites and using artificial intelligence for a better customer experience. This is not surprising, given the fact that in recent years, chat or messaging has taken over social media to be the "go-to" option for users who want to contact a business.

Technological advancements have provided a new approach to real-time, personalized customer experience by implementing deep learning algorithms, particularly by feeding large data into the bots. However, content marketers over the years have been working to make content behave more like a chatbot. Every improvement in the form of automation, personalization and customization is concentrated towards providing an engaging, tailored-to-specific-needs content for a user.

While many marketers still have a different opinion of bot development being something outside the norms of traditional CMS, businesses have realized the transformative value of chatbots and have started treating them like another channel. A channel to allow continuous flow of content by integrating them with the CMS.

One such CMS that allows seamless integration is Drupal. Its ability to be used as a decoupled CMS makes it the best choice to serve the content of a chatbot's response.

Drupal 8's chatbot API facilitates this implementation of chatbot and surfaces content without having to write thousands of lines of code for every single AI you use.

Understanding Chatbots

Chatbots are no longer the old clunky machines that they once were. The high-end technology has improved the way they work and has allowed them to provide excellent service by solving customer issues, book flights, and even order pizzas. A report by Gartner studied the developments in chatbot usage among businesses and according to the report, 20% of the business content could be machine generated by the end of 2018.

With seamless user experience as a predetermined goal, businesses use chatbots to interact quickly with their audience and make it feel personal and real-time. Thus, the intent of the user is an important factor that they focus on. It defines the range of possible responses that a chatbot can come up with for what the user is looking for.

For example, if the user is looking for an information on movies, he might type:

How do I book a flight to Delhi?

By mapping the exact phrases to specific intents, the AI is able to determine what the user is looking for.

For example, the intent is : How do I fix my Television?

In both of the above cases, mapping can be done using entities such as,

  • How do I book a @means of transport to @place in the former's case, with the entities being the various modes of transports and places fed to the bot
  • How do I @task my @appliance in the latter's case, with the entities being different tasks and list of appliances.

Chatbot API - What does it do?

Drupal as a "headless CMS" should allow you to surface content through the various available AI services such as Google Home, Amazon Echo or other services. Before the chatbot API, each intent required a custom code on each of the chatbots to be used.

Drupal bot
Drupal bot

With Chatbot API, it provides a common layer such that you only need to write your custom code for each of your intent once. However, the Chatbot API by itself does not take care of anything and should be installed only when another module asks for it. These specific modules handle requests and responses on the bot.

Chatbot API
Chatbot API

Technology evolves quickly. Businesses and their customers are unique and the transactions are customized such that chatbots are already personalized based on their function. A Drupal CMS-based bot will transfer your content Directly to mobile apps and other channels and its flexible models will allow you to accommodate your targeting and content reuse cases.Drupal development companies around the world start with the structure, plan intents in advance and build a bot, train it and build content with the intents in mind. The bots are here to stay and its time you feed them with content.

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