Jun 28 2019
Jun 28

Valuable, easy to navigate, useful and (most of all) usable content. This is the criterion that we use for selecting our favorite Drupal blog posts in a month.

And this is precisely what all the pieces of content that we're about to highlight in this post here have in common.

From:
 

  • inspiring lessons learned while working on a specific Drupal project
  • to actionable insights and valuable advice on how to keep up with Drupal's own advancement
  • to highlighted modules, that make the perfect fit for particular types of projects and challenges
     

… each one of these blog posts provided us with content with... an impact.

But let's just get started: here are the 5 Drupal-related blog posts that won the “popularity contest” in our team this month:
 

Kemane Wright, from Texas Creative, challenges us imagine (or to recall) a scenario where we'd need to remove/style a field in a Drupal form.

Say you:
 

  • find one of your forms to be uneccesarily “cluttered” and you just want to reduce the number of fields for the end-user to fill in
  • just want to update that particular fied's functionality (say turn it from an input field into a select field)
  • realize that there's no module available that you could use
     

Next, he reveals and details upon his 2 solutions to this dead-end, both of them applicable to your code directly.

Now, don't expect me to devulge them to you here. Do head to this team's website and delve deep into the enlightening information there.

Another both useful and usable piece of content that we've added to our list of ressources to tap into. And that because we're on a constant “quest” for new ways of integrating artificial intelligence into our Drupal projects. 

In this respect, we're more than grateful to the InternetDevels team for sharing their selection of Drupal modules that are using AI, all while outlining each one's functionalities.

If the topic of using Drupal for AI applications is of a particular interest to you, we kindly recommend you this post, one of the best Drupal blog posts in June.
 

Justin Toupin, Aten's CEO, is altruistic enough to share with us mortals here, his team's discoveries while working on one of their previous Drupal projects.

More precisely, their set of 6 tools to keep at hand when dealing with data-intensive challenges and data visualization issues.
 

With this post, those at ADCI Solutions launched their “Drupal best practices series”.

For us — and particualrly for the front-end developers here, at OPTASY — it turned out to be a true gem, “stuffed” with valuable best practices on how to optimize one's front-end code:
 

  • segmenting code into smaller chunks
  • integrating dynamic imports
  • ...
     

With everyone asking “How do I prepare for Drupal 9?” these days, Drudesk's piece of content stands out as one of the most useful Drupal blog posts of the month.

It lists all the critical preparations and To-Do's to consider for planning properly for Drupal 9:
 

  • from removing all deprecated code
  • to migrating your website from Drupal 7 to Drupal 8 instead of waiting to take the leap straight to Drupal 9, once released
     

The END!

These have been the 5 Drupal blog posts in June that had an impact here, at OPTASY:
 

  • on how we'll be using Drupal from now on
  • on how we'll be approaching our future Drupal projects
  • on how we'll improve our workflow to incorporate the best practices and the useful Drupal tools highltihed in these posts

Photo by Tony Hand on Unsplash

Jun 28 2019
Jun 28

Just imagine: you update content on one of your Drupal websites and content across your whole network gets automatically synchronized! That's Drupal on Blockchain in just a few words...

Say you manage a national library's infrastructure of Drupal websites. One for each one of its local branches.

Now, here's how moving all the user data stored in there from your centralized database onto a decentralized blockchain system would benefit you:
 

  • readers get to validate their own user data since there's no central entity having full (and exclusive) control over it
  • once they've updated their user data on one of the library's websites, it'll get synchronized across the entire network
  • the well-known vulnerability to errors of centralized multi-site structures gets eliminated; there's no longer a centralized database acting as a single point of failure
  • the decentralized architecture speeds up any operation that gets performed across the network
  • you'd avoid scenarios where the same reader enters his login credentials on one of the library's websites and gets asked to enter them, once again, when accessing the website of another library branch
     

And I would also add: increased transparency, lower transaction costs...

But I'd better dive into more details on how Blockchain and Drupal can work together and how you can benefit from the decentralized architecture that they'd put together:
 

1. Blockchain: What You Need to Know About Its Potential

But first, here's Blockchain in plain words:

A decentralized shared system where multiple participants store their data, interact directly with each other, manage and keeping a record of their transactions.

How is it different from the “old” way of managing transactions across a network?
 

  • there's no more a centralized database for storing data and transactions; participants (nodes) store it among themselves
  • … this grants them total control over their own data/created content
  • users involved in a blockchain network get to interact with one another freely, with no need of a third-party as an intermediary
  • it establishes a system of rule-based transactions
  • each transaction — editing, deleting content, etc. — gets documented
  • it enhances communication between nodes/participants
  • transactions get carried out at higher speed and, implicitly, with fewer costs
  • with no central entity as a unique storage source, there's no single source of failure anymore
  • enhanced transparency
     

In short: blockchain enables you to set up a secure and immutable architecture for your network.
 

2. Blockchain and a New Content Distribution Model

“Transparency” is the keyword here. Decentralizing a content distribution platform would benefit both content creators and content consumers:
 

  • digital publishers become the only ones allowed to update or delete their own content
  • consumers pay producers directly for the content they consume (written content, songs, videos etc.)
     

This way: content creators get full control over their own content — there's no platform owner who could remove it to his/her liking — and get paid fairly and in real-time, for each piece of content that gets “consumed”.
 

3. Drupal on Blockchain: Why, How, and With What Costs?

Why would you want to decentralize your CMS — in this case, Drupal — and store your data on Blockchain? 

To answer your question, let me highlight just a few of the inconveniences of managing your content on a centralized Drupal database:
 

  • each transaction is explicit and irreversible
  • it poses a higher vulnerability to errors
  • multiple-user functionality can turn out to be a serious dread
  • the centralized database acts as a single point of failure: if something crashes in there, the whole system is at risk
  • updating content in your database doesn't automatically update it across your entire network of Drupal websites...
     

And how would the 2 technologies work together? Considering the fundamental differences between them:
 

  • Drupal uses a centralized architecture to manage content
  • Blockchain uses a decentralized, middleman-free workflow based on a verification element
     

Before I try to answer your legitimate question, let me ask you this:

Do you seize any similarity between Drupal's “open data” phylosophy and Blockchain's “decentralized data” principle?

Now, here's how your hypothetical “Drupal on Blockchain” architecture would look like:
 

  • it'd be a much more secure, decentralized structure (you'd remove the single point of failure, remember?)
  • since a blockchain workflow would use an immutable validation of data, it'll act as a guarantee that no content can get modified by other than its creator/distributor
  • user data/content would be easily accessible across the entire infrastructure (take the example of an enterprise-level business, running a multi-site Drupal network)
  • … and it'd synchronize in real-time across all your Drupal instances, as well...
  • transactions performed within this architecture would be rule-based: every single content update or removal will get documented
     

“But at what costs?” you might ask. What compromises would you need to make to run Drupal on Blockchain? 

What challenges should you get prepared for?

Here are 2 potential “dares” to ponder upon:
 

  • first of all, integrating your current Drupal data into a blockchain system won't be quite a “piece of cake”
  • secondly, getting the consensus of all the participants (say users whose data would be easily accessible network-wide) is also a serious issue to consider
     

4. Drupal Development Efforts in this Direction: The Blockchain Module

This duo — Drupal and Blockchain — has generated quite a lot of talk these years. And quite a handful of promising initiatives and even prototypes have been presented (integrations with Etherium and bitcoin...)

From all these initiatives of the Drupal community, I've decided to put the spotlight onto the Blockchain module (not yet covered by Drupal's privacy policy).

Take it as a “scaffolding” to support your future “Drupal on Blockchain” architectures. It provides the functionality you need to:
 

  • set up your Drupal installations as blockchain nodes; ”nodes” that are independent, meaning they can get configured independently
  • ensure that your newly set up nodes are compatible with each other
     

The END!

This is the “why, how and at what costs” of this topic. One which has been on the lips (and on the Drupalcon slides) of members of the Drupal community for quite a while now.

What do you think?

Would such a decentralized Drupal on Blockchain architecture suit your own project's needs and constraints? Would you trade your central point of storage for the convenience of automated content synchronization?


Photo by Clint Adair on Unsplash

Jun 23 2019
Jun 23

APIGEE recently announced - from May 31, 2020, Apigee-sponsored hosting for Drupal-based portals will end. The existing customers who wish to remain on Drupal 7 need to assume hosting responsibility, they can either migrate to Drupal 8 or move to Apigee's integrated portal.

 

Those who wish to stick to Drupal 7 developer portals might possibly face challenges. But if Drupal has many security features and remains as one of the most secure Content Management System (CMS), what could possibly be the urgency to migrate?

What are the concerns?

Drupal 7 End-of-Life is Near

The developer portal is essentially a CMS, in case of APIGEE, based on Drupal. As the backend CMS, Drupal provides a core set of features in the form of modules that make it easy for you to build the content, as well as manage, websites.

Developer portals orchestrate API ecosystem which helps developers and external partners to quickly and securely gain access to the tools and information they need to explore, test, & consume APIs.

Apigee supports several developer portal solutions, ranging from simple turn-key to fully customizable and extensible, most if not all were built on Drupal 7. With community focus shifting to Drupal 9 release and end of life approaching for Drupal 7 (November 2021), among other circumstances Apigee will no longer be supporting the D7 developer portals.

With APIGEE support ending in May 2020, Drupal 7 developer portals will face the following security challenge.

 

Drupal 7 Can Put your Developer Portal at Risk


While Drupal also has many security features, security is not about working in isolation.  If one is to secure their digital property from the possible threats, it needs to follow best practices to maintain the top-notch standards.

One of the most important is keeping the core updated.

If you fall a long way behind the latest update, you are opening yourself to vulnerabilities. Let’s know in detail how Drupal 7 can put your developer portal at risk.

1. Doesn’t prevent cross-site scripting

Cross-site scripting (XSS) is a class of code vulnerabilities that allows code to be executed inside your browser without your consent or knowledge. XSS exploits are commonly performed with JavaScript, but Flash, Java, and other similar web programming technologies have been used.

It is one of the most frequent security vulnerabilities, a site owner should be aware of. It can be introduced in custom themes and custom-and-contributed modules. A poorly configured site can allow a malicious visitor to use XSS to change a user's password. Out of the box, Drupal 7 isn’t very effective to identify and fix XSS vulnerabilities.

In Drupal 7, elements like Drupal variables or Ctools exportables are represented as PHP code. This use of PHP input format in the core exposes possible code execution to vulnerability.

Drupal 8, however, filters the PHP input format in the core, manages code in a revision control system like GIT, and protects the code from any possible attack. Configuration Management Initiative uses YAML as the export and import format. YAML files are easy to manage together with your code and is a best practice to check it into a revision control system (like GIT).

2. Exposing session cookies

Drupal 7 stores the session ID and checks directly against the incoming session cookie from the browser. This poses a huge risk as the value from the database could populate the cookie in the browser assuming the session as well as the identity of any user who has had a valid session in the database.

On the other hand, Drupal 8 secures the session IDs against exposures via database backups or SQL injection, encourages serving your entire site via secure channel SSL and no longer strips the www from the session cookie domain.

3. No Automated CSRF token protection in route definitions

Cross-site request forgery (CSRF or XSRF) is a process where a request is made to a site which takes an action when the user did not intend to take that action.

GET requests with configuration change are not protected from CSRF in Drupal 7. This brings all the secure and unsecured requests under the scanner.  However, Drupal 8 makes it easy to specify a route (or system path) require a CSRF token.

4. No Clickjacking Protection

Drupal 7 cannot protect a site from click-jacking attacks wherein forms or links on the site are presented in a disguised fashion on an attacker's site inside an iframe. It cannot block the unauthorized re-use of site content via iframes too. However, Drupal 8 does this easily by sending the X-Frame-Options: SAMEORIGIN header in all responses by default. This header is respected by most browsers and prevents the site from being served inside an iframe on another domain.

Should you Migrate your Developer Portal to Drupal 8?

When choosing a solution, you need to balance your customization requirements against the time and knowledge required to implement your portal. Migrating your developer portal to Drupal 8 will ensure that any investments you make will extend the security of your digital presence.

Have doubts around your API security or want to migrate to Drupal 8 developer portal? Get in touch with our experts. We provide a range of services around API designed with a strategy tailored to your success.

Jun 21 2019
Jun 21

This is no news anymore: preparing to upgrade to Drupal 9 is just a matter of... cleaning your website of all deprecated code. 

No major disruption from Drupal 8. No more compatibility issues to expect (with dread)...

“Ok, but how do I know if my website's using any deprecated APIs or functions? How do I check for deprecations, identify them and then... update my code?”

2 legitimate questions that must be “haunting” you these days, whether you're a:
 

  • Drupal 8 website owner
  • developer currently working on a Drupal project
     

Since the great news of this smooth Drupal upgrade ships with the answer to your “What” question (“What do I do to get my website ready for Drupal 9?”), but leaves the “How” question open:

“How precisely do I check my website for deprecated code?”

Are there any analysis tools available? Tools that you could run to get a thorough and accurate deprecated code report? 

Luckily, there are. And I'll be focusing on 2 of the most effective ones that you should consider integrating into your workflow: Drupal Check and the Upgrade Status module.
 

1. But What Is Deprecated Code? And What Website Elements Should You Audit?

A piece of code is considered deprecated if:
 

  • there's an upgraded alternative for it already available
  • it's no longer in use
     

With this real “dilemma” now solved, there comes another one:

“What parts of my website should I check for deprecated code?”

Make sure you scan your:
 

  • Drupal core
  • Drupal modules
  • theme
     

Note: pay special attention to the contributed modules enabled on your Drupal 8 website; run a deep-scan and, if you get any deprecation warnings, make sure to alert those modules' maintainers to clean them up.
 

2. Drupal Check: Scan Your Database for Any Deprecations 

A handy PHP analysis tool to grab and to run whenever you need to look for deprecated code in your database. 

A command-line tool that Dries Buytaert recommends running the... automated way,  closely integrated into your own workflow. What it'll do is track down instances of deprecated code for you.

Then, all there's left for you to do is to... remove them. And, depending on the context, to replace them with their upgraded alternatives.
 

3. The Upgrade Status Module: Determine Your Site's Readiness to Upgrade to Drupal 9

If the idea of working with a command line doesn't sound too... “tempting” to you, how about adding a user-friendly graphical interface to the equation?

The Upgrade Status module, delivered to us by the Aquia team, lead by Gábor Hojtsy, makes checking for deprecated code a lot more enojyable and intituive, thanks to its admin dashboard.

It's particularly handy if you're a Drupal site owner and not a senior Drupal developer highly familiar with CLIs.

Install it, enable it and use it to evalute your website and to assess to what degree it is ready (meaning up to date) for the Drupal 9 upgrade.

But let's delve head first into details on:
 

  • what it takes to install it properly
  • what parts of your website it will deep scan
  • how you can narrow down its analysis to specific projects only
     

3.1. Use the Composer Package Manager to Install It

Since it ships with its whole collection of third-party PHP dependencies...

Another key requirement to set the stage for the Update Status module is to enable the Update Manager and the Git Deploy modules on your Drupal 8 website.

Once installed, you can access its user interface at /admin/reports/upgrade.
 

3.2. Check Up Your Codebase, Modules and Themes

The great thing about this module is that you get to run your checks right in your admin UI and get a full report.

Another great aspect is that, when it comes to contributed modules, it will provide you any available updates... inline. 

Once it's completed its scan it'll display either an “Errors found” or a “No known errors” message. To localizae the identified deprecations on your website, just click “View errors”.
 

3.3. Run It on Specific Individual Projects, Too

Maybe you don't always need a full check. Maybe you'd like to scan only a specific project that you might be working on, to ensure that it's ready to upgrade to Drupal 9 when due time.

You can do that. The module allows you to cut down the time you'd spend on an uneccessary full-scan by focusing on one target project only. 

Furthermore, to streamline things even more, it enables you to export each deprecated code report individually...
 

4. So,You'Ve Identified Your Deprecated Code: What Next?

In most cases, keeping your codebase up to date once you've detected the deprecated parts is just a matter of replacing those deprecations.

For the other few cases left, you'll need to carry out a more complex refactoring process.

Now that you know which are the tools to use for:
 

… your website's smooth upgrade to Drupal 9 depends on you exclusively. 

On sticking to your own routine of checking up your Drupal core, modules and theme and keeping them up to date.

Image by fajar budiman from Pixabay

Jun 20 2019
Jun 20

What does Drupal 8 do that Laravel does not? What key functionalities, that Drupal ships with, do you need to build from scratch in Laravel? And how would opting for Laravel benefit your specific type of project? In short: Laravel or Drupal 8?

“It's like comparing apples to oranges” some might say since one's a framework and the other one a CMS.

Even so, if it's unclear to you what are their particular use cases and their built-in features, you can't know whether it's a CMS or a framework that best suits your project type, right? That best serves your project-specific needs:
 

  • to be super fast
  • to leverage a solid, off-the-shelf content management system for publishing different pieces of content on the website
  • to feature an easy to scale database
  • to support multisite
  • to tap into robust user and content management features that are already implemented
  • to be built on top of a solid framework acting as a reliable back-end application
  • to leverage a highly intuitive admin user interface
  • to be 101% secure
  • to leverage a mixture of server and client-side logic
     

Now, keep your list of project requirements and constraints at hand to evaluate these 2 technologies' pros and cons against it:
 

1. Drupal 8: Top Benefits, Main Drawbacks, and Specific Use Cases

If a robust user and content management system is critical for your project, then Drupal 8 makes the smartest choice. It's that “thing” that Drupal excels at that, which would take you a whole lot more time to do in Laravel.

And it's not just its robustness that might “lure you in”, but the level of convenience that it provides: a lot of the essential features and functionalities that you might need are already built-in.

Moreover, you can easily manage them and custom-tune them via your admin interface...

By comparison, you'd need to build these functionalities, from the ground up, if you chose to go with Laravel.
 

Top benefits:
 

  • you can rest assured that your website runs on a particularly robust, Symfony-based CMS
  • there's a huge, dedicated community backing it up
  • you get to create various content types, for different parts of your website, assigned with different roles; unlike basic CMSs, that only enable you to write... posts and to create new web pages
  • you can set up different editorial workflows and assign specific user roles, with fine-grained access control
  • you can always further extend its CMS-specific functionalities: extensibility is one of the strongest Drupal 8 benefits
     

Main drawbacks:
 

  • you do need a team of Drupal experts (senior-level preferably) to keep an eye on your Drupal 8 website/app and keep everything properly maintained
  • you can't get away with a “get it up and running and... move on” type of philosophy; Drupal 8 is a more of a long-term commitment: there's always a newly launched promising module to consider adding on, a new update to run...
     

Specific Use Cases for Drupal 8:
 

  • large-scale projects that depend on a robust and reliable content management system; one that withstands an intense, ongoing process of creating, editing and publishing lots of fresh content
  • Laravel or Drupal 8? Definitely the later if it's a multi-site, multi-language web project that you plan to develop; not only that it streamlines content publishing  across your whole network, but it significantly speeds up localization thanks to its server-side caching capabilities
     

It means that no matter the place on the globe where that your users might be located, they get to access your web pages and have them loaded... instantly.
 

2. Laravel: Pros, Cons, and Project Types that It's Best Suited For

Laravel stands out as a highly reputed, powerful PHP framework

If:
 

  • maintainability is one of your biggest concerns
  • you're looking for a robust framework
  • you need to carry out your project fast enough
  • you need a framework that ships with all the latest functionalities
     

... then Laravel is what you need.
 

Top Benefits:
 

  • a fast-growing, devoted community
  • you can easily integrate LDAP authentication 
  • it leverages the Model-View-Controller architecture
  • it's just... fast
  • provides you with a great admin user interfaces
  • it “spoils” you with intiutive, beautifully written code
  • it ships with a heavy “toolbox”: scan through and pick the most suitable one(s) for your project
  • in-built code for social login and sending out emails
  • everything you might need to set up during the development process is right there, already integrated into your code: cron jobs, database queries, routes...
     

Main drawbacks:
 

  • more often than not identifying performance issues isn't that straightforward
  • upgrading to the latest version of Laravel can turn out to be quite a challenge: be prepared for “buggy scenarios” and for the need to rewrite code
  • you can't just jump straight to Laravel: learning the basics of OOPS first things first is a must
     

Specific Use Cases:
 

  • your project needs a back-end application (rather than an off-the-shelf CMS)
  • when the benefits of the MVC architecture (faster development process, suitable for large-scale projects, multiple views, etc.) are critical for the given project 
  • whenever you need to mix the client-side with server logic
  • whenever time factor is the main concern for you: you just need your project developed super fast
     

3. So... Laravel or Drupal 8? 

Now, I'm sure that you already anticipate my answer:

The choice depends strictly on your project requirement and objectives.

On your own hierarchy of priorities in terms of features and functionalities.

And depending on these key aspects, that should be clearly defined, one technology will benefit you over the other.

So... what type of project are you looking to build?

Photo by Raquel Martínez on Unsplash 

Jun 12 2019
Jun 12

Tour and travel business has started to catch up in the digital realm. In fact, it’s growing faster than the total travel market. It is predicted that by 2020, the overall tours and activities segment will grow to $183 billion.

A clear opportunity for businesses in the travel industry.

Despite your services being authentic, not choosing the right technology to back up your digital transformation can make the entire game plan chaotic, tedious, and not to mention a loss in revenue. Drupal is the leading choice in the travel industry (we have some case studies lined up).

Here’s why it can be the right option for yours too.

What Difference Does it Make?

Travel marketers know and as business owners, you too need to understand that in order to deliver value to the customers they need to be invested in the user experience beyond the first click. It’s all about ‘what they want’.

Here’s where the right CMS technology needs to focus on:

Need for speed: More than half of the users will leave a site if it takes more than 3 seconds to load. Your CMS needs to provide you with the ability to track the site speed performance. Further, for mobile sites, the technology needs to be AMP friendly.

Going ga-ga over mobile: Today, 48% of mobile users in the U.S are comfortable researching, planning, and booking an entire trip to a new travel destination using only their smartphone. The CMS should help in making the mobile site an assistive and delightful experience, exactly what customers are looking for

Travel blogging is popular: Consumption of digital travel content sees double-digit growth year-over-year. Not just this, when planning trips, 49% of people look at travel content sites.

Videos on the same hand provide an authentic outlook on the experience and travel vlogging is gaining traction. The CMS should be scalable and help you leverage the power of content.

Layout matters: Travellers’ basic needs have remained the same - they want to experience. A clear and easy-to-navigate layout will help the user get most out of it. Your CMS can help you avoid irrelevant navigation links and nontransactional elements that can be distracting to the user.

They ‘Book’ right now: Any action you want a user to take must be obvious. Use of contrasting colours and fonts for high-visibility should come easy with your themes. Also, most hotel bookings turn out to be last minute, rather than pre-planned which shows how critical is your CTA.

travel-image-srijan-technologies1

Drupal for your Travel and Hospitality Website

Anything travellers expect to accomplish online should be just as easy to achieve. Here’s what Drupal can do.

1.Content Friendly and Scalable

‘Content’ and ‘more content’ has been gaining traction lately in the business shelf space. As consumer expectations grow for more personalized and relevant experiences, travel businesses too are running in for more content.

For travel visitors, a website which offers them a lot of engaging content without encountering many blockers always wins the hearts.

Nearly 9 out of 10 customers tend to walk over to a competitor’s website when your website goes down.


Drupal scales to support the most content-rich sites and experiences. It lets you create every kind of content you want. And it can help you handle it - and ensure your site always runs in turbo mode. As holiday planners throng the internet with their booking during the holiday season, you must be equipped to avoid any unfortunate downtimes.

Besides, it is highly flexible, capable of accommodating and organizing your information into structured blocks for better visibility. It’s WYSIWYG editor is best for easy content adding.

2.Multilingual capabilities

While building content is a good way to start, it needs to reach out to the right audience too. Acting on consumer intent and preference is one of the keys to unlocking growth.

Do you know that your most likely customers can be found in non-English speaking countries - like China, Germany and Hong Kong with a maximum number of international departures? This factor, however, should not be the reason why any person should walk away from your website. .

Drupal 8 multilingual initiative helps you rebuild language support to target an international audience. Providing content translation in an additional 94 languages, the four core modules (Language, interface translation, content translation, configuration translation) make it easy and efficient for a multilingual travel business.

3.SEO friendly features

Once you got your content up on your site, it is important to ensure people can find you on search. Search is, after all, the number 1 channel high-value travellers turn to.

When travellers search with the intent to book, they browse through one to five sites.

srijan-google

You can rock your SEO with Drupal. With more than 20 SEO modules and core features, it can optimize your site without breaking any best practices. Modules like - Path alias, meta tags, Alternate Hreflang Module, SEO Checklist Module, XML Sitemap, Google Analytics, Linkit are easy to get started with.

4.Layout and Navigation

Labyrinths and twisted lanes appeal to tourists and travellers, but the same on your website will not. Navigation must always be easy and intuitive. The whole point of successful UX is to let the visitor easily get the information they want without driving them mad.

Taxonomy in Drupal can help you define tags, tabs and call-to-action buttons helping you highlight the key terms.

Layout builder can help you with your page building capability without restrictions. It is unique in offering a single, powerful visual design tool. Layouts for templated content, customizations in it, and creation of custom pages which are not tied to a content type or

2019-06-12-srijan

Having the ability to customize blocks without the need to code, you can highlight your services, recommendations and offers with different campaigns.

The search functionality is an easy addition for navigation. For travel, it is important that they can look up for their exact needs.

In addition to providing you with an incredible SEO, Drupal has search APIs like Federated Solr and Solr Search. Not only do they provide the user with the easy search but it helps index the content, too.

5. Mobile friendly

People who have negative experiences on mobile are 62% less likely to purchase from that brand in the future than if they have a positive experience. It’s critical to remember that mobile is one big part of the user experience.

percentage-of-smartphone-srijan-technologies

Your mobile version should be responsive without cutting out important information, easy to navigate and demonstrate how you deliver benefit to the visitor.

Drupal 8’s very essence is accessibility because it was made with mobile-first usability. Drupal supports responsive design, best practices, and ensures your users get a seamless content experience every time, on every device.

travel-image-site-srijan

6. Secure payment gateway 

Nothing is more troubling to a visitor than the thought of making a payment which is conned. This can be an absolute deal breaker. Security is therefore very important for your reputation.

Drupal Commerce, supports the core payment API, for a smooth payment collection procedure, through the check out form. It offers you feature-rich payment access, integration with Paypal, Brain tree, Amazon Pay and 106 other additional gateways.

2019-06-12-payment-srijan

Improving Digital Experience and Commerce Platform for TUI India


TUI Group is a multinational travel and tourism company, headquartered in Germany, with presence in 180 countries. TUI India is part of the TUI Group.

We built a new architecture for the website to strengthen multiple functionalities, like integrating the site with Salesforce, PayU, Zomato, and other APIs.

It helped improve user experience with additional features. 

Read the complete case study here.

tui-srija

7. Improve your Marketing

For businesses, it is important to track, analyze the user behaviour and provide them with personalized services. Third party tools such as CRM, Google Analytics, Feedback tools (like hotjar) help get the 'bigger picture' on how to improve user experience and increase conversion rates.

2019-06-12-improve-marketing-srijan

Drupal offers easy integration with enterprise-level CRM modules, ERP systems, social networks, real-time analytics, payment gateways to enhance the versatility of your website.

This ensures that your website visitors can find a solution at each step of their travel planning.

Enabling Cleartrip’s Marketing Teams to Quickly Serve New, Relevant Offers

Cleartrip.com is a travel portal that offers travel bookings for flights, hotels, trains and buses. The company primarily functions in India and the Middle-East geography.

Srijan developed a new marketing portal for them which simplified their process of presenting deals to their customers. We helped them:

*Build ready-to-use templates that help team deployed offers and packages quickly

*Ability to replicate deals across different country domains easily.

Read the complete case study here.

clear-trip-casestudy-srijan

8. Easy website setup with travel utilities

For quick assistance, to develop a travel website, Drupal has BAT.

The Booking and Availabiliy Management Tool (BAT) comes in handy when you want to
provide your customers with facilities for booking and reservation while helping you manage the availability at the accommodation concerned.

An incredible result of the collaboration between BAT and Drupal is Roomify for Accommodation,  which is, in essence, an all-in-one solution for vacation rentals, hotels and agencies with multiple properties.

Besides this, you can use BEE. Yes, the Drupal module BEE - Bookable Entities Everywhere grants the booking and availability features to all node types. And it is built on BAT.

Bon Voyage!

With the capability to build you a website which can be used to plan and execute a vacation, Drupal is a powerful, secure and highly reliable platform. It not only helps you retain customers but also win over new travellers.

With stability and versatility, your website can support a large volume of content, personalize what you offer, and smoothen the workflow reducing any extra work.

Contact our experts for a bon voyage!

Jun 06 2019
Jun 06

“Can I use Drupal for project management?” Definitely. 

Given all its content-oriented baked-in capabilities — file management, version control, easy content creation, and editing — Drupal makes the perfect software for:
 

  • managing your projects the easy and the... smart way
  • streamlining communication among your team members and with your contractors
     

In this respect, Drupal provides its own feature-rich distributions to help you put together your robust setup in no time. “Distributions” that come already packed with a set of useful sub-modules and themes, that all support the core functionality: project management (and smooth collaboration).

And without further ado, here the 2 most popular Drupal distributions for project management and team collaboration for you to evaluate first: RedHen and Open Atrium.
 

Loaded with robust and modern features, this Drupal-native CRM is designed with flexibility in mind. Meaning that it integrates seamlessly with the enterprise solution that you're using (Blackboud, Salesforce) and it supports a wide range of use cases...

And speaking of its functionalities:
 

  • engagement tracking and monitoring
  • data mangement: information about your contacts, the relationships among them and with your own company (e.g. memberships)
  • event registration integration
  • one-page donation forms to custom-tune to your liking
     

As for those many use cases that this Drupal distribution's built to accommodate, let's pick just a few real-world examples:

  • It's the best choice if smoothly integrating your CRM with your other enterprise solutions is critical for you
     
  • It streamlines tracking interactions with your contacts and organizations. Furthermore, since you can easily integrate it with your website, you get to leverage the provided data in order to adjutst the user experience accordingly...
     
  • It allows you to customize it and thus to give it a Drupal-like look and feel: to integrate it with modules like Rules or Views, to go for the same field creation UI etc.
     
  • Is your contacts list a huge one? This CRM comes to your rescue with some powerful baked-in tools: an efficient find-and-dedupe interface, an automated filter built in the UI, that you can use to filter your contacts by specific fields etc.
     
  • It automatically syncronizes data in your Contacts list with any newly updated data on your Drupal Users list
     


In short: RedHen CRM makes one of the top choices when you consider using Drupal for project management purposes. It's a lightwright, self-contained framework, more of a “cluster” of multiple specialized modules:
 

  • Organization
  • Activity
  • Fields
  • Organization Group
  • Dedupe
  • Registration
  • and a few more...
     

Looking for a Drupal-native distribution built around the team collaboration functionality?

One that should be:
 

  • convenientyly extensible
  • “loaded” with robust collaboration and information sharing features?
     

Then Open Atrium fits the profile in the slightest detail.

Built on top of the Organic Groups and Panopoly modules, it's a framewrok flexible enough to support discussion configurations by key criteria like team, project, organization...

And here are some more powerful features worth considering when you're still thinking whether you should use Drupal for project management:
 

  • an access control system, that grants granular control to certain sections of your project
  • a drag and drop layout with plenty of widgets to select from for customizing your landing pages and dashboard
  • file storing and sharing features
  • built-in Events, Files, Discussions, Issue Tracking, Document Wiki
  • an easy to customise, responsive theme
     

The END!

These are but 2 viable answers to your “Can I use Drupal for project management and team collaboration?” type of question. 2 of the options available that best meet some of your main requirements when looking for a project management software:
 

  • to be easy to use
  • to ship with an entire collection of file management and communication features
  • to be flexible enough and allow quick customization and seamless integrations
     

Have you tried other Drupal modules/distributions built around this functionality so far? 

Image by jessica45 from Pixabay

May 29 2019
May 29

May has been most generous with us, no doubt about it: it has "spoiled" us with a heavy load of both useful and usable Drupal content. The community has been altruistic enough to share their “enlightening” experiences of working with Drupal, their discoveries and latest contributions. As for us, we "feasted" on their articles and tutorials, even managed to sync all our personal tops and to come up a unique "best Drupal blog posts” list for this month.
 

Ranging from valuable tutorials to overviews of the latest Drupal releases, to glimpses of these Drupal contributors' hard work, our selection is as varied as it is valuable.
 

Now, in the name of open source we're ready to share our selection with you, OPTASY team's 5 most appreciated Drupal blog posts in May:
 

Drupal 8.7 had just been "taken out of the oven", it was still steamy fresh when the Srijan team published their inventory on its new features and newsworthy updates.

From:
 

  • JSON:API now in Drupal 8 core
  • to the Media Libray module, that grew from experimental to stable 
  • to the "rockstar" Drupal 8 module, the Layout Builder, that turned stable
  • to the newly improved configuration management system
     

... and other upgrades, updates, and newly added features, they managed to include in their post all the "highlights" of this Drupal minor release.

And, most of all, to do it promptly enough to be among the first (if not the first) to share their overview on the release with the world/the Drupal community...
 

Another piece of content that made it to our “best Drupal blog posts” list this month has been Matt Oliveira's tutorial on how to use Laravel's Homestead for Drupal local development.

He first adds some sort of context to justify his choice (since he used to go with Vagrant for his Drupal projects), then he explains, step by step:
 

  • what software you need to install, first things first ( VMWare, a VM provider, Hyper-V, Vagrant, etc.)
  • how to install and setup Homestead using Composer, but only after you've first cloned your Composer Drupal project
  • the command to enter for... launching it, after you've run all the due configurations
     

And his clearly formulated and practical tutorial goes all the way to the cool features that Homestead will provide you with and some useful warnings to keep in mind.

Have you used Homestead for your local development when working on your Drupal projects before?
 

Did the “secure Drupal” frenzy get you, too, last year? Particularly after the Drupalgeddon attacks?

Then you must have rushed to:
 

  • implement all the security best practices out there
  • put up a thick security shield around your Drupal modules and your Drupal theme
     

But did you know how insecure Drupal code even looked like?

And it's precisely this rhetorical question that generated the ThinkShout team's blog post.

They point out that:
 

  • way too many Drupal developers risk to “host” insecure code under their websites' hoods without even knowing it
  • most of us genuinely assume that all Drupal APIs are safe
     

Next, once they point out the issue(s), they enlist several exploitable holes that you could identify in your code, grouped in 3 main categories:
 

  • XSS vulnerabilities when rendering HTML
  • SQL injection risks
  • PHP code issues
     

A priceless resource to keep at hand and to tap into whenever we run our own code review sessions here, at OPTASY. One that we're most grateful for. 
 

It's useful, it's enjoyable, it's packed with helpful tips on both:
 

  • what optimizing images for the web really means; take it as a helpful checklist
  • what Drupal tools to use to... automate the whole process
     

And I'm talking here about the “Configure image styles” feature that enables you to define some sort of “pattern” to apply on all the future images on your website. One already incorporating all the due properties, the right width and height.

About the “Image toolkit” feature, that enables you to easily improve your image's quality. And the list goes on (with the Responsive Images module and so on...)

A way too valuable piece of content not to include it in our “best Drupal blog posts” list.
 

The real challenge highlighted by the Duo team in their post? Drupal site search in case of large organizations.

And their real struggle to look for a solution that:
 

  • would allow users to query across an entire ecosystem of websites and platforms
  • wouldn't put too much pressure on Drupal
     

In this respect, they bring to our attention a solution architected and developed by the Palantir team: the federated search.

Next, they back up their choice with strong arguments:
 

  • it's a robust enough search solution to meet large organizations' needs
  • being a decoupled solution, it leverages Drupal's powerful back-end without putting a strain on its front-end, as well
     

In short: for us, the OPTASY team, this post opened a world of possibilities. What if search in Drupal could be way more flexible, yet powerful enough to meet enterprise-level requirements?

And I'm thinking here of all our clients “juggling” with multiples websites...

 
The END!

These are the best Drupal blog posts on our monthly list. And we have to admit: picking just 5 pieces of content on Drupal was one hell of a challenge.

Photo by Daniel McCullough on Unsplash

May 28 2019
May 28

As a marketer, you want to make sure that the content you create stays with them. But chances of standing out in the crowd are meagre.

Why?

Because

  • there's a lot of content out there on the web
  • you might not know what your visitor is looking for, so you are showing standard content
  • those of your competitors who do know the visitor needs and preferences have already started working on personalization
After all, personalized content does 212% better (Hubspot) than standard. Why should anyone miss it? 

While the value of personalization is clear, the task can be overwhelming to get started with. If your digital property is on Drupal, you can begin with some of the content personalization modules to yield higher ROIs.

But you must know the challenges before conquering them.

The Challenges with Content Personalization

Personalized messaging not only yields higher ROI but gets you more loyal customers. 45% of online users are more likely to shop on a website that shows personalized suggestions.

 

According to a 2017 research lack of resources (42 percent) and research data (23 percent) remain top challenges for marketers in implementing personalization.

Developing Content 

Content is the only component that's hyper-relevant to the concept. Catering a tailored experience means dynamic and coordinate messaging across multiple digital channels. The content cannot be isolated.

Having the right content strategy in place is crucial.  

Adding personalization to the mix, you’re dealing with the need for individualized content that fuels and satiates the psychological wants for different segments and personas.

personalization-srijan

In order to recommend that ebook on DevOps Consulting to a CTO, you need to have the basic content around.  

Gathering the Right Data  

While marketers realize that a data audit is important to understand the users, what remains a challenge is which data to refer to. For an effective implementation various pieces of customer data need to be brought together to assemble a complete view of the customer.

With a larger 'data lake' at work, identifying a single source of customer truth gets tougher.   

A Hubspot research found that targeted and personalized CTAs had a 42% higher view-to-submission rate than the ones that were the same for every user.


Well, it all can start off small with modules.

Content Personalization With Drupal

A big part of improving user experience comes down to validating the content on your website. Drupal already gives us structured content. Further, there is no restriction on which marketing tools you apply as the Drupal managed content can be turned into standardized data sharing formats with its API-first approach.

  1. Taxonomy: Taxonomy is the practice of classifying content. It is beneficial as it helps define the vocabulary for everything from menu and navigation schemes to view and display options.

    In Drupal 8, it is a core module which allows you to connect, relate and classify your website’s content. Taxonomy is important for personalization as it helps build associations between your personas and the personalized content you’ve created.

    It enable native or third-party personalization tools to identify and pick the right content to showcase to the right user. 

    This is most effective for making intelligent content recommendations content to the visitor. The vocabulary ensures your targeted persona is seeing all the content that's contextually relevant to their historical behaviour on your site.

  2. Smart Content Module: Moving a step beyond taxonomy, you would want to display targeted content that speaks directly to your prospect, to tip the conversion scales. The Smart Content module, can integrate with any data source to help you deliver segmented content based on industry, buyer stage, location or other crucial segments.

    Drupal_SmartContent_srijan
    The module is most effective in conjunction with Smart Content Blocks and Smart Content Segments.

    1. Smart Content Blocks allow you to insert a Smart Block on any page in order to hide/show/swap content within that block, based on the conditions set. They can be added anywhere that traditional content blocks can be placed.
    2. Smart Content Segments allow you to create, save and manage sets of conditions, called segments. Smart Blocks can use any segment(s) to display the corresponding content. For example, conditionally displaying a Smart Block if it's the user’s first time on the site or conditionally displaying a Smart Block to a mobile user.
  3. Acquia Lift: Providing a suite of tools for content personalization, Acquia Lift helps you create contextual digital experiences. It merges content and customer data into one tool, empowering organizations to deliver the most cohesive and personalized experiences across multiple channels and devices.

    Among its other features, Acquia Lift includes content syndication giving organizations the ability to use content from anywhere to personalize across any digital platform, including Drupal and non-Drupal sites.

    Image result for Acquia Lift logoIt has functionalities like drag-and-drop user interface for targeting messages, syndicating content, behavioural targeting, A/B testing, unifying customer profile, and combining anonymous and known online visitor profiles.

    With the ability to target audiences in real-time, marketers can scale their web personalization efforts in order to drive conversions and bottom-line results.

    This gives digital marketers more control over automation, testing and measurement of marketing activities.

Wrapping Up 

At the enterprise level, Drupal has personalization tools and features built right in. So you can show the most relevant message to each of your visitors.

And while setting up personalization can look daunting, Srijan is always at your service to realize your digital business goals. Our work with one leading US media conglomerate and Estee Lauder is a testimony of our customer service and expertise in Drupal. 

Looking to enhance your customer experience and drive more conversions? Speak to our team of experts to explore how to get started. 

May 24 2019
May 24

What makes the Cache API in Drupal 8 any better than Drupal 7's cache system? What's so revolutionary about it? Which of the old limitations does it remove? What are those new concepts and terminology that you should learn about?

And, most of all: how complex is it to set up a cache in Drupal 8 for a specific use case?

You might have already bumped into terms like “max-age”, "context cache" or "cache tags".
 

But how precisely do these new concepts, part of Drupal 8's cache system, refine and streamline the way you cache data on your website?
 

Let's try to demystify the terminology of Drupal 8's Cache API and to translate its new “fancy” terminology into... crystal-clear benefits for you:
 

1. What Is Caching More Precisely? Why Do We Cache Data?

To your “What” question I'd answer:
 

Caching is a... strategy (or layer) for storing data from your website. Or: it's a software or hardware component where you store your data. 
 

Both definitions are equally accurate.

Why would you want to store your data?
 

Because this will streamline the way your website serves all future requests for that cached data.
 

And it goes without saying that reading data straight from the cache takes less time than... retrieving it from a slower data container or fully recreating the result.

In short: caching data translates into faster page load time.


2. Cache API in Drupal 8: The Automatic Cache System

A brief, yet accurate definition of cache in Drupal 8 would be:
 

Storing data that takes too long to load.
 

And if I am to detail it a bit I'd have to add that:
 

Caching can be either permanent or time-limited you'ree to cache any type of data on your website.
 

Now, talking about Drupal 8's cache API, what everyone points out is that: it is much improved. That it's so different from the cache systems of the previous Drupal versions that... you even risk turning your website uncachable if you're not familiar with its new concepts.

“But how different/sophisticated can it be?” you might ask yourself.

Before we delve deep into details let me add just one thing:
 

We're talking about an... automated cache system. Basically, your Drupal 8 website retrieves cache data for both anonymous and logged in users with no configuration whatsoever. All by default...
 

And now, let's shed some light on all these new fancy concepts that the Cache API in Drupal 8 is based on:
 

2.1.The Cache Tags

We all do agree that “invalidating cache” is one of the most challenging tasks of any cache system.

Luckily, not anymore. At least not in Drupal 8, where you now have the concept of “cache tags” that you can use for tagging:
 

  • specific pages
  • specific page elements
  • various types of content
     

… and thus invalidate them all. Improved efficiency and high accuracy through... basic tagging.

Basically, using these cache tags you can easily identify outdated data stored in multiple cache bins and... invalidate it.

This way, you no longer run the risk of invalidating “still green” cache items, in bulk, not knowing which data to invalidate.
 

2.2. The Context Cache

Here's an all too common scenario:
 

You're faced with multiple variants of the same data; only one of them should be cached, based on a specific criterion like language, user, country, content access permission...
 

Well, how do you automate targetting the right variant to be cached? And how do you automate caching the other left variants, as well, depending on the... context.

You use “cache contexts”, that's how...

They're one of those new remarkable features that the Cache API in Drupal 8 ships with, that allow you to specify the criteria to be used for the cached content on a page to vary. By user, by language, by country, by path...
 

2.3. The Max-Age (The Cache Duration)

Maybe you don't want certain data to be forever cached. Maybe you need it stored for a certain period of time only.

In this respect, the “max-age” property in Drupal 8's cache system allows you to define that time limit. To invalidate data that will have run... out of time.
 

2.4. The Bubbleable Cache Metadata

What does this even mean “cache metadata... bubbling”?

Let's take this example: 
 

You have a parent item with its own “family” of... children items. In this context, “bubbled tags” makes it possible for the parent item in this render array to receive cacheability metadata from its children.
 

Bubble cache metadata streamlines the whole process of invalidating... outdated cached data. As simple as that...
 

The END!

Is it any clearer for you now what makes the Cache API in Drupal 8 so... powerful? How its new features come to remove most of the limitations that you've already faced in Drupal 7?

And how you can use them to refine and automate caching on your own Drupal 8 website?

Image by Pexels from Pixabay  

May 21 2019
May 21

To keep up with consumer demand, businesses need to tactically rethink and reform the way they produce and manage content. 

What you need is a way to stand out in the consistent content chaos. To make that happen, you need a strategy that can help:

  • push out content intuitively
  • transform disorganized assets into a comprehensive manner
  • manage real-time collaboration effectively

And that’s where the role of a CMS is important.

Here’s a comprehensive guide to building the right content strategy with Drupal, focusing primarily on the technological aspect, which will help you build and establish the right notes with your audience.

You Need to Have a Content Strategy. But Why?

With an increase in the number of content dissemination channels, it is easy to lose consistency and easier to lose track of the larger goal.

“Pushing out content without being focused on the goal, its relevance, distribution, or the target audience is a waste of time and money – even if your content is amazing!”

The 2018 Demand Gen Report revealed that buyers are becoming more discerning and selective in the content they decide to consume. 88% agree that content producers need to focus less on product specifics and more on the value that can be brought to their business.

Infographic with three hexagons and text on it on a blue background

These key findings from the audience can be harnessed only with a well-designed content strategy. Which means by doing as little as creating a persona you get ahead of 58% of your competition (2018, CMI Report).

According to the same study, a whopping 97% of top performing B2B marketers have a content marketing strategy, while 32% of (overall) B2B marketers do not have a documented plan. In most cases, this means that they really have no clue what they’re doing.

Some of the benefits of a digital content strategy are:

  • Aligns your team with the organization’s mission/goals
  • Helps you figure out which types of content to develop and which will work
  • Keeps your team focused on priorities
  • Helps you allocate resources for better results
  • Clarifies your target audience/s

Building Content Strategy With Drupal

Traditionally, the content strategy involves planning, creation, and governance of content. However, with an explosion of channels and proliferation of new devices, content strategy can not be limited to just website content.

One of the challenges is to remain engaging yet relevant on different channels.

This can be solved by bringing uniformity and consistency across the various touch points from which a user can access information and engage with the content.

“The goal of the content strategy must be to strategically fit the reader into the marketing funnel”

Drupal’s dynamic features at the core make it a perfect fit to cater to the needs of creating great digital experiences. Here’s how:

Unifying the Content Strategy Across Channels with Drupal

Content Governance

Often neglected, content governance is a detailed framework of content delivery and management which ensures consistent brand storytelling across all media.

Implementing a content governance framework requires different users (from the same or different teams) to collaborate with a distinct workflow and audit trail effectively. In the face of exponential growth in the variety and volume of content,  Drupal helps manage, organize, and secure the content with Workflow and Staging. 

Since editing the content on live site can also result in accidental publishing, Drupal’s Workflow module provides a separate staging environment . Drupal has an easy staging and preview of content in different environments anchoring full content staging capabilities.

You can define multiple workspaces such as "staging" and "live" which are copies of your site, to create content (or modify) and the changes are visible only within that workspace. Once the changes have been verified, you can "deploy" the content to another workspace.

User, roles, and permission: Security is important and that is why not every user can have permission to access the system of the website. Drupal offers a number of security modules which help manage and secure backend access. 

With User Access Control, site administrators on Drupal can work to provide unique user experiences and different access rights to writers, editors, marketers, and site visitors.

The Workflow module helps in creating arbitrary workflows and assigning them to entities. That's  important from a security perspective too. Workflow with the states like Draft, Review and Published can be assigned to Story node type.

Thus, only the users with ‘Editor’ permissions can set stories to the published state.

Some of the other Drupal modules which can be used are:

  • Workbench Access module: helps in creating editorial access control. Admin can grant access to the users and their content which can be found at My Workbench on Homepage. It harnesses content-focused features in one unified user interface.
  • Domain Access module: allows you to share users, content, and configurations across a group of sites.

Enterprise-wide password control systems

Password security is even more crucial and needs the right kind of strategic perspective with strong policies.Default password management could be considered good, but of course, it can be improved. Here’re some of the Drupal security modules that can be used to provide additional controls for password management:

  1. Password Strength: provides realistic password strength measurement and server-side enforcement for Drupal sites using pattern-matching and entropy calculation.
  2. Password Policy: provides a way to enforce constraints which must be met before a user password change will be accepted.
  3. Restrict Password Change: Adds a new permission 'change other users password'. When the user_profile_form is loaded it checks to see if the current user has the proper permission or if they are editing their own account, otherwise, it removes the password change option.
  4. Login Security: Login Security module improves the security options in the login operation of a Drupal site. By default, Drupal introduces only basic access control denying IP access to the full content of the site.
  5. Shibboleth Authentication: Provides user authentication as well as some authorisation features.
  6. Flood Control: Add an administration interface for hidden flood control variables in Drupal 7, like the login attempt limiters and future hidden variables.
  7. Secure Login: Ensures that the user login and other forms are submitted securely via HTTPS, thus preventing passwords and other private user data from being transmitted in the clear.

Digital Asset Management System: An important part of the governance is business workflow and common identity, which is significant for the smooth functioning of marketing. The CMS needs to provide the ability as a solid repository while also able to modify uploaded digital assets.

It should give editors the ability to make iterative changes to assets to enable promotion of products and brand across channels and devices. Digital Asset Management (DAM) smartly strategizes the way enterprises handle their digital assets.

The Acquia DAM Connector can sync your digital assets with your Drupal website, allowing editors to seamlessly use content from within all the websites you maintain. In order to ensure that the site is using the latest version of an asset stored, it periodically syncs assets from Acquia DAM via a cron job.

It also empowers editors to select Acquia DAM assets directly through a media field or through the WYSIWYG integration. Further, it enables the user to view asset metadata directly in the entity browser without importing the asset and provides a usage report of assets within Drupal.

“In the digital landscape, the creation of digital assets in large numbers is almost inevitable.”

Backup: Writing content is an intensive exercise. And so you need to have a backup to save yourself in case the website system crashes or is hacked.

Backup and Migrate: Back up and restore your Drupal MySQL database, code, and files or migrate a site between environments. Backup and Migrate supports gzip, bzip and zip compression as well as automatic scheduled backups.

Content Modelling with Drupal

Before you start building the site it is important to consider your content as a whole and work out a model that will guide you and the user to smoothly navigate through the website.

It entails detailed definitions of each content type’s elements and their relationships to each other. It also helps to identify the organization’s requirements, develop relevant taxonomy that meets those requirements, and consider where the content blocks and fields should be allowed or required. 

Content modelling is a critical starting point for website content.

Drupal is an incredible CMS for building a content-rich website. Built on its entity system and the variety of field types, Drupal can support a wide range of content models.

At core, it is built on View which can help sort out the default taxonomy/term view however you want. Let’s you want a way to display a block with the X most recent posts of some particular type.

It can be used for anything that handles the display of views, and the core Views UI module permits you to create and edit them in the administrative interface. When you define views, you are interested in taking data from your website and displaying it to the user.

Breaking content types into fields, it allows you to build structured content as well.

Modules like Paragraphs and Stacks let you build rich and dynamic content.

Layout Builder, a stabilized module, in Drupal 8.7, empowers you to build layouts with ready-to-use multi-column layouts and Drupal blocks without the intervention of a developer.

It is unique since it can support multiple and different use cases from templated layouts applied to dozens of pieces of structured content, to designing custom one-off pages with unstructured content.

Here’s how it can be used in three different use cases:

  1. Layouts for templated content: The creation of ‘layout templates’ can be used for a specific content type. Example, blog posts.
  2. Customizations to templated layouts: Can customize the layout templates on a case-by-case basis. Example, to override the layout of a standardized product page.
  3. Custom pages: The creation of custom landing pages which are not in sync to any particular content type or structured content. Example, a single ‘About us’ page.

The Layout Builder is more powerful when used with Drupal's other out-of-the-box features such as revisioning, content moderation, and translations.

Omnichannel Content Strategy with Drupal

Users are always at the centre. Therefore, the content strategy needs to be as dynamic as your user experiences across different channels, if it is to succeed. Omnichannel content strategy is a way to unify the experience across all the channels and touchpoints.

Irrespective of how and where the content/ products are being first consumed at, complete consistency and unified experience is expected.

API First Publishing with Drupal

Drupal 8 is API-first which means, it can power ambitious applications of all kinds, from behind-the-scenes systems written in languages like Python, Java or Go to rendered experiences using the latest frontend frameworks, like React, Vue and Ember.

Content touchpoints are proliferating at a fast clip. You now have conversational UI, digital signage, medical and healthcare devices, and it lets you integrate with other systems, use your content anywhere, display it as you please. API-First Drupal is well positioned for entire digital ecosystems.

[embedded content]

The JSON:API module, which is also now in core with Drupal 8.7, is meant for creating high-performance APIs to expose Drupal data in JSON. It works by creating API endpoints and requires no configuration and the module instantly accesses all Drupal entities.

It not only provides a great authoring experience but also a powerful, standards-compliant, web service API to pull that content into JavaScript applications, digital kiosks, chatbots, voice assistants and more.

This makes it easier for Drupal’s core ecosystem, of web services responsible for third-party content and application, to integrate.

Mobile-first and Out of the Box Responsive

Accessibility via any device needs to be useable too. Drupal 8 has been designed with a mobile-first strategy. The responsive design ensures that content and layout are scaled based on the viewport size available.

With  Breakpoint and Responsive Image, out-of-the-box Drupal 8 ships with two modules that ensure mobile-first behaviour .

Responsive content needs to be modular and readable so readers can easily consume it.

Drupal for mobile lets you easily define different pieces of content for different devices. Each field in the backend can be uniquely styled and prioritized according to its content type.

Personalization with Drupal

No matter how good your content is, no one will bother to read it if it doesn’t talk to them, in their own language. Every content piece needs to communicate with your audience and increase the relevance of product proposition, by addressing their unique fears, needs and desires.

This orchestrates customer experience and drive engagement.

Personalization brings familiarity, which brings strength to customer loyalty to your brand, helps track demographics and behavioural patterns and convert an anonymous user into a potential customer.

Acquia Lift solves the challenges for digital teams, by bringing together content and user profile data from any source to personalize the customer journey in ways not previously possible. More than a headline swap or banner choice, Lift presents wholly targeted experiences based on broadly observed visitor behaviors as well as specific user preferences and interactions in real time with the very first engagement across any device or channel.

“And 81% of B2B Marketers (2018, CMI Report) believe that building a content strategy makes it easier to determine which types of content to develop.”

Drupal in Other Marketing Technology

New technologies like artificial intelligence (AI), machine learning, Augmented Reality (AR), Virtual Reality (VR) among others are reshaping how users consume content. It’s a big opportunity for companies to produce and recycle the same content through different channels and mediums. All the while keeping people engaged.

Virtual Reality

Immersive experiences created by virtual reality is the “Next Big Thing” happening. Virtual reality has seen a surge lately, with constantly emerging in Gartner Hype Cycle. While it is rapidly approaching a much more mature stage, in the enterprise sector, virtual reality has already lots of scenarios where it gets employed with success.

For instance, educational purposes. VR can enable a lot of more experiences that in reality are not possible or too dangerous.

Here’s a demo video of a high school student, Jordan who explores Massachusetts State University (a fictional university, built on Drupal) from the comfort of his couch. Jordan is able to take a virtual tour directly from the university's website.

[embedded content]

 
Augmented Reality

Another part of the futuristic technology, AR can be used to superimpose useful information in a shopping experience.

[embedded content]


The demonstration shown in this video displayed a shopper interacting with the AR application. The mobile application of Freshland Market (a fictional grocery store), built on Drupal 8, guided the shopper through her shopping list.

Wrapping Up

Often, it can be a virtual nightmare for content producers and marketers trying to find the right piece at the right time. Even so, if the content is all in one place, time-consuming complicated systems can mess up really bad.

Drupal 8 provides a perfect foundation for the incorporation of technologies to enable a smart strategy for your brand, content, and digital marketing needs. Your organization might be at infancy or already up with your content strategy, you can always reach out to our experts who can help you deliver quality results with personalized experiences.

May 19 2019
May 19

While upgrading to the latest version is always part of the best practice, the process can be staggering.

Drupal 8.7 is already here and 9 will be released in a year, in June 2020.

Although a lot of discussion is happening around the upgrade and possibilities it brings along, the final product can only be as good as the process itself.

The good and important news is that moving from Drupal 8 to Drupal 9 should be really easy — radically easier than migrating from Drupal 7 to Drupal 8.

As a site owner, here’s what you need to know about the new release and what to take care of to make the process easier without many glitches.

The Drupal 9 Release and Timeline

The goal of Drupal 9 is to make it an easy upgrade as much as feasible from Drupal 8. Unlike most of the previous upgrades, D9 will be different in terms of:

  • Updates of dependencies to versions that stay supported.
  • Removal of our own code that we deprecated with removal before Drupal 9's release.

The new release will be a cleaned-up version of Drupal 8. Built on the same code base with deprecated code removed and third-party dependencies updated, Drupal 9 is not a reinvention of Drupal.

a horizontol table with Drupal versions

The next question is what happens to Drupal 7 and 8, then?

One of the major dependencies of Drupal 8 is on Symfony 3. Since Symfony 3 enters the end of life in November 2021, Drupal 8 support will be lifted around the same time. A long-term-support (LTS) minor release of Drupal 8 will be released alongside Drupal 9 and supported until November 2021.

No new features will be added to Drupal 8 and no new minor releases will be made available of Drupal 8. It will only receive patch releases after which.

Drupal 7 will also stop receiving community support after November 2021.

Data migration features in Drupal core to move from Drupal 7 to Drupal 9 will be active until then since they are required for a stable migration. 

The Upgrade and The Tips

The only caveat is that you need to manage is the "deprecated code". Here’s what you need to take note of, for an easiest upgrade experience to Drupal 9:

Text on left with a blue table in centre and left

  1. Keep Core Up-to-Date: As mentioned above, Drupal 9 is Drupal 8.9 - deprecated parts plus dependencies updated.

    If your site doesn't use deprecated code that is scheduled for removal in Drupal 9, your upgrade to Drupal 9 will be easy. In fact, it should be as easy as a minor version upgrade (like upgrading from Drupal 8.6 to Drupal 8.7).

  2. Keep Modules Up-to-Date: Although Drupal 9 will not have new features (other than those provided by updated dependencies). While most modules will improve Drupal 9 compatibility, to ensure you don’t lose them in the upgrade, keep them updated.

    The key benefit of Drupal 9 over previous versions is that the platform will be supported with security fixes much later after support is lifted from 8. For contributed modules, the pace of Drupal 9 updates will depend on the module maintainers.

  3. Check Custom Codes for Deprecation: In case of any custom code on the site, you can use the deprecation checking and correction tools and fix issues locally. Tools you can use to check code depreciation:
    1. Drupal Check (read more her about PHP version compatibility check
    2. Rector (Read more about Rector here)

      Further, you can also use an IDE or code editor that understands deprecations (@deprecated annotations particularly) or Drupal 8’s branch of Upgrade Status for full site reporting.

What is Deprecated Code?

Deprecated code is referred to as the functions and API’s which are being replaced with new and better versions. In the journey from Drupal 8 from Drupal 9, you will experience API changes, with the new implementation is already present in core along with older one. We have to replace older code/API usage with the new.

Here is an example of the deprecated function:

* @deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. * Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. */ function drupal_set_message($message = NULL, $type = 'status', $repeat = FALSE) { @trigger_error('drupal_set_message() is deprecated in Drupal 8.5.0 and will be removed before Drupal 9.0.0. Use \Drupal\Core\Messenger\MessengerInterface::addMessage() instead. See https://www.drupal.org/node/2774931', E_USER_DEPRECATED); $messenger = \Drupal::messenger(); if (isset($message)) { $messenger->addMessage($message, $type, $repeat); } return $messenger->all(); }

In above example the function drupal_set_message is deprecated and has to be replaced with:

\Drupal\Core\Messenger\MessengerInterface::addMessage()

Ways to Find and Fix Deprecated Code in your Drupal Project

As mentioned above , you can find and fix your deprecated code in the following ways:

  1. Drupal Check: It's a library developed by Matt Glaman. Check the git code here. For installation and usage, you can refer to the readme. 
    In case you want to install using Composer, prepare using composer global require mglaman/drupal-check. You can also read more about the composer check
    1. Get into your project/Drupal root directory
    2. Choose the module you want to check for deprecations
    3. Run drupal-check --help for help items. Here, I am using watchdog_prune module for demonstration.
      run : drupal-check -d watchdog_prune
      The output will be something similar to the image shared below:

      deprecated-code-1-srijan

    4. You will, now, have the report of deprecated code to fix.
    5. Let say it is giving us File src/Form/WatchdogPruneSettings.php containing issue : Call to deprecated function drupal_set_message(). In this case just navigate to the body of function as in this case drupal_set_message()

      You will notice that the the documentation under red box reads that the function is deprecated and what we need to do instead
       
       

      Now replace the current code with the recommendation and you are done.

  2. Drupal Upgrade Status Module: This module checks the list of projects you have installed and shows their availability for newer versions of Drupal core.
    1. Use the Upgrade Status module form
    2. Download and install module using composer: composer require drupal/upgrade_status
    3. Install the module and navigate to URL using admin user: /admin/reports/upgrade
    4. You can run a complete project/ individual module scan
    5. Fix the deprecated code in the same way as mentioned above.

Wrapping Up

Because Drupal 9 is an extended version of Drupal 8, for site owners, this means that it should be much easier to upgrade. But keeping custom codes and module updated needs to be meticulously planned.

Have questions around Drupal 9 upgrade and how it might impact your site? Experts at Srijan are all ears, connect with us to chalk out the right course to Drupal 9.

May 07 2019
May 07

Looking for a Drupal 8 rating module that should be:
 

  • easy to install
  • easy to configure
  • easy to use
  • conveniently flexible
  • and user-friendly?
     

And maybe you “crave” for some nice-to-have features, as well:
 

  • enabling users to add a short review
  • multiple ratings: enabling users to vote on several aspects of your product/service, such as price, quality, ease of use?
     

What are your options? What working (and stable) modules for rating and reviewing are there in Drupal 8? 

We've done the research for you, evaluated all the modules for rating in Drupal 8 and come up with a list of 6 best... rated ones:
 

Keep in mind that this Drupal 8 rating module doesn't provide a voting mechanism, packed with all the key voting features. Instead, it structures the voting data for other rating modules to leverage.

What it does provide you with is a standardized API and voting data storing schema. Therefore, it streamlines the whole process of retrieving and organizing the voting results for various pieces of content on your Drupal 8 website.

Top features:
 

  • multi-criteria voting
  • caching the voting results (and it does that in a highly efficient manner, with no need to recalculate them...)
  • enables users to rate any type of content on your Drupal site (users, comments, nodes)
  • automatic tabulating of the voting results
     

Note: keep in mind that, for now, we only have a pre-release version of the module for Drupal 8...
 

2. Flag Rating, A Highly Popular Drupal 8 Rating Module 

An extension of the Flag module, that allows you to either:
 

  • use the default SVG icon 
  • upload your own icon (jpg, SVG or PNG) for each flag
     

Drupal 8 Rating Modules- Flag Rating

Furthermore, you even get 2 templates to override to your liking:
 

  • flag-rating.html.twig
  • flag-rating-icon.html.twig
     

A Drupal 8 rating module that you can use to turn the “select tag” option of the Star Rating module into a more user-friendly, clickable icon.

Drupal 8 Rating Modules: Star Rating Form Display

To “unlock” its functionality just:
 

  • navigate to Structure > Content type
  • select the “Manage form display” option
  • scroll down to your star rating field
  • click “Star rating clickable”
  • in the Settings screen, configure the custom display to perfectly fit your needs

If you're looking to integrate a voting functionality exclusively for the authors of the articles submitted on your website (hence, not for the end users), Flag Rating is the module you're looking for.

Drupal 8 Rating Modules: Star Rating

Take it as a simple, yet useful module that provides you with a display formatter and a star rating field. In short: with the “bare necessities” for the authors to be able to rate the uploaded articles.

Say you have a review website — a hotel review website — and you want to add multiple star ratings to a node:
 

  • customer service
  • en suite and private facilities
  • food, etc.
     

... with a different icon for each node. Then, you just need to use the star rating field that this module provides...

Top features:
 

  • built-in support for the Views module
  • it doesn't require other modules (e.g. the voting API module) to work
  • it allows you to add a different icon type per field and per view mode
     

The Drupal 8 rating module that simplifies the entire voting process: it encourages users to express their votes through an intuitive thumb illustration.

Drupal 8 Rating Modules: Vote Up/Down

Top features:
 

  • code voting support for your pre-defined products/services
  • interchangeable themes for your voting widget
  • the possibility to set up your own custom widgets using ctools plugins
     

The END!

These are your 5 best options when it comes to working Drupal 8 rating modules that should be both easy to configure and easy to use. 

Have you discovered another way of integrating a reviews feature to your Drupal 8 website?

Image by mohamed Hassan from Pixabay  

May 01 2019
May 01

Web development has moved forward from writing websites by developing codes to a place where people can assemble the websites. And that is where the Drupal community is focusing on to advance - building assembled web experiences.

Drupal 8.7 releases today, on 1 May. It is in sync with that same roadmap (building assembled websites) providing enhanced customization, stable features, better UI and what not?

Here’s a quick and comprehensive guide for you to track what’s new in version 8.7 and how it paves the way for Drupal 9.

Drupal 8.7 Features and Updates

This is a significant update. It brings with it a stable Layout builder and Media Library, JSON API at the core, tour integration, seamless working of Content Moderation and Workspaces together, and a continued stabilized migration path.

Drupal 8.7 update retains the relevance in the emerging world of web technologies and competition. Riding on its API capabilities, new changes are aimed to be user-friendly.

Here’s a look at the host of features it brings along.

  • JSON:API at Core

    The update brings with it JSON:API at the core, marking another milestone towards making Drupal API-first. API-first means using the flexibility of Drupal to integrate it with other systems and be able to use content anywhere, display as you please.

    Content creators can, now, create their content models without having to write a single line of code.



    JSON:API module for Drupal 8 in action

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

    Developers and content creators, now, can create their content models without having to write a single line of code. It not only provides a great authoring experience but also a powerful, standards-compliant, web service API to pull that content into JavaScript applications, digital kiosks, chatbots, voice assistants and more.

    This makes it easier for Drupal’s core ecosystem, of web services responsible for third-party content and application, to integrate.

  • Stable Layout Builder

    Released in 8.6 as an experimental module, Layout Builder is stabilized in Drupal 8.7 update. The module allows you to build layouts with ready-to-use multi-column layouts and Drupal blocks without the intervention of a developer.

    It is unique since it can support multiple and different use cases from templated layouts applied to dozens of pieces of structured content, to designing custom one-off pages with unstructured content.

    [embedded content]


    Drupal Layout Builder in action

    Here’s how it can be used in three different use cases:

    • Layouts for templated content: The creation of ‘layout templates’ can be used for a specific content type. Example, blog posts.
    • Customizations to templated layouts: Can customize the layout templates on a case-by-case basis. Example, to override the layout of a standardized product page.
    • Custom pages: The creation of custom landing pages which are not in sync to any particular content type or structured content. Example, a single ‘About us’ page.

      The Layout Builder is more powerful when used with Drupal's other out-of-the-box features such as revisioning, content moderation, and translations.

  • Workflow

    The workflow module enables you to create arbitrary workflows in Drupal and associate them with entities.

    The support for more revisionable properties would allow the staging of both content and associated properties

    However, taxonomy terms were not revisionable.

    The main issue with non-revisionable terms is site-wide previews of not yet published content (nodes, media items, taxonomy terms, menu links, etc.), through the Workspaces module.

    Taxonomy terms are now revisionable using the new API. This comes as part of the Entity system that helps retrieve an entity for converting the schema of a content entity type from non-revisionable/ non-translatable to revisional/translatable.

    This works well with other pre-existing data for the entity type whose schema has been changed and comes handy with content revisioning. The support for more revisionable properties would allow the staging of both content and associated properties.

    EntityDefinitionUpdateManage is now deprecated with no replacement.

    At the moment core only supports sequential revisioning, parallel revisioning support will be added in 8.8.

  • Media Library

    Shipped as an experimental module in 8.6, Media library is now stabilized and good to use.

    It provides a visually appealing interface for browsing through all the media items in your site. With the new version, multimedia properties can be added to content either by selecting from existing media or by uploading new media through bulk upload support. Once uploaded, users can remove or reorder any images ready for import.

    [embedded content]


    Media Library in Drupal 8.7

    It provides an easy way to upload several media assets in your Drupal website quickly. Let’s you add alt-text, check the images before uploading.

    Powered by Views, it allows site builders to customize the display, sorting, and filtering options.

  • Configuration Management

    The configuration management system in Drupal 8 is quite decent and allows configuration to be synced between installations of the same site in different environments. Configuration Management is part of the Configuration Management 2.0 Initiative which aims to include core support for extended workflows.

    The current workflow presumes that the configuration will be exactly the same in different environments. Developers have to edit the configuration when it is not present.

    The idea behind CM 2.0 is to the use case of sharing reusable packages of configuration among multiple sites

    The major drawback which comes as an API for both the DX and API architecture is:

    It allows modifying the sync storage as it is manipulated but since it has no concept of intent, the developer has to know which methods are called in which order of both the import and export process to correctly interact with it.

    Configuration Management 2.0 in version 8.7 allows the altering and importing the configuration. The idea is to the use case of sharing reusable packages of configuration among multiple sites is on (at least!) a fully equal footing with that of staging configuration on a single site.

    This allows the site administrator to review and safely import available configuration updates from installed modules, themes, and the install profile without overriding customizations made on the site. With 8.7 it can add the ability to select and use an existing configuration directory or storage at install time.

    Configuration Transformer API as the fundamental cornerstone has been added to bulk update configuration. It makes it easier for configuration on dev to be different from production

    New/expanded configuration management UIs for the issues (mentioned above) added to par with a new-to-Drupal site maintainer persona in mind. Experimental module for allowing environment-specific configuration has been introduced in 8.7.
    D8.7 INFOGRAPHIC (1)

And Drupal 9 readiness...

In order to give people reasonable upgrade time from Drupal 8 to Drupal 9, Drupal 9 will be released no later than a year before Drupal 8 goes end of life, that is in 2020.

Also, Drupal 9.0 is skipped, as it's intended to be only deprecated code removals, no new capabilities.

Other Important Information

Some other important information to take note of, are:

  1. Removed support for PHP 5

    Drupal 8.7 would no longer support the obsolete versions of PHP. Version 5.5 reached the end of life in 2016 and 5.6 in December 2018 meaning it no longer receives bugfixes, even for very serious bugs that (might) impact Drupal development. Moving forward Drupal encourages to use PHP V.7 or above.

    Since Drupal 8's automated tests require the PHPUnit library, continued use of obsolete version can put security at risk.

  2. End of support for Internet Explorer 9

    Due to a limit of 31 style sheets per page, Drupal dropped support for Internet Explorer 9 and 10 in 8.4. Since Drupal 8.5 and 8.6 retained a workaround to allow 32 or more stylesheets, this workaround has been removed in 8.7.

    Sites dependent on Internet Explorer 9 support should enable CSS aggregation (preferred) or install the IE9 Compatibility contributed module.

  3. Better Symfony 4 and 5 compatibility

    Drupal 8.7 will provide better compatibility with both Symfony 5 and Symfony 4 for faster web development, since Symphony 3 enters the end of life in November 2021. This includes changes in the Container and Translator Interface Symfony components, as well as resolving critical compatibility issues.

    Additionally, numerous critical Symfony 4 and 5 compatibility issues are resolved in this release.

What to Expect from Drupal 8.8?

Here’s what you need to look forward to in Drupal 8.8.

  • The Welcome Tour
    Adding Tour content for those unfamiliar with Drupal. This would help to teach people Drupal with hands-on experience, explaining backend/frontend choices made to build Umami.
  • Composer Support in Core
    Involves making an official method for starting a Drupal site with the composer kickstart template.
  • Admin UI and Javascript Modernization
    The new admin theme is part of the Admin UI and JS modernization initiative and will be released with Drupal 8.8.

    The goal is to create and update the admin look, that defines a complete set of principles while also consisting of visual and behavioural components to combine into a user-friendly interface.

    This will be based mostly on Seven’s styles theme.
    drupal-theme-layout
    menu-theme-layout

    The navigation pages on the admin UI has been designed with an emphasis on readability, and reusability of existing styles from other components.

    language-theme-layout
    Mockup of the interface with text written using the Devanagari writing system

    This would come with various benefits, including improved performance and better support for various writing systems. Using system fonts will also make the UI feel more familiar to the user since it will be closer to the users' environment.

    Drupal 8.8 Feature Freezes: October 2019
    Drupal 8.8 Releases: December 2019

    With Drupal’s commitment to reinventing itself to enable ambitious digital experiences, the community is getting ready for the launch of Drupal 9, and current updates are well in sync with it.

    Have questions about Drupal 8 features or 9 and how it might impact you? Already chalking out an upgrade plan? Our team of Drupal experts and range of Drupal development services are ready to help.

    Drop us a line at [email protected], and get the conversation started.

    Srijan is Signature Supporting Partner to the Drupal Association. With 140+ seasoned Drupalers of which 56+ are Acquia Certified, Srijan has the largest team of Drupal experts in Asia. 

Apr 30 2019
Apr 30

Drupal is to release its latest version, Drupal 8.7, on the 1st May 2019. Review the entire Drupal product roadmap here.

Drupal 8.7 is a significant update for Marketers, Copywriters, Site Managers, and Creatives. It brings a new Media Library and Layout Builder, Drupal’s first drag-and-drop content manager, recently revealed at DrupalCon Seattle 2019

[embedded content]

 DrupalCon Seattle 2019

This update sees Drupal 8 retain its relevance in an emerging world of instant site builders, like Squarespace and Wix. Where Drupal has always stood out for its back-end capabilities and flexibility with API integrations, the new Layout Builder empowers Content Managers and Marketers. The user-friendly system allows Content Editors to maintain control over their content, throughout its journey to the end user. It also provides enhanced reactivity to the customer experience, as Site Managers can make edits without the assistance of a developer.

Of course, this isn’t just a standard drag-and-drop editor. Drupal 8.7 comes with a whole host of features you won’t find on low-end editors. These include instant multi-page management and the flexibility of powerful editorial workflows.


What is the Drupal Layout Builder?

The Drupal Layout Builder is a drag-and-drop content management tool. It allows non-technical individuals to design layouts in a structured way that adheres to the standard across the site. The new Layout Builder encourages users to take control, introducing blocks which help them to achieve designs and functionalities previously only editable in the developer's domain.

Key features include:

  • Modular template builder
  • Drag-and-drop paragraph editor
  • Permissions workflows
  • World-Class Accessibility 

[embedded content]

 Drupal 8.7 Layout Builder Recording

 

Simple, Reactive Page Management

Using the layout builder, Site Managers and Marketers can create new pages from templates. To build on these templates, users can insert new blocks from the pop-out sidebar that do not exist elsewhere on the site. Once the Site Manager has added a block, they can preview it instantly. At this point, if the editor isn’t happy, they can swap out blocks or replace images, text, buttons and more!

Users have recognised that it can be challenging to move huge, pre-built blocks and paragraphs in full preview. Using the preview toggle, users can now switch out of the full ‘Content Preview’ mode to a slicker block view. This simplified interface makes reordering blocks quick and easy. This differs from alternative drag-and-drop editors as the collapsed block editor sits within the same page. Therefore, editors can drag blocks across columns, as well as up and down.


Accessibility

The Drupal project has a long-standing commitment to accessibility and has been a leader in accessibility for many years. In 2018 Drupal Founder, Dries Buytaert, reaffirmed this commitment by stating that the forthcoming Layout Builder must be fully accessible.

The full 8.7 system is navigable by keyboard, in order to conform to Web Content Accessibility Guidelines, as recommended by the World Wide Web Consortium. This means that the drag-and-drop editor was designed with consideration for Site Managers, Marketers and Developers amongst us with specific accessibility requirements. Ultimately, the latest Drupal update will make agency life and in-house marketing that much more accessible to everyone.

[embedded content]

 Navigating Layout Builder by Keyboard

Workflows

The Layout Builder supports essential activities such as adding, saving and previewing content, or publishing data. The latest update also supports more complex features, such as content staging or approval workflows, using granular controls and notifications for the governance of each layout. This is a great win for marketing teams, as it de-centralises the content management process. Site managers can submit site updates safely, with version controls and final permission escalation.

For more complex updates, Drupal 8.7 supports workflows which push pages through multiple teams. For example, an initial submission which is then passed via testing teams, SEO managers, translation and localisation experts for international audiences, and final senior sign off.


Templates

The Layout Builder also includes a templating feature, useful for sites with large quantities of content. For enterprise sites, Content Managers can edit collections of pages all at once using the Layout Template Editor. Not only can they be edited in unison, they can also be rearranged while retaining their unique content. The ability to re-structure multiple pages at once saves a huge amount of time when one block needs to be changed across multiple locations.

Layout-Builder-template-modeThe Layout Builder in template editing mode

The Drupal Layout Builder was built entirely on Open Source contributions made by 123 contributors and 68 worldwide organisations.

Drupal 8.7 Layout Builder Contributors

The 123 contributors (DrupalCon Seattle 2019: Driesnote)

 

Media Library

Drupal 8.7 included the release of a Media Library, to make asset management faster for Site Managers, particularly within the drag-and-drop format.

[embedded content]

 The Media Library in action

 

The Media Library is a pop-out window from which images and video can be inserted into the webpage. The library pulls content from the organisation’s existing bank of images, hosted within Drupal. Or, users can upload media directly from their cloud or hard drive.

The addition of the Media Library allows Site Managers to insert or change images or video more efficiently than ever. The user selects the area where the image will be added and opens the Media Library. They can then select from existing images or upload multiple new assets at once. Once uploaded, users can remove or reorder any images ready for import. Once happy with the images, the user can add metadata and any extra information (like links), or change the format to video.

The Media Library was made possible by Open Source contributions from 310 individuals and 122 organisations.

Drupal 8.7 Media Library Contributors

The 310 contributors (DrupalCon Seattle 2019: Driesnote)

 

Technical updates

There have also been a host of additional updates and tweaks to Drupal, improving its speed and background functionality. Such updates include adding JSON:API as a core module and providing a consistent way of displaying JavaScript Messages. For the full list of technical updates, visit the Drupal website here.

What’s Next?

Administration UI - Drupal 8.8 or 8.9

The administrative side of Drupal, where site managers navigate the back end and manage content, has been close to untouched for the past 10 years.

The User Interface (UI) is currently being redeveloped to be aligned and reflect the software behind Drupal, giving it a modern look and feel. This includes better use of space (and white space) and more contrasting features. The additional space also means its more accessible, and will receive a WYSIWYG integration.

Drupal 8.8 UI

Proposed UI for Drupal 8.8

 

Sign up to email alerts to find out more or talk to our Drupal Web Development Experts about upgrading your Drupal Platform.

 

Get in touch
Apr 26 2019
Apr 26

April's been unexpectedly generous with us. It has spoiled us with plenty of high-quality content on Drupal. From “enlightening” tutorials to articles raising awareness of certain limitations, to useful tips and actionable advice, to blog posts announcing life-saving module releases... reading our way through the pile of Drupal blog posts this month has been a true dare.

Then, trimming down our bulky list to just 5 posts has been an even bigger challenge...

Nevertheless, we did manage to make our selection. Here's what we kept:
 

The WishDesk team share their experience with leveraging the Drupal 8 Views contextul filters via a well-structured, easy to follow tutorial.

That we're highly grateful for...

Why has it drawn our attention? 
 

  • because we had already been excited about the unmatched flexbility that the contextual filters in Drupal 8 offer
  • it clearly outlines the main differences between regular and contextual filters
  • it presents a specific use of these filters: setting up a task tracker in Drupal 8 using Views 
     

With Views already providing us with an UI for putting together data collections based on certain criteria, now having contextual filters, as well, to fine-tune the results come as an... unexpected “present”.

Their key benefit and advantage over the “standard” filters? They accept dynamic values...

Another one of our top favorite Drupal blog posts this month has been this piece of content raising awareness of the Layout Builder's limitation:

The code generating the image element markup doesn't “store” information about the specific sizes of the column that the image will be placed in.

In other words: there's no way for Drupal site builders to enter an accurate value for the “sizes” attribute when using the Layout Builder...

And the author, Brian K Osborne, draws attention on this issue after first highligthing the main “dilemma” of using responsive image styles:

Providing just one high resolution, high-quality, oversized image vs providing a suitably sized image for efery screen resolution...
 

We couldn't leave out Dries' blog post on the due preparations for upgrading to Drupal 9.

The reassuring aspect that he reveals is that all these preparations revolve around one common best practice: detecting and removing deprecated code from our Drupal 8 websites.

He goes on giving straight answers to all those legitimate questions that we might ask ourselves in relation to these preparations for Drupal 9:
 

  • What is deprecated code?
  • How do we identify it on our websites?
  • How challenging and time-consuming is it to remove it/update it?
     

This has been, by far, one of the best rated Drupal blog posts in April here, at OPTASY.

We can no longer imagine our (work) lives without the Paragraphs module in our toolbox. So, upon hearing about the Paragraphs Editor Enhancements module we dropped evewrytging and looked for this blog post.

Which comes as an inventory of both:
 

  • users' (content editors) main improvement suggestions for the Paragraphs module
  • undpaul team's solutions to editors' complaints/suggestions, turned into enhancements for this module
     

From the:
 

  • well-known “dread” of having to drag the content elements to their right positions after you've added them
  • to the need to be enabled to add those content elements preferiantially (since most editors add pretty much the same elements, over and over again)
  • to the overwhelmingly high number of buttons and the overcrowded dialogs
     

 
… the Paragraphs Editor Enhancements ships with a solution to each one of these drawbacks.

We can't but predict that it will hugely influence the editorial experience in Drupal...

We could never thank enough the OSTraining team for their clear, concise and most useful tutorials. 

One of their April's Drupal blog posts has been this step-by-step guide on how to add webforms to content types. And the scenarios where you'd might find this kind of knowldge “life saving” vary from:
 

  • having to add a contact form to a “business” content type on your Drupal website
  • to having to add a contact form to your “Events” content type
     

Easy to follow, clearly explained, uncluttered, filled with relevant screenshots, their tutorial has been truly “enlightening” for us.

Especially since adding various types of forms is one of those recurring tasks in our Drupal projects...


The END! 

These have been our favorite Drupal blog posts this month. How does your own top 5 look like?

Photo by Bernard Hermant on Unsplash 

Apr 25 2019
Apr 25

Do you need to set up a custom image carousel? Or maybe one slider with a teaser, displaying content from your website? What are the best Drupal 8 slideshow modules to consider for implementing and maintaining your slideshow?

And out of the box options are... out of question, right? Your requirements are too specific for that.
Maybe you need:
 

  • a certain number of slider items
  • different arrow designs
  • to display the image slideshow on other pages, too, not just on your homepage
     

With such flexibility and customization requirements in mind, we started digging into the “pile” of Drupal 8 image slider modules.

And here are the 4 ones that we've selected, those with the best reviews in the Drupal community:
 

If it's a fully customized slideshow that you want to implement, Views Slideshow's the module you need.

It'll “spoil” you with tons of add-ons to select from and give your unmatched flexibility. From:
 

  • titles
  • to images
  • to teasers of the last X blog posts on your website
     

… you get to include any type of items in your carousel.

Furthermore, it's jQuery-powered and it allows you to configure different settings for each one of the views that you'll create.

Note: oh, yes, you'll need to be pretty comfortable using Views in order to leverage this module at its full capacity.

Some of its key features:
 

  • your slider can include and display the latest products added to your eCommerce website 
  • you can set up a news item slideshow (the latest X news articles published on your Drupal 8 website)
  • from the latest X blog entries to the latest videos, testimonials, forum posts etc., you're free to include any type of content in your slider...
     

Now, here's a very brief step-by-step on how you can set it up and use it to create your slideshow:
 

1.1. Install and enable the module

Once you've downloaded it from Drupal.org, installed and enabled it, make sure to download its corresponding ZIP folder on Github, as well.

Give your folder a new name  — /jquery.cycle/ — then start uploading all its files to the 
/libraries/ folder in the root of your Drupal website.
 

1.2. Set up your view

Time to create your slideshow now. For this, just go to Structure> Views>Add new view 
 

1.3. Publish your slideshow block

For this, go to Structure>Block layout and select the region on your website that you want your slider to get displayed on.
 

1.4. Create a new image style

As you can see, the images included in your slideshow are currently of different sizes. Therefore, they're not perfectly adjusted to fit the block region that you've chosen for your slider.

To solve this inconvenience, just go to Configuration>Image styles>Add Image style. 

There, you can create a new style, that will be shared by all the images included in your slideshow.
 

2. Slick Slider, One of the Most Popular Drupal 8 Slideshow Modules

Another one of Drupal's modules for creating custom image slideshows, that ships with a heavy load of options. Powerful and flexible... what more could you ask for from your slider solution?

Capitalizing on Ken Wheeler's Slick carousel, working perfectly with Views and fields, the Slick Slider module:
 

  • enables you to set up a slider including multiple views, value fields and paragraph types
  • comes with image, audio and video support
  • supports complex layouts, as well
     

Some of its key features:
 

  • you're free to enable/disable the swipe functionality
  • it's responsive (scales along with its container)
  • some of its layouts are CSS-built
  • it's designed to work with Field collection, Media, Views, Image (and also to work perfectly fine with none of these modules)|
  • it allows you to configure your own “slide selecting” dots, the arrow keys and your slider's navigation, as well
  • it provides modular and extensible skins
  • you get to choose how you want your slideshow to be scrolled: swipe, desktop mouse dragging, auto scroll, mouse wheel scroll...
     

Another one of those Drupal 8 slideshow modules that gets the best reviews.

Here's why:
 

  • it leverages the Owl Carousel slider built by OwlFonk.   
  • it, too, empowers you to customize your image slideshow; in this respect, it ships with a myriad of customization settings
  • it's responsive
  • it capitalizes on a small ecosystem of submodules: Administration UI, Views Style, Field Formatter
     

Some of its key features:
 

  • from customizing your events to styling your controls, it allows you to tailor your image slider to suit all your needs
  • it supports multiple sliders
  • touch events
     

A simple module to consider each time you need to display a group of images in a compact way on your website. It even allows you to set the number of items to be included in your carousel...

Speaking of which, you should know that jCarousel, as its name says it, allows you to leverage the jCarousel jQuery plugin.

For this, it ships with a developer API for other modules to access. Furthermore, it integrates with Views, so you can easily turn any list of images (or other type of content) into a slideshow...

Some of its key features:
 

  • jCarousel field formater
  • out-of-the-box Views support
  • API for using jCarousel without Views
  • a collection of modern skins to choose from
  • Carousel pager that enable users to jump between multiple sliders
     

The END!

These are the first Drupal 8 slideshow modules to consider when looking for the best method for setting up your custom image/content slider.

Packed with tons of customization options, feature-rich and powerful, these 4 solutions for creating image carousels in Drupal 8 should be on your short list when you start looking beyond the out-of-the-box options for putting together a slider...

Apr 24 2019
Apr 24

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

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

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

Ease of use vs unlimited capabilities...

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

Decisions, decision...

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


1. The Contact Forms Module 

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

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

Drupal 8 Contact Forms vs Webform: Add Contact Form


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

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

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

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

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

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

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

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

2. The Webform Module

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

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

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

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

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

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

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

Webform: Select an Element Screen


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

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

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

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

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

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

3. Drupal 8 Contact Forms vs Webform: Key Differences

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

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

4. In Conclusion...

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

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

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

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


Image by Tumisu from Pixabay

Apr 17 2019
Apr 17

What makes Drupal a great choice from a UX standpoint? What features are responsible for the enhanced end-user experience in Drupal 8? Those features that enable you to easily create an intuitive and enjoyable visitor experience on your own Drupal-based website/application.

And to constantly improve it...

Is it all those performance enhancements that it ships with? Or maybe its “responsive out-of-the-box” nature? Or rather its multilingual capabilities?
 

1. But First: 7 Evergreen Ways to Improve Your Website's UX

It goes without saying that, in order to create an enjoyable, rich user experience on your Drupal 8 website, you'll need to:
 

  • put together a solid UX strategy
  • run extensive user research and map the user's journey
  • come up with an effective, well-planned UX design, paying attention to all the latest design trends (and now decoupled Drupal empowers you to tap into a whole range of new possibilities...)
     

And while carrying out all these phases of the UX design process, make sure to apply the following evergreen techniques for enhancing the visitor's experience:
 

1.1. Optimize the page loading time

For speed will always be the factor with the biggest influence on the user's experience on your Drupal site.

In this respect, there are tons of performance enhancements that you can implement, ranging from aggregating your JS and CSS files to properly configuring your cache to opting for a CDN, to...
 

2.2. Use bullets to structure your text

Bulleted lists are the “holy grail” of neatly structured, easy to read content.

For, in vain you invest time and effort in providing content that delivers real value to your website's visitors if you display it as an... “impenetrable” block of text.

In this respect, bullets help you break down the information. The result: users will see the key product or service benefits/will go through all of the presented features a lot quicker.
 

2.3. Use white space strategically

Speaking of easy to read content: there's no better way to enhance readability and to draw attention to specific elements on a page than... by using the white space itself.

It will automatically direct their attention to the text/image emphasized by all the white space surrounding it.
 

2.4. UX design is consistent Design

From color palette to button styles, from the size of the headings in your text to the chosen font, from the used photos to various design elements... keep consistency across all the pages on your Drupal website.

Otherwise, you risk to confuse and eventually... tire its visitors.
 

2.5. Go for visible, attractive CTAs

Always use action words for your calls to action and make sure they're easily recognizable. CTAs play a crucial role in setting up an intuitive, efficient navigation structure on your website...
 

2.6. Use images wisely

As images are always well-deserved “breaks” for the eye, especially when it's a long text that it's challenged to go through.

And yet, if you fail in using the relevant images, those that perfectly team up with your text... the user experience that you'll deliver will be anything but compelling...
 

2.7. Make your headings a high priority 

Remember to write your headings around some of the main keywords.

Also, strategically design them so that they're highly visible and help users to quickly scan through the content.
 

2. 4 Features Responsible for the Superior End-User Experience in Drupal 8

Gluing together all the design best practices that make a great user experience does call for a flexible and dynamic web platform.

Drupal 8 is that platform. It comes packed with some powerful features that make it easy for you to create the best visitor experience on your website.

Here are the ones with a huge influence on your website's UX:
 

2.1. Drupal 8 is responsive right out-of-the-box

And responsiveness, along with top page loading speed, still is one of those factors with a great influence on visitors' experience with your Drupal website.

With:
 

  • all the available base themes now being responsive
  • the convenience of adapting your images to various screen sizes right from their display properties
     

… creating a compelling end-user experience in Drupal 8 is dead-simple.


2.2. Enhanced performance

From a performance standpoint, Dries Buytaert's post on Drupal 8's performance optimizations is still one of the most relevant sources.

If Drupal was already built to “inject” enterprise-level performance into static pages, Drupal 8, with all its caching enhancements, is designed to speed up dynamic web pages, as well...


2.3. Multilingual capabilities

Remember the user experience's main facets, ranging from useful to findable, to valuable, to credible to... accessible?

Well, Drupal 8 provides you with multilingual capabilities right out of the box. You get to translate your website's UI, content, configuration, etc.

Meaning that, with this multilingual system at hand, you can easily create an accessible user experience on your website.


2.4. Content personalization (by segment, login time, device, language...)

In this respect, the Aqua Lift Connector module is your most reliable tool.

What it does is bring together customer data and content, so that you can deliver targeted content experiences across multiple channels and devices.
 

The END!

And these are those robust features that stand behind the superior end-user experience in Drupal 8. The very reasons why this platform, and particularly this version of Drupal, makes your best ally in creating the most compelling UX on your website.

Photo by Lucian Novosel on Unsplash

Apr 11 2019
Apr 11

With the Twig templates replacing the old PHP templates, Drupal has been brought to a whole new “era”. We can now leverage the advantages of a component-based development in Drupal 8. But what does that mean, more precisely?

How does this (not so) new approach in software development benefit you? Your own team of developers...

And everyone's talking about tones of flexibility being unlocked and about the Twig templates' extensibility. About how front-end developers, even those with little knowledge of Drupal, specialized in various languages, can now... “come right on board”. Since they're already familiar with the Twig engine...

Also, we can't ignore all the hype around the advantage of the streamlined development cycles in Drupal and of the consistent user experience across a whole portfolio of Drupal apps/websites.

But let's take all these tempting advantages of component-based UI development in Drupal 8 and point out how they benefit your team precisely.
 

1. But First: What Is a Component?

It's a standalone piece of software that can appear in multiple places across your Drupal website/application.

One of the most relevant examples is that of a content hub. One displaying teasers of the latest blog posts, events... You could set up a component that would determine how each item in that content hub should look like.

In short:
 

  • one single component can be used by several types of content
  • any update to its template/style would automatically reflect on all those content types, as well
     

Accessible via an API, this independent piece of software explicitly defines all its application dependencies.|

Your team could then easily architect a new interface by just scanning through and selecting from the library of components.
 

2. What Is Component-Driven Development? What Problems Does It Solve?

A succinct definition of component-based software engineering would be:

A software development technique where you'd select off-the-shelf, reusable components and put them together according to a pre-defined software architecture.

“And what challenges does it address?”

It streamlines and lowers the level of complexity of otherwise intricate, time-consuming development and design processes. As the author of given components, your role is to get it implemented.

No need to worry about how they'll get “assembled”; this is what the well-defined external structure is there for.

Word of caution: mind you don't get too... engrossed in putting together the right components, in architecting the best component-based structure for you then risk investing too little time in... building them properly.
 

3. Component-Based Development in Drupal 8

Now, if we are to focus our attention on the component-based UI approach in relation to Drupal 8 software development, here are the key aspects worth outlining:

  • with the Twig engine in Drupal 8, you're free to “joggle with” extensible templates; once you've defined a Twig template in one place, we get to reuse it across the whole Drupal website/app
     
  • the Component Libraries module allows you to set up template files (storing all their needed JS and CS), assign a namespace for them and place them pretty much anywhere on your Drupal filespace (not just in your themes' “templates” directory)
     
  • you then get to use the KSS Node library and define a living style guide; it's where you'll store all the component templates built for your Drupal website (styles, markup, JS behaviors, etc.)

By filling in your toolboxes with all these tools — the results of a joint effort of the Drupal and the front-end communities  —  you're empowered to design themes that are more modular. And, therefore, more efficient...


4. The Top 6 Benefits of the Component-Based UI Approach
 

4.1. It Ensures UX Consistency Across All Your Drupal 8 Websites

Take your library of components as the “headquarters” for all the teams involved in your Drupal project: QA, business, development, design teams...

It's there that they can find the pre-defined standards they need to keep the consistency of the features they implement or of other tasks they carry out across multiple projects.

A consistency that will bubble up to the user experience itself, across your whole portfolio of Drupal 8 websites/applications...
 

4.2. It Accelerates the Process of Turning Your Visual Design into a UI 

Embracing the component-based development in Drupal 8 you'd avoid those unwanted, yet so frequent scenarios where the front-end developer gets tangled up in the wireframe he receives and:
 

  • he/she translates parts of it the... wrong way
  • he digs up all types of “surprise” issues  
     

By using a component-driven UI approach translating a visual design into a user interface gets much more... event-less. 

With:
 

  • a pre-defined component architecture to rely on
  • well-established standards to follow
  • a whole library of component templates at hand
     

… there are fewer chances of discrepancies between the UX defined in the visual design and the one delivered via the resulting user interface.

Not to mention the reduced delivery timelines...
 

4.3. It Streamlines the Whole Development Process 

“Sustainability” is the best word to define this approach to Drupal software development.

Just think about it:

  • whether it's a particular grid, navigation or layout that your front-end developer needs when working on a new project, he/she can pull it right from the component library at hand
     
  • … and “inject” it into the app/website he's working on
     
  • in case that element needs further updating, the developer will already have the baseline to start with
     
  • … there's no need for new components to be designed, from the ground up, with every single project: the already existing ones can always get further extended

And that can only translate into significant savings of both time and money.
 

4.4. It Reduces the Time Spent on Setting Up the Functionality & Defining the UX

And this is one of the key benefits of using component-based development in Drupal 8. Your various teams would no longer need to define the UX requirements and the functionality every single time during the design process.

With an easily accessible library of components, they can always pull a component standing for a specific requirement (display of complex data, filtering, pagination in grids, etc.) and just define its extensions. And the business logic, as well.
 

4.5. It Enables You to Systematically Reuse Your Components

And “reusability” goes hand in hand with “sustainability”. I would even say that it's a synonym for “future-proofing”, as well...

Just think about it: having a Drupal 8 website in a component-based format you can always rearrange components as technologies grow outdated and new ones emerge...

In short, embracing a component-based development in Drupal 8 enables you to remove the need of rebuilding your website every time its underlying technologies “grow out of fashion”.

With your component library at hand, you'll be able to swap your guidelines, design patterns and various content templates in and out, keeping your Drupal app or website up to date.
 

4.6. It Integrates Seamlessly into the Development Process 

By leveraging a component-based development in Drupal 8, you'd also gain better control over the whole development cycle. The update process here included...

Since you'd then build your components and manage your production quality user interface code in a repository like GitHub, every update that you'd make will be displayed in there. And be easily accessible to everyone in your team.

In short, your developers get to pull pieces of code from the repository to further extend them, then re-submit them to GitHub (or to another source code repository) for review.

With the ability to version your component library, your team can keep a close track of all your Drupal applications with their corresponding versions of the approved UX.
 

The END!

This how the component-based development in Drupal 8 would benefit you and your team. Have we left out other key advantages of using this approach?

Image by Arek Socha from Pixabay

Apr 03 2019
Apr 03

Why would you still want to opt for a Drupal multisite setup? What strong reasons are there for using this Drupal 8 feature?

I mean when there are so many other tempting options, as well:
 

  • you could use Git, for instance, and still have full control of all your different websites, via a single codebase
  • you could go with a Composer workflow for managing your different websites
     

One one hand, everyone's talking about the savings you'd make — of both time and money — for keeping your “cluster” of websites properly updated. And yet, this convenience comes bundled with certain security risks that are far from negligible.

Just think single point of failure...

Now, to lend you a hand with solving your dilemma, let's go over the key Drupal multisite pros and cons. So that, depending on your:
 

  • developers' skill level
  • current infrastructure 
  • project budget
  • hierarchy of priorities
  • host capabilities
  • multi-site infrastructure's specific needs
     

… you can decide for yourself whether a Drupal multisite setup does suit your situation or you'd better off with one of its valid alternatives.

And whether you agree that it should eventually get removed from Drupal 9.x or not.
 

1. Drawbacks for Using the Multisite Feature/Arguments for Removing It

Now, let us expose this built-in Drupal feature's main limitations. Those that might just make you think twice before using it:

  • there's no way to update the core of just one Drupal website from your setup; you're constrained to update them all at once, every single time
     
  • it becomes quite challenging to assign a team with working on one (or some) of your websites only
     
  • it's not as richly documented as other built-in features (especially if we consider its “age”)
     
  • it exposes your Drupal multisite setup to security vulnerabilities; it's enough for one website from the “cluster” to get corrupted (accidentally or intentionally) for all the other ones to get infected
     
  • reviewing code becomes a major challenge: you can't “get away with” writing code for one website only; instead, you'll need to rewrite code on all your websites included in the setup, to test it against all breakpoints and so on...
     
  • putting together test and state environments gets a bit more cumbersome
     
  • in order to efficiently manage such an infrastructure of websites strong technical skills are required; are there any command-line experts in your team?
     
  • having a single codebase for all your Drupal websites works fine if and only if they all use the same settings, same modules; if not, things get a bit... chaotic when, for instance, there's a security issue with one module, used on all your websites, that affects your entire ecosystem
     
  • also, since your hypothetical shared database is made of a wide range of tables when you need to migrate one site only, you'll have... “the time of your life” trying to identify those tables that belong to some websites and those that they all share

2. Top 3 Reasons to Go With a Drupal Multisite Setup

Now that we've taken stock of the main drawbacks for leveraging this Drupal feature, let's try to identify the main reasons for still using it:
 

  1. A heavy-weighing reason is given by the time and money you'd save on updating your “cluster” of sites. With the right experience in using the command-line you can run the due updates in just one codebase and have them run across all your websites simultaneously
     
  2. It's an approach that becomes particularly convenient if you need self-hosting for your setup (e.g. take the case of a university hosting all its different websites or a Drupal distribution provider...)
     
  3. You'd be using less memory for OpCache and this benefit becomes particularly tempting if you're dealing with RAM constraints on your servers
     

3. In Conclusion...

There still are solid reasons to opt for a Drupal multisite setup. Reasons that could easily turn into strong arguments for not having it removed in Drupal 9.x...

But there are also equally strong reasons for getting discouraged by the idea of leveraging this age-old feature. Where do you add that from Docker to Composer and GIT, you're not running out of options for managing your “cluster” of websites.

In the end, the decision depends on your situation, that's made of specific factors like budget, hosting capabilities, whether your websites are using the same modules, etc.

The answer to your “Are there any valid reasons for using the Drupal multisite feature?” cannot be but:
 

“Yes there are, but counterbalanced by certain disadvantages to consider.”

Image by Arek Socha from Pixabay

Mar 27 2019
Mar 27

A handful of “life-saving” module releases, enlightening tutorials, well-curated  Drupal theme selections... This month has “spoiled” us with lots of valuable Drupal blog posts. Therefore, coming up with a shortlist of 5 Drupal blog posts has been quite a challenge for us here, at OPTASY.

But, in the end, we did manage to trim our bulky lists of favorites. To focus on our common preferences and keep only the following truly valuable pieces of content on Drupal in our final selection:
 

Since keeping consistency across the websites that we develop is an ever-present challenge and priority for us, this post on building pattern libraries in Drupal came in handy...

While reading it we were already:
 

  • counting just how much time we would save for creating new functionalities and setting up new pages
  • anticipating how easy it would be to maintain our future Drupal websites once we've integrated pattern libraries that anyone could tap into and streamline the creation of new features
  • imagining how convenient it would be to just reuse design elements and functionality stored in those libraries
     

Overall: we couldn't stop thinking how streamlined the whole Drupal development process would be, for all our future projects. And to what extent the end user's experience would get improved by means of... consistency.

The solution the OpsenSense Labs presents there is an effective formula: Pattern Lab + Drupal 8= Emulsify.

Then, they get into details on:
 

  • what Emulsify is: a prototyping tool leveraging atomic design that you could rely on for setting up a living style guide
  • how Emulsify works: by integrating Pattern Lab it enables you to easily put together and manage components and thus streamline your entire development process in Drupal 8
     

The team from InternetDevels have surprised us with a present in the form of a new module that has the potential to become the newest tool in our Drupal development “essential toolkit”.

One including other valuable performance optimization Drupal modules...

It's called Quicklink and here's what makes it so... “tempting”: it uses link prefetching to boost up page loading time on Drupal 8 websites.

Take this example take from their blog post: a visitor lands on a specific page on your website with the intention of accessing other links as well. Once the used browser goes idle, the module tracks down his/her viewports and caches the content corresponding to the links in that viewport.

Once he/she clicks on any of those links, the content will have already been safely stored in the cache and thus it gets displayed much quicker. That is what link prefetching is all about...

Next, the blog post's author goes on delivering details on the underlying library, the API and method this module uses for link detection and respectively waiting for the browser to go idle. Then, it gets into specific details on how to install and configure the module.
 

Why have we included Vardot's piece of content on our favorite Drupal blog posts list: March edition? 

Because versatility has been one of their key criteria when selecting those specific 7 themes. They anticipated website owners' and development teams' requirements in terms of customization and flexibility — not just look & style — when picking their Drupal themes.

In this respect, their collection included Drupal themes ranging from Progressive to Winnex, from OWL to... Edmix.
 

Dries' post is a long-time awaited news: Drupal now ships with JSON:API support.

According to his predictions, in just a few months all Drupal 8 websites will get support for this module.

What does this mean?
 

  • it means that the once far-to-reach future where Drupal would be API-first is now... closer than ever 
  • Drupal teams get empowered to create content models with no coding required, straight in the Drupal UI
  • we're being provided with a web service API that pulls that content into JS apps, voice assistants, chatbots...
     

Just imagine: with this module in core, all your comments, blog posts, tags, and other Drupal entities will get easily accessed via JSON:API web service API. This way, you can serve your content across an entire ecosystem of platforms and devices...
 

We ran over this article the other day and we know just had to add it to our top 5 favorite Drupal blog posts of the month.

It presents a solution to a too frequent challenge: handling those scenarios where you're not 100% happy with the search results provided by Search API Solr and you need to... tweak them. 

To tailor them to your specific needs, so that they're fully relevant for your end users...

Now you have the option to trigger the Drupal module Search Overrides' power. It's designed to enable website admins to override the generated search results. Manually...

Say you're one of these Drupal site admins: you choose the nodes to be placed at the top of the search results generated when entering specific search terms and remove those nodes that shouldn't get displayed. As easy as that! The module will provide you with a method to leverage whenever you need to override search results on a Drupal website.

Note: the Echidna team's now working on integrating functionality that would allow for search result overrides to be... role-specific. For instance, a Drupal back-end team would get different results compared to the end users, for the very same search term.


The END!

These pieces of content have been our top favorite Drupal blog posts this month. How about yours?

Photo by Franck V. on Unsplash

Mar 16 2019
Mar 16

Planning to build a social network with Drupal? A business community maybe? A team or department collaborating on an intranet or portal? Or a network grouping multiple registered users that should be able to create and edit their own content and share their knowledge? What are those key Drupal 8 modules that would help you get started?

That would help you lay the groundwork...

And there are lots of social networking apps in Drupal core and powerful third-party modules that you could leverage, but first you need to set up your essential kit.

To give you a hand with that, we've selected:

5 modules in Drupal 8, plus a Drupal distribution, that you'll need to start a perfectly functional social networking website, with all the must-have content management features and knowledge sharing tools.
 

Before You Get Started: A Few Things to Take Care Of

First of all, let me guess the features on your must-have list:
 

  • articles
  • groups
  • photos
  • user profiles
  • groups
  • forums
     

It should feature pages with dynamic content leveraging a fine-grained access system and social media hubs, right?

Well, now that we've agreed on this, here are the preliminary steps to take before you get actually started, installing your key modules and so on:
 

  • configure your “Taxonomy” categories after you've installed the Forum module
  • set up a custom content type for Blog posts 
  • set up your thumbnail settings for the Article nodes
  • create your key user roles (admin, content author, paid subscriptions)
  • use the PathAuto module to define your URL path structure
  • define your Article nodes' thumbnail settings and remember to upload an anchor image, as well
     

Panels and Views make a “power team” to rely on for setting up pages with dynamic content for your social networking site.

What makes it a must-have module to add to your essential kit when you build a social network with Drupal? 

It enables you to create custom layouts for multiple uses.

You get to use it to set up your website's homepage, one featuring multiple Views blocks with dynamic content retrieved from forums, articles, blogs...

Feel free to add a top slideshow image, to go for multiple-tiled stacked layout, including views from forum, blog and article posts...

In short: the Panels module empowers you to get as creative as possible when setting up fine-tuned layouts for your landing pages displaying dynamic content.
 

Not only that it enables you to present content to your social network's registered users in pretty much any form you might think of — tables, lists, blocks, forum posts, galleries, reports, graphs — but it also:
 

  • enables you to display related content (e.g. display a list of the community members along with their pieces of content)
  • enables you to use contextual filters
     

It'll turn out to be one of the handiest Drupal 8 modules in your toolbox when you need to create and display dynamic content from:
 

  • forums
  • blocks
  • blogs
     

Yet, maybe one of the most common use cases for the Views module on a social networking website is that of:

Setting up a (Views) page listing all the article posts.
 

Another module you'll most certainly want to add to your social networking website as it:
 

  • enables both single and multi-user blogs
  • empowers authorized site members to maintain it
     

Speaking of which, blog entries can be either public or private for a specific user, depending on the role he/she's assigned with.

And it's precisely that system of user roles and corresponding permissions set up on your website that will determine whether a member can:
 

  • access the “Create Content” link or not
  • access a “My Blog” section or... not
     

You can further leverage this Blog module to add a “Recent blog posts” block to your webpages, in addition to the “Blogs” navigation link on your main navigation menu.
 

4. Profile, a Must-Have Module to Build a Social Network with Drupal

You just imagine that you could build a social network with Drupal without a module enabling you to create registration page fields, now can you?

Well, here it is: the Profile module.

And here are its “superpowers”:
 

  • it enables configurable user profiles
  • it enables expanded fields on the user registration page
  • it provides social network members with two different links, one for their account settings, one for their user profiles
  • it provides private profile fields (that only the admin and that specific user can access)
  • it enables you to set up different profile types for different user roles with... different permissions granted 
     

The sky is the limit in terms of what the Group module enables you to do when you build a social network with Drupal:
 

  • it powers pretty much any scenario you can think of, from subgroups to specific per-group behavior, to access permissions...
  • it enables you to put together content collections on your website and grant access to it based on your user roles and permissions policy
  • it enables you to easily add relevant metadata to define the group & content relationships on your site
  • it enables you to control all your settings via a user-friendly admin UI; no need to write custom code to determine what each group is allowed and not allowed to do on your social network
     

I just couldn't help it...

Even though this was supposed to be a roundup of those essential modules you'll need to build a social network with Drupal, I had to add this Drupal distribution, as well.

Open Social is that out-of-the-box solution that you can leverage to get your online user community up and running in no time.

An open source software with all the needed features and functionality already pre-built, so that you can enable members on your network to:
 

  • work together
  • share knowledge
  • organize events
     

Convenience at its best when you want to start a social networking website without worrying much about:
 

  • installing a whole collection of modules
  • doing custom work in the “backstage”. 
     

The END!

This is the minimal kit you'll need to build your online community website with Drupal.

Would you have added other essential modules to the list?

Mar 06 2019
Mar 06

“Should I stay or should I go?” Should you stick to an all-too-familiar traditional CMS and “reap” the benefit of getting loads of much-needed functionality out-of-the-box? Or should you bid on flexibility, top speed, and versatility instead? In a headless CMS vs traditional CMS “debate”, which system best suits your specific needs?

Now, let me try and “guess” some of the CMS requirements on your wishlist:
 

  • to have all the needed functionality “under the same hood” (a predefined theme, robust database, a user-friendly admin dashboard...)
  • to be developer friendly
  • to integrate easily and seamlessly with any modern JS front-end of your choice
  • to “fuel” your website/app with high speed
     

Needless to add that:

You can't have them all in one CMS, either traditional or headless.

What you can actually do is:
 

  • set up a hierarchy with all your feature needs and requirements
  • set it against each of these two types of CMSs' advantages and limitations 
     

Just see which one of them “checks off” the most requirements on your list.

Then, you'd have yourself a “winner”.

So, let's do precisely that:

A headless CMS vs traditional CMS comparison to help you determine which one's... a better fit for you.
 

1. Traditional CMS: Benefits and Challenges

Everything in one place...

That would be a concise, yet fully comprehensive definition for the traditional CMS.

Just imagine a content management system that provides you with all the critical features and functionality, all the needed elements straight from the box:
 

  • a generic theme
  • a dashboard for easily managing your own content
  • a predefined database
  • PHP code for retrieving the requested content from your database and serving it to the theme layout
     

The back-end and front-end, meaning the code, database, and the layout/design, are “under the same hood”, strongly coupled. 

It's all there, pre-built, at hand... “Convenience” must be another word for “traditional CMS”.
 

Security & Performance: A Few Challenges to Consider 

Getting all that critical functionality out-of-the-box does translate into... code. Lots and lots of code, lots and lots of files.

Which also means lots and lots of potential vulnerabilities to be exploited.

There could be an error in any of the files in that heavy load of files that you get. Or a query string parameter that could be turned into “free access” into your database...

Therefore, the convenience of built-in functionality does come with its own security risks. 

Also, whenever you make a “headless CMS vs traditional CMS” comparison, always be mindful of the maintenance aspect:

Of the upgrading that you'll need to perform with every new security patch that gets released.

Now, as regards the performance “pumped” into your traditional CMS-based website/application, just think: compiling files.

That's right! Consider all those custom files, in addition to the pre-defined ones that you'll be provided with, that you'll pile up for... customizing your website. 

All these files, all the new libraries that you'll want to integrate, will need to get compiled. Which can only mean:
 

  • more stress put on your server memory 
  • copying code of functionalities that you might not even use
  • a poor page loading time, with an impact on the user experience provided on your website
     

2. A Traditional CMS Is the Best Choice for You If...

Now, you must be asking yourself: “How do I know if a traditional CMS is the best fit for my own use case?”

My answer is:

You go through the here listed “scenarios” and see if any of them matches your own.
 

  • you already have a team of PHP experts with hands-on experience working with a particular CMS (Drupal, WordPress...)
  • it's a stand-alone website that you need; no other applications and tech stack that might depend on a CMS's provided functionality
  • you're not opinionated on the technology that your website will get built on
     

3. Headless CMS: What Is an API-Based Website, More Precisely?

“It's a CMS that gives you the flexibility and freedom to build your own front-end — Angular, Rails, Node.js-based, you name it — and integrate it with content management tools via an API."

In short: your headless CMS can then serve raw content —  images, text values —  via an API, to a whole “ecosystem” of internet-connected devices: wearables, websites, mobile apps. 

And it'll be those content-consuming devices' responsibility to provide the layout and design of the content delivered to the end-users.

What's in it for you?
 

  • it dramatically streamlines the development cycle of your API-based website; you can get a new project up and running in no time
  • there's no need to pile up lots and lots of files and the code of out-of-the-box functionalities that you might not even need
  • if there's a particular service that you need — store form submissions or a weather forecast —  there's always a specific service with an API that you could integrate to have that particular content served on your website
     

A headless approach gives you the freedom to integrate exclusively the functionalities that you need into your website.

Moreover, you still get a dashboard for easily managing your content. Your headless CMS will have got you covered on this.

With no code being “forced” into your website/mobile app or need to perform a performance “routine” for this. You get it by default.
 

Security and Performance: Main Considerations

In terms of security, a short sentence could sum all the advantages that you can “reap” from having an API-based website:

There's no database...

Therefore, there are no database vulnerabilities, no unknown gateway that a hacker could exploit. 

Furthermore, in a “headless CMS vs traditional CMS” debate, it's important to outline that the first one doesn't call for an administration service. 

Meaning that you get to configure all those components delivering content to your website as you're building it. Except for that, the rest of the dynamic content gets safely stored and managed in your headless CMS.

“But can't anyone just query the service endpoints delivering content on my API-based website?”

True. And yet, there are ways that you can secure those channels:
 

  • use double-authentication for sensitive content 
  • be extra cautious when handling sensitive data; be mindful of the fact that anyone can query the JS implementation 
     

Now, when it comes to performance, keep in mind that:

It's just assets that your web server will provide. As for the content coming from all those third-party services that your headless CMS is connected with, it will get delivered... asynchronously.

Now, considering that:
 

  • most of those endpoints are hosted in the cloud and highly flexible 
  • the first response — the first static HTML file that gets served  — is instant
  • you could go with a headless CMS that leverages a CDN for delivery
  • in a traditional CMS scenario the website visitor has to wait until the server has finished ALL the transactions (so, there is a bit of waiting involved in there)
     

… you can't but conclude that in a “headless CMS vs traditional CMS” debate, the first one's way faster.
 

4. Use a Headless Approach If...
 

  • you already have your existing website built on a specific modern tech stack (Django, React, Node.js, Ruby on Rails) and you need to integrate it with a content management system, quick and easy
  • you don't your team to spend too much time “force-fitting” your existing tech stack into the traditional CMS's technology (React with... WordPress, for instance)
  • you need your content to load quickly, but you don't want a heavy codebase, specific to traditional CMSs, as well
  • you want full control over where and how your content gets displayed across the whole ecosystem of devices (tablets, phones, any device connected to the IoT...)
  • you don't want to handle all the hassle that traditional CMS-based websites involve: scaling, hosting, continuous maintenance 
     

5. Headless CMS vs Traditional CMS: Final Countdown

Now, if we are to sum it up, the two types of CMSs' pros and cons, here's what we'd get:
 

Traditional CMS

It comes with a repository for your content, as well as a UI for editing it and a theme/app for displaying it to your website visitors.

While being more resource-demanding than a headless CMS, it provides you with more built-in functionality.
 

Headless CMS

It, too, provides you with a way to store content and an admin dashboard for managing it, but no front-end. No presentation layer for displaying it to the end user.

Its main “luring” points?
 

  • it's faster
  • it's more secure
  • more cost-effective (no hosting costs)
  • it helps you deliver a better user experience (you get to choose whatever modern JS framework you want for your website's/app's “storefront”)
     

It's true, though, that you don't get all that functionality, right out-of-the-box, as you do when you opt for a traditional CMS and that you still need to invest in building your front-end.

In the end, in a “headless CMS vs traditional CMS” debate, it's:
 

  • your own functionality/feature needs
  • your versatility requirements 
  • the level of control that you wish to have over your CMS
  • your development's team familiarity with particular technologies
     

… that will influence your final choice.

Photo by rawpixel on Unsplash

Mar 05 2019
Mar 05

Running a business is demanding. To be successful requires leadership be equipped with a broad range of skills from financial astuteness to empathy for staff. Whilst developers have ample resources from which to draw reference on best practice, for managers and business leaders knowledge gained is often be deemed competitive advantage and so kept secret or is accessed only through expensive training or courses.

Working in open source brings many benefits including the fostering of knowledge transfer that transcends merely code. It is to the benefit of all that business leaders in Drupal share this openness and are willing to reveal lessons learnt or formulae of success, that in other industries would remain behind closed doors. A fine example of this mindset is DrupalCamp London CXO, this years incarnation was no exception.

Prof. Costas Andriopoulos, Cass Business School, spoke about leadership and innovation in scaling enterprises. He explained that it’s far wiser to sort out your business early, when you are small and well ahead of scaling because what kills businesses is success, age and size.

Prof. Costas Andriopoulos

 

Success: breeds complacency, overstretching, even arrogance. All of these can be the downfall of your business.

Age: of leadership and team leads to them becoming slower, more stuck in your ways. Andriopoulos stated that curiosity drops with age — a child asks over 400 questions per day. By adulthood and towards later life this drops dramatically.

Size: brings bureaucracy, slowing the pace at which information disseminates. Layers of management become more risk averse. Humans are natural hoarders, it’s normal he says for people add but we hold on to things too long. This slows businesses down.

To maintain momentum in decision making he recommended all meetings and team sizes should be manageable — 4 or five, the best team is 2. There’s nowhere to hide here. You have to participate. In large meetings people repeat one another often or may say nothing at all.

Andriopoulos recommended when facing challenging projects do a pre-mortem. Split the team in two, half of them imagine the plans has been put in motion and failed terribly. Then write a story of what happened. The other half imagine that it succeeded and write their story of how that happened. Doing so equips you with a variety of scenarios to consider before the work beings.

Rasmus Lerdorf founder of the programming language PHP

 

Rasmus Lerdorf, founder of the programming language PHP, gave a potted history of how the language came to be and prospered. What struck me was how innovation and breaking free of the norm were key drivers. In the early days where hardware and networks were far slower than we know today, Rasmus questioned the merit of querying databases without the ability to reduce verbosity of responses. He introduced the “LIMIT” clause, something we all take for granted now, to introduce efficiency gains in early internet applications.

Upgrading to PHP 7 across the web would remove 7.5 BN Kg carbon dioxide emissions

Rasmus Lerdorf

 

This ethos remains today. Lerdorf stressed the importance of upgrading to PHP 7 or above as the dramatic performance improvements significantly reduce the physical hardware required to support PHP applications. Since PHP powers >70% internet sites, our efforts combined will contribute to he estimates a 15B KWH energy savings and 7.5 BN Kg less carbon dioxide emissions.

Michel Van Velde, founder of One Shoe agency

 

Michel Van Velde, founder of One Shoe agency, spoke openly of the challenges his business faced in 2017 and how a combination of reading and hiring a personal coach helped him evolve his approach to leadership, behaviour and in doing so the actions of his staff.

His presentation was a shining example of how business leaders in open source act differently. Whilst on the face of it counterintuitive, by sharing how he overcame adversity in his life with his potential competitors, what Michel was actually doing was helping his peers to avoid these pains meaning we all rise. Doing so he is contributing to a virtuous circle.

Van Velde put his success in 2018 down to a combination of three factors, rooted in knowledge of three leadership models and an appreciation of how to apply them to his circumstances.

The Drama Triangle: defines any conflictual situation to have victim, rescuer, persecutor. An oversimplification is to say a victim typically takes the “poor me!” stance, Rescuers are those who might choose to say “Let me help you!”, Persecutor adopts the “It’s all your fault!” stance.

Radical Candor: is the ability to Challenge Directly and show you Care Personally at the same time. “Radical Candor really just means saying what you think while also giving a damn about the person you’re saying it to”

Transactional Analysis: considers that we each have internal models of parents, children and also adults, and we play these roles with one another in our relationships. If we grow an appreciation in our daily conversations, meetings and conflicts what state we and others are in (parents, children, adults) we can begin to realise how to avoid or deal with conflict.

Van Velde explained that by rewiring how he dealt with his staff not meeting expectation, dealing with situations in such a way to offer his team the opportunity to realise their shortcomings themselves, providing opportunities to address their behaviour he was creating a positive environment in which his staff could grow.

Melissa Van Der Hecht’s presenting on “Why we need to be more open about diversity in tech”

 

Melissa Van Der Hecht’s presentation on “Why we need to be more open about diversity in tech” was a breath of fresh. I can never hear enough on this topic. I found her angle refreshing.

Rather than specifying diversity through gender, race, religion she saw diversity as that which makes us stand out, what makes us special. She talked about the fact that as a female in tech you have to work harder, a lot harder, to convince men you are worthy of respect and have your ideas recognised as having merit. Van Der Hecht said this is unrelenting. At best exhausting and worst leads to burnout, reporting those from minority groups suffer double burnout rates over those in the majority.

Van Der Hecht went on to explain that unconscious bias really hard to adjust. She spoke of the “Surgeon’s dilemma”, a test for unconscious bias and admitted she fell for this riddle. I compel you to take the test, how did you fare?

Watch this short video, as a further example used in the presentation illustrating the point. For me, rather than despair, it actually gave hope that generations soon entering the workplace could bring a tidal wave of impressive minds.

[embedded content]

 

Van Der Hecht highlighted that diverse teams are more productive, more innovative and creative. There is a strong correlation between diversity and increased innovation.

According to Forbes.com companies with more diverse teams reported 19% higher revenue due to innovation

 

I always remember Erynn Petersen, Executive Director of Outercurve an OSS foundation, speaking at DrupalCon Austin. She cited data showing that diversity leads to better performance in business. It’s hard to ignore these facts, unwise not to act upon the evidence.

I couldn’t help but notice while Melissa was speaking to an audience of ~100 people, only 3 were female, few of mixed race. True they were from across Europe, but the male dominance alone was striking. The Drupal is committed to diversity, during the weekend event it was striking to me how more diverse the attendee mix was. There is clearly a way to go in terms of fostering diversity in management, agency leadership. We should all consider how in our businesses we create cultures which foster diversity. We all have a lot to benefit from that.

I’ve strived in our business to create a culture which embraces all. It takes time and we are constantly learning, listening and evolving. These things don’t happen overnight and take commitment and a willingness to change.

We are fortunate in Drupal to have a vast community with many inspiring contributors from diverse backgrounds. Next time you are on Slack, at a meetup, DrupalCamp or Con why not take time out to open a conversation with someone quite different to you. It’s quite possible you’ll begin to realise being different is what makes them special. Thanks Melissa!

 

Mar 01 2019
Mar 01

Which of those Drupal modules that are crucial for almost any project make you want to... pull your hair out? 

For, let's face it, with all the “improving the developer experience” initiatives in Drupal 8:
 

  • BigPipe enabled by default
  • the Layout Builder
  • Public Media API
  • and so on
     

… there still are modules of the “can't-live-without-type” that are well-known among Drupal 8 developers for the headaches that they cause.

And their drawbacks, with a negative impact on the developer experience, go from:
 

  • lack of/poor interface
  • to a bad UI for configuration
  • to hard-to-read-code
  • too much boilerplate code, verbosity
  • to a discouragingly high learning curve for just one-time operations
     

Now, we've conducted our research and come up with 4 of the commonly used Drupal modules that developers have a... love/hate relationship with:
 

1. Paragraphs, One of the Heavily Used Drupal Modules 

It's one of the “rock star” modules in Drupal 8, a dream come true for content editors, yet, there are 2 issues that affect developer experience:
 

Developers are dreaming of a... better translation support for the Paragraphs module. And of that day when the deleted pieces of content with paragraphs data don't remain visible in their databases.
 

2. Views

Here's another module with its own star on Drupal modules' “hall of fame” that...  well... is still causing developers a bit of frustration:

You might want to write a query yourself, to provide a custom report. In short, to go beyond the simple Views lists or joins. It's then that the module starts to show its limitations.

And things to get a bit more challenging than expected. 

It all depends on how “sophisticated” your solution for setting up/modifying your custom query is and on the very structure of the Drupal data.

Luckily, there's hope.

One of the scheduled sessions for the DrupalCon Seattle 2019 promises to tackle precisely this issue: how to create big, custom reports in Drupal without getting your MySQL to... freeze.
 

3. Migrate 

There are plenty of Drupal developers who find this module perfectly fit for small, simple website migration projects. And yet, they would also tell you that it's not so developer friendly when it comes to migrating heavier, more complex websites.

Would you agree on this or not quite?


4. Rules 

Another popular Drupal module, highly appreciated for its flexibility and robustness, yet some developers still have a thing or two against it:

It doesn't enable them to add their own documentation: comments, naming etc.

And the list could go on since there are plenty of developers frustrated with the core or with the Commerce Drupal module...

The END!

What do you think of this list of Drupal modules that give developers the most headaches? Would you have added other ones, as well?

What modules do you find critical for your projects, yet... far from perfect to work with?

Feb 26 2019
Feb 26

Kind of stuck here? One one hand, you have all these software development technologies that are gaining momentum these days —  API, serverless computing, microservices — while on the other hand, you have a bulky "wishlist" of functionalities and expectations from your future CMS.  So, what are those types of content management systems that are and will be relevant many years to come and that cover all your feature requirements?

And your list of expectations for this "ideal" enterprise-ready content infrastructure sure isn't a short one:
 

  • to enable you to build content-centric apps quick and easy
  • multi-languages support
  • user role management
  • a whole ecosystem of plugins
  • inline content editing
  • to be both user and developer friendly
  • personalization based on visitors' search history
  • to support business agility
  • search functions in site
     

... and so on.

Now, we've done our research.

We've weighed their pros and cons, their loads of pre-built features and plugins ecosystems, we've set them against their “rivaling” technologies and selected the 3 content management systems worth your attention in 2019:
 

But What Is a Content Management System (CMS)? A Brief Overview

To put it simply:

Everything that goes into your website's content —  from text to graphics — gets stored in a single system. This way, you get to manage your content — both written and graphical — from a single source.

With no need for you to write code or to create new pages. Convenience at its best.
 

1. Traditional CMS, One of the Popular Types of Content Management Systems

Take it as a... monolith. One containing and connecting the front-end and back-end of your website: both the database needed for your content and your website's presentation layer.

Now, just turn back the hands of time and try to remember the before-the-CMSs “era”. Then, you would update your HTML pages manually, then upload them on the website via FTP and so on...

Those were the “dark ages” of web development for any developer...

By comparison, the very reason why content management systems — like Drupal, WordPress, Joomla — have grown so popular so quickly is precisely this empowerment that they've “tempted” us with:

To have both the CMS and the website's design in one place; easy to manage, quick to update.
 

Main benefits:
 

  • your whole website database and front-end is served from a single storage system
  • they provide you with whole collections of themes and templates to craft your own presentation layer
  • quick and easy to manage all your content
  • there are large, active communities backing you up
     

Main drawbacks:
 

  • they do call for developers with hands-on experienced working with that a specific CMS
  • except for Drupal, with its heavy ecosystem modules, content management systems scale don't scale well
  • they require more resources —  both time and budget — for further maintenance and enhancement
     

A traditional CMS solution would fit:
 

  • a small business' website
  • a website that you build... for yourself
  • an enterprise-level website
     

… if and only if you do not need it to share content with other digital devices and platforms.

You get to set up your website and have it running in no time, then manage every aspect of it from a single storage system.

Note: although more often than not a traditional CMS is used to power a single website, many of these content infrastructures come with their own plugins that fit into multi-site scenarios or API access for sharing content with external apps.
 

2. Headless CMS (or API-First Pattern)

The headless CMS “movement” has empowered non-developers to create and edit content without having to get tangled up in the build's complexities, as well. Or worrying about the content presentation layer: how it's going to get displayed and what external system will be “consuming” it.

A brief definition would be:

A headless CMS has no presentation layer. It deals exclusively with the content, that it serves, as APIs, to external clients.

And it's those clients that will be fully responsible with the presentation layer.

Speaking of which, let me give you the most common examples of external clients using APIs content:
 

  • static page application (SPA)
  • client-side UI frameworks, like Vue.js or React
  • a Drupal website, a native mobile app, an IoT device
  • static site generators like Gatsby, Jekyll or Hugo
     

A traditional CMS vs headless CMS comparison in a few words would be:

The first one's a “monolith” solution for both the front-end and the back-end, whereas the second one deals with content only.

When opting for a headless CMS, one of the increasingly popular types of content management systems, you create/edit your website content and... that's it. It has no impact on the content presentation layer whatsoever.

And this can only translate as “unmatched flexibility”:

You can have your content displayed in as many ways and “consumed” by as many devices as possible.
 

Main benefits:
 

  • front-end developers will get to focus on the presentation layer only and worry less about how the content gets created/managed
  • content's served, as APIs, to any device
  • as a publisher you get to focus on content only
  • it's front-end agnostic: you're free to use the framework/tools of choice for displaying it/serving it to the end-user
     

Main drawbacks:
 

  • no content preview 
  • you'd still need to develop your output: the CMS's “head”, the one “in charge” with displaying your content (whether it's a mobile app, a website, and so on)
  • additional upfront overhead: you'd need to integrate the front-end “head” with your CMS
     

In short: the headless CMS fits any scenario where you'd need to publish content on multiple platforms, all at once.
 

3. Static Site Generators (Or Static Builders)

Why are SSGs some of the future-proofed content management systems? 

Because they're the ideal intermediary between:
 

  • a modular CMS solution
  • a hand-coded HTML site
     

Now, if we are to briefly define it:

A static site generator will enable you to decouple the build phase of your website from its hosting via an JAMstack architectural pattern.

It takes in raw content and configures it (as JSON files, Markdown, YAML data structures), stores it in a “posts” or “content” folder and, templating an SSG engine (Hugo, Jekyll, Gatsby etc.), it generates a static HTML website with no need of a CMS.

How? By transpiling content into JSON blobs for the front-end system to use. A front-end system that can be any modern front-end workflow.

And that's the beauty and the main reason why static site generators are still, even after all these years, one of the most commonly used types of content management systems:

They easily integrate with React, for instance, and enable you to work with modern front-end development paradigms such as componentization and code splitting. 

They might be called “static”, yet since they're designed to integrate seamlessly with various front-end systems, they turn out to be surprisingly flexible and customizable.
 

Main benefits:
 

  • they're not specialized on a specific theme or database, so they can be easily adapted to a project's needs
  • Jamstack sites generally rely on a content delivery network for managing requests, which removes all performance, scaling and security limitations 
  • content and templates get version controlled with right out of the box (as opposed to the CMS-powered workflows)
  • since it uses templates, an SSG-based website is a modular one
     

And, in addition to their current strengths, SSGs seem to be securing their position among the most popular types of content management systems of the future with their 2 emerging new features:
 

  • the improvement of their interface for non-developers (joining the “empower the non-technical user” movement that the headless CMS has embraced); a user-friendly GUI is sure to future-proof their popularity
  • the integrated serverless functions; by connecting your JAMstack website with third-party services and APIs, you get to go beyond its static limitation and turbocharge it with dynamic functionality 
     

To sum up: since they enable you to get your website up and running in no time and to easily integrate it with modern front-end frameworks like Vue and React, static site generators are those types of content management systems of the future.

The END!

What do you think now? Which one of these CMS solutions manages to check off most of the feature and functionality requirements on your wishlist?

Feb 06 2019
Feb 06

API first, responsive Bartik, headless and decoupled Drupal, Layout Builder, React admin UI... Drupal's evolved tremendously over these 18 years! Yet: the emails that we send out via its otherwise robust email sending system aren't different from those we used to send a... decade ago. And customers expect rich experiences outside your Drupal website or app. While website administrators expect to be enabled to easily manage, via the admin UI, their email content templates. So: how do you send HTML emails in Drupal 8?

Without relying on external services, of course...

And who could blame customers for expecting 2019-specific user experiences? Experiences that HTML-enabled emails deliver through their great features.

Features that support Drupal editors' marketing efforts, as well:
 

  • traffic-driving hyperlinks; you get to link to your landing page right from the email
  • visually attractive custom design; emails that look just like some... microsites
  • all sorts of design details that reinforce your brand: buttons over cryptic links, responsive design, templated footers and headers
  • web fonts
  • QR codes 
  • hierarchical display of content, that enhances readability and draws attention to key pieces of content and links in your email
  • images and attachments
  • tracking for monitoring opens
     

And speaking of admin and/or editors, the questions they ask themselves are:

“How can I easily theme the emails to be sent out?”

“How can I change their content templates right from the admin UI?”

And these are the questions that I'll be answering to in this post.

Here are your current options at hand — 3 useful Drupal 8 modules — for easily crafting and sending out HTML emails that appeal and engage.
 

It does exactly what you'd expect:

It enables you to configure HTML emails from Drupal 8.

It's the Drupal 7 go-to option whenever you want to go from plain text emails to HTML-formatted ones. A module available for Drupal 8 in alpha version.

Furthermore, it integrates superbly with the Echo and the Mail MIME modules.
 

2. The Swift Mailer Module, The Best Way to Send HTML Emails in Drupal 8

Swift Mailer is the highly recommended method for configuring Drupal 8 to send out visually-arresting, HTML emails.

Since you can't (yet) send them right out of the box with Drupal...

The module stands out as the best option at hand with some heavy-weighing features:
 

  • it supports file attachments
  • it supports inline images, as well
  • it enables admins to send HTML (MIME) emails
  • … to send them out via an SMTP server, the PHP-provided mail sending functionality or via a locally installed MTA agent
     

Note: you even get to use this module in tandem with Commerce to send out your HTML-enabled emails. There's even an initiative underway for replacing Drupal's deprecated core mail system with the Swift Mailer library.

And now, here are the major configuration steps to take to... unleash and explore this module's capabilities:
 

  • first, set up the Swift Mailer message (/admin/config/swiftmailer/messages) settings to use HTML
  • next, configure the Swift Mailer transport settings (/admin/config/swiftmailer/transport) to your transport method of choice 
  • and finally, configure the core mail system settings to use this module for the formatter and the sender plugins
     

And if you're not yet 100% convinced that the Swift Mailer module is significantly superior to Drupal's default mail system, here are some more arguments:
 

  • it enables you to send... mixed emails: both plain text and HTML-enabled
  • it provides HTML content types
  • it supports various transport methods: Sendmail, PHP, SMTP (the current mail system supports but one method)
  • it enables you to integrate key services with Drupal —  like Mandrill, SendGrid —  right out of the box
  • it incorporates a pluggable system, allowing you to further extend its functionality
     

How about now? Are these strong enough arguments that Swit Mailer's the way to send HTML emails in Drupal 8?
 

Another option for configuring Drupal 8 to send out HTML emails is the PHPMailer module.

How does it perform compared to Swift Mailer?
 

  • It's not pluggable
  • it's not as easily customizable as Swift Mailer 
  • it's already embedded in the SMTP module (in fact, in Drupal 8 the default mail interface class is named “PHPMail” instead of DefaultMailSystem)
     

What features does it share with Swift Mailer?
 

  • it enables you to send out HTML-enabled emails with Drupal
  • it enables you to add attachments to your emails
  • it, too, enables you to send out mixed emails
  • it, too, supports external SMTP servers
     

Moreover, you can extend its core functionality by integrating it with the Mime Mail component module (currently in alpha 2 version for Drupal 8).
 

4. The Mime Mail Component Module

Briefly, just a few words about Mime Mail:
 

  • as already mentioned, it's a “component module”, that can be used for boosting other modules' functionality
  • it enables you to send out HTML emails with Drupal: your mail would then incorporate a mime-encoded HTML message body
  • it enables you to set up custom email templates: just go to your mimemail/theme directory, copy the mimemail-message.tpl.php file and paste it into your default theme's folder; this way, your email will take over your website's design style 
  • any embedded graphics gets Mime-encoded, as well, and added as an attachment to your HTML email
  • do some of your recipients prefer plain text over richly formatted HTML emails? Mime Mail enables you to switch your email content over to plain text to meet their specific preferences
     

The END!

Now that you know your options, it's time to step out from the (too) long era of rudimentary, plain emails sent out with Drupal.

... and into the era of richly formatted HTML emails, that will:
 

  • enrich your customers' experiences
  • enhance Drupal 8 site admins' experience
Feb 01 2019
Feb 01

Just imagine it: Drupal 8's robust features as a CMS, the flexible e-commerce functionality of the Drupal Commerce ecosystem and a JavaScript framework for the front-end! All in the same native mobile app! You can easily achieve this “combo” — a reliable content repository & a JS-based front-end providing a fantastic shopping cart experience — if you just... decouple Drupal Commerce.

For why should you trade Drupal's battle-tested content authoring and administration tools for a more interactive user experience? 

And why should you give up on your goal to deliver richer cart experiences just because Drupal 8 can't rival the JavaScript in terms of advanced native mobile app functionality?
 

  • push notifications
  • complex shopping options
  • enabling users to manage their own delivery times and places
  • ... to configure various aspects of their orders and so on
     

Just leverage a decoupled Drupal Commerce strategy in your shopping app project and you can have both:
 

  • Drupal as your secure content service 
  • the front-end framework of your choice “in charge” with the user experience 
     

In this respect, these are the most useful Drupal tools at hand for implementing an API-based headless architecture:
 

1. Headless Commerce Comes Down to...

… separating your commerce stack (back-end content handling area, data store etc.) from the user interface.

Or the “head”, if you wish.

The presentation layer would “retrieve” content from the back-end content storage area and is the one fully “responsible” with delivering fantastic user experience.

This way, you're free to choose your own front-end tools.

Now, why would you consider choosing a decoupled architecture for your e-commerce solution? The benefits are quite obvious and not at all negligible:
 

  • higher flexibility and scalability (that JS frameworks are “famous” for)
  • freedom to customize your app to your liking (for every platform or/and device)
  • richer, more interactive shopping experiences 
     

2. Decoupled Drupal Commerce... Out of the Box? The Commerce Demo 

Narrowing our focus down to... Drupal, to Drupal Commerce, more specifically, the question's still there:

“How do I decouple Drupal Commerce?”

Considering that:
 

  • there are specific challenges that such a decoupled front-end architecture poses
  • Drupal solutions like Forms API and Views won't fit your specific (probably quite complex) design implementation requirements
     

Luckily, the Commerce Guys team has already faced and solved these challenges.

First of all, they've put together the Commerce Demo project, a store providing default content to be “injected” into Drupal.

Secondly, their attempt at integrating a design meant to support advanced functionality, for richer shopping cart experiences, resulted in 2 new modules:
 

  • Commerce Cart API
  • Commerce Cart Flyout
     

More about them, here below...
 

3. Useful Modules to Decouple Drupal Commerce 

Here's a collection of the most... relevant modules that you could use in your headless Drupal Commerce project:
 

3.1. The Commerce Cart API Module

It's no less than a handy Drupal tool that enables you to custom build your shopping cart widget. 
 

3.2. The Cart Flayout Module

The go-to module when you need to ajaxify the “Add to cart” form in your shopping app.

Basically, what it does is:

Provide a sidebar that “flies out” once the user clicks the “Add to cart” button or the cart block.

If I were to dive into details a bit, I'd add that the flyout enables users to:
 

  • view the products in their shopping carts
  • remove all the items there
  • update the quantity of a specific item
     

Should I add also that Cart Layout comes with no less than 9 different Twig templates, for various parts of the module? By leveraging Drupal's library management feature you can easily override these JS segments of the module.

And not only that you get to customize it to suit your needs entirely, but:
 

  • it comes with a well structured JS logic
  • it's built on top of Backbone
     

… which translates into an efficient models-views separation.
 

3.3. Commerce 2

Use Drupal Commerce 2 as the core structure of your e-commerce project.

Being an ecosystem of Drupal 8 modules and “spoiling” you with unmatched extensibility via its APIs, Drupal Commerce empowers you to implement all kinds of headless commerce scenarios.

It enables you to use Drupal as your content/data (user and order-related info) repository and to easily serve this content to your mobile app. To your end-users.
 

3.4. The Commerce Recurring Framework Module

Some of its handy charging & billing features include:
 

  • configurable billing cycles
  • configurable retries in case of payment declines
  • both prepaid and postpaid billing systems
     

3.5 The JSON API & JSON API Extras Modules   

Need to decouple Drupal Commerce, to enable a full REST API in JSON format? 

It's as easy as... enabling a module (or 2 at most): the JSON API module.

What it does is:
 

Expose the API so you can vizualize the data in JSON format.

And Drupal's built and perfectly adapted to support JSON API, which turns it into the go-to option when you need a back-end content repository for your headless shopping app.

In addition to this module, feel free to enable JSON API Extras, as well. It comes particularly handy if you need to customize the generated API. 

It allows you to:
 

  • override the name of your resources
  • change their path...
     

You'll then have a specific place in your app's user interface where you can visualize your content paths.

Once you have your data in JSON format, safely stored in your back-end content creation & moderation Drupal area, you're free to... serve it to your mobile shopping app!
 

The END!

And these are some of the already tested tools and techniques to decouple Drupal Commerce so that you can deliver richer, more interactive cart experiences.

Have you tried other modules/methods? Writing custom JavaScript code... maybe?

Jan 30 2019
Jan 30

If you were an early Drupal 8 adopter you've might have downloaded and installed your Drupal 8 sites by downloading a tarball or using Drush. We did as well, but the benefits of using Composer are so great that it's time to convert those in to being Composer-managed.

Luckily, grasmash has built a great Composer plugin called Composerize Drupal which does all the heavy-lifting for us.

Here's how we did it:

Before you even begin, make sure you branch out $ git checkout -b chore/composerize-drupal

And then we installed the Composer plugin globally:

composer global require grasmash/composerize-drupal

Consider the plugin options available:

  • Use the --exact-versions option if the site is big and complex. Especially if you don't have any good test coverage to ensure your site doesn't break. The option sets the constraints of your composer.json to the exact versions of your currently downloaded modules.

Now we run the command:

composer composerize-drupal --composer-root=. --drupal-root=. --exact-versions

Next:

  • Update your .gitignore and ignore the vendor/, core/ and modules/contrib folders. If the files were already commited you also need to remove them: Ignore files that have already been committed to a Git repository
  • Re-apply your patches! Since all the core code and contrib. modules are managed by Composer you'll need to add those patches to your composer.json:
    Something like this:
    "extra": {
        "enable-patching": true,
        "patches": {
            "drupal/core": {
                "2492171 - Adds transliteration to uploaded file and images": "_kodamera/patches/use_new_transliteration-2492171-72.patch"
           }
       }
       ...

When you run composer install they are automatically applied for you. No more manually work here. Yay!

Do some regression testing and if everything looks fine, you're done! Commit and deploy :)

Jan 25 2019
Jan 25

Let's say you've been working on this contributed project for a few months now. It has gone from Beta 1 to Beta 2 to Beta... Now, how long till its final release? How do you know when it's ready for the Drupal community to see and use? And this is precisely why the Drupal quality initiative was launched in the first place.

So that can we finally have some sort of a checklist at hand to use whenever we need to assess our code's level of quality:
 

  • the standards that we should evaluate our contributed projects by 
  • the specific elements that go into the quality of our projects, such as contributed Drupal modules
  • a certain hierarchy of quality that we could rate our own projects by
     

And so on...

For, let's admit it now:

Except for our own personal methodologies for self-assessment, there's no standardized benchmark that could help us evaluate our contributed Drupal projects. There's no way of knowing for sure when our projects are 100% ready to go from beta to... full release.

Now, here are the legitimate questions that this initiative brings forward, along with some of the suggested paths to take:
 

1. What Drupal-Specific Quality Metrics Should We Use to Evaluate Our Code?

How do you know when your contributed project is efficient enough to... be used by other members of the Drupal community?

You need some sort of criteria for measuring its level of quality, right? 
 

2. The Drupal Quality Initiative: A Checklist for Project Quality Assessment

And this is how the “Big Checklist” for Drupal modules has been put together. One outlining all those areas of a contributed Drupal project that you should carefully evaluate when assessing its quality.

Areas such as:
 

  • team management
  • documentation
  • testing
  • code
  • design
  • requirements
  • DevOps
     

All those factors and Drupal-specific elements that go into the quality of a contributed project.


3. Introducing the Idea of a Multi-Leveled Quality Hierarchy

What if we had multiple levels of quality to rate our Drupal projects?

Imagine some sort of hierarchy of quality that would challenge us to keep improving the way we write code for Drupal. To keep growing as teams working with Drupal.

Your project might be rated “level 1”, from a quality standpoint, on its first release. But it would still stand stand the chance to get a higher score for if you strove to meet all the other criteria on the checklist.


4. You'll Be Particularly Interested in The Drupal Quality Initiative If You're A...
 

  1. Site builder, scanning through the pile of contributed Drupal modules in search of the ones that perfectly suit your project's specific needs
  2. Drupal contributor in need of some sort of checklist that would include all those standards of quality and best practices to help you assess your own code's value
     

5. What About Non-Drupal Software Projects? How Is Their Quality Assessed?

In other words: how do other communities assess their projects' levels of quality?

What metrics do they use?

And here, the Drupal quality initiative's... initiator gives the “The Capability Maturity Level”, set up by the Software Engineering Institute, as an example.

The process model highlights 5 levels of “maturity” that a project can reach throughout its different development phases.They range from:
 

  • the“initial chaos”
  • to planning and collecting project requirements
  • … all the way to continuous process improvement
     

Now, just imagine a similar multi-level evolutionary benchmark that we could use to assess our own Drupal projects' levels of... maturity.
 

6. A Few Quality Indicators and Suggested Tools

And the whole Drupal Quality Initiative comes down to identifying the key endpoints for assessing a project's quality, right?

Here are just some of the suggested questions to use during this evaluation process:
 

  • Is it easy to use?
  • Does it perform the intended functions?
  • Is it efficient enough?
  • How many detected bugs are there per 1000 lines of code
  • How secure is it?
     

Now, for giving the most accurate answers to these quality assessing questions, you'll need the right toolbox, right?

All those powerful tools to help you:
 

  • check whether your code is spell checked
  • monitor the status of specific operations
  • check whether all strings use translation
  • see whether your code has been properly formatted
     

The END! And this is just a brief overview of the Drupal Quality Initiative.

What do you think now, does the suggested checklist stand the chance to turn into a standardized Drupal benchmark for assessing quality?

How do you currently determine your contributed projects' value?

Jan 23 2019
Jan 23

Progressively decoupled Drupal has gone from concept to buzzword. Until recently, when we've started to witness sustained efforts being made to set up a standard workflow for implementing this architecture.

New dedicated modules have been developed to fit those use cases where just a few particular blocks, affecting the website's overall performance, need to be decoupled. All while preserving Drupal's standard robust features.

Features too famous among content editors and site builders to be sacrificed in the name of high speed and rich UX. 

We've gradually shifted focus from “Why would I choose progressive decoupling over a headless CMS?” to:

“How precisely do I implement the progressive approach into my own decoupled Drupal project? Is there a standardized process, based on a set of dedicated modules, that I can leverage?”

And this is what I'll be focusing on in this post here.

More precisely, on the efforts for standardizing the whole workflow: see Decoupled Blocks and the SPALP module!
 

1. Progressively Decoupled Drupal: Compromise or Viable Alternative to an All-In Transition?

Is this approach nothing but a compromise between:
 

  • content editors — and all Drupal users working in the site assembly —  who depend on key features like content workflow, layout management, site preview, seamless administrative experience
  • and front-end developers, who're “dying” to “inject” application-like interactivity and high-speed front-end technologies into certain portions of the Drupal web pages?
     

Progressively decoupling blocks in Drupal is, indeed, the best compromise you could get between:
 

  1. your editorial team's “fear” of losing familiar Drupal features critical for their workflow
  2. front-end developers willing to experiment with new technologies promising top speed and richer user experiences
     

Developers get to leverage the JavaScript framework of their choice without interfering with the site assemblers' workflow. Flexibility at its best!

But does being a viable compromise makes it also a worthy alternative to the fully decoupling option?

It does.

Specifically because:
 

  1. it caters to all those who haven't been won over by the “headless CM movement” 
  2. it removes the risk of trading vital Drupal functionality for the benefits of a powerful front-end framework
     

In other words:

For all those Drupal projects requiring that only certain components should be decoupled, an all-in transition would be simply... redundant and unnecessarily risky.

For all those projects there's the progressively decoupled Drupal alternative.
 

2. Why Has this Approach to Decoupling Drupal Been So Unpopular?

How come the progressively decoupled Drupal strategy gained so little traction?

It seems that despite its drawbacks — the need to reinvent some of the lost “Drupal wheels” and its higher costs — the fully decoupled approach has been more popular.

And there are 3 main causes for this, that Dries Buytaert identified and exposed in his blog post on “How to Decouple Drupal in 2018”:
 

  1. progressive decoupling doesn't leverage server-side rendering via Node.js
  2. modern JavaScript cohabits with old-school PHP
  3. JavaScript's ascension is not going to stop any time soon; therefore, the risk of sacrificing some of Drupal's popular capabilities might still seem insignificant compared to the JS advantages at a front-end level
     

3. The SPALP Module: Towards a Standard Workflow for Implementing Progressive Decoupling

Now, back to this blog post's main topic:

Clear pieces of evidence that we're finally heading towards a standardized process for implementing this type of decoupled system.  

And one such evidence is the SPALP module: Single Page Application Landing Page. 

Here's a specific use case, so you can get an idea of its role in the entire workflow of a progressively decoupled Drupal project:

Let's say that you need to integrate a couple of JavaScript-based one-page apps into your Drupal website. The CMS will continue to be “in charge” of the page rendering, access control routing and navigation, while the JS apps would be developed independently, outside of Drupal. How would you configure these JS apps as Drupal web pages?

You'd use the SPALP module to configure each one of them so that:
 

  1. you stay consistent and “joggle with” the same configuration every time you need to add a new app to your Drupal website
  2. you make its easy for your content team to manage this entire ecosystem of single-page JavaScript apps
     

“And how does this module work?”

Here's the whole “back-stage” mechanism:
 

  1. the SPALP module helps you to set up a new “app landing page" content type, the one providing the URL for the app about to be integrated
  2. each one of these applications must have its own module that would declare a dependency on SPALP, include its JSON configuration and define its library
  3. once a module meeting all these requirements is enabled, SPALP will create a landing page node for it, which will store the initial configuration
  4. the SPALP module will add the pre-defined library and a link to an endpoint serving JSON each time that node is viewed
     

Note: speaking of the efforts made to create a “Drupal way” of implementing this decoupled architecture, you might want to check out Decoupled Blocks, as well. It's designed to empower front-end developers to use the JS framework of their choice to develop individual custom blocks that would be later on integrated into Drupal. No Drupal API knowledge required!


The END!

What do you think: will the community continue their efforts to build a standard workflow for the progressively decoupled Drupal approach? Or will it remain a conceptual alternative to headless Drupal?

Jan 22 2019
Jan 22

[embedded content]

Over the years I’ve written a fair bit about Drupal and its modules, but all the videos and tutorials focused on a single module or topic.

So I decided to try something different and record a video where I build a whole website in a single go. I recorded the video in one night and only stopped recording to get a drink.

In this video, which is over 3 hours long, I’ll teach you how to build a basic directory website. We’ll start right at the beginning by setting up a local Drupal site for this we’ll use DDEV-Local. Then we create content types, create a sub-theme, create a few custom views, a search page, media management functionality and so much more.

I’ve broken out the video into sections below with timecodes and extra resources. For the content below to make any sense you should follow along by watching the video.

Enrollments are now open for the Drupal 8 Site Building Bootcamp: 7-week program, 2 live lectures per-week. Enroll NOW!

1. Set up Local Drupal Site

Time: 00:01:33 – 00:09:49

Download Drupal

We first need to download the Drupal codebase, run the following Composer command:

composer create-project drupal-composer/drupal-project:8.x-dev SITE_NAME --stability dev --no-interaction

Replace SITE_NAME with the name of the folder.

Tip: If you want to speed up Composer then install the prestissimo plugin. This is a Composer plugin and has nothing to do with Drupal.

Configure DDEV-Local

We’ll use DDEV-Local to run our local Drupal 8 site. It requires Docker to run, and you can get the install instructions from their documentation site.

Once you’ve installed DDEV-Local go to your Drupal site within the terminal and run:

ddev config

You’ll be prompted with a few options, and it’ll configure the environment.

MacOS Users: If you’re using macOS make sure you set webcache_enabled to true in the ddev config.yml.

Go to your Drupal codebase and open .ddev/config.yml and change:

# From:
webcache_enabled: false
# To:
webcache_enabled: true

Time: 00:06:58

Links:

2. Create Content types and Taxonomy Vocabularies

Time: 00:09:50 – 00:29:08

Just like on any Drupal site we need to build the data model: content types and taxonomy vocabularies.

Content Types

Listing:

  • Body
  • Email
  • Listing categories
  • Logo
  • Website

Blog:

  • Body
  • Comments
  • Featured image
  • Tags
  • Blog categories

Taxonomy Vocabularies

  • Listing categories
  • Blog categories

Links:

3. Modify Content types

Time: 00:29:08 – 00:41:20

Once the content types have been created we’ll need to modify them. For this, we’ll use Display Suite.

To install Display Suite, run the following command:

composer require drupal/ds

If you’re keen to learn more about Display Suite check out our following tutorial series:

  1. How to Customize Content Pages
  2. How to Use Display Suite Fields
  3. How to Use Switch View Mode Sub-module
  4. Webinar: Customize Content Pages using Display Suite in Drupal 8

4. Create Bootstrap Sub-theme

Time: 00:41:22 – 01:01:40

We’ll use the Bootstrap theme on the site, and we’ll create a basic CDN sub-theme.

If you need step-by-step instructions on creating a Bootstrap theme, then read our “Getting Started with Bootstrap in Drupal 8“.

Install the theme using this command:

composer require drupal/bootstrap

Please note: The Bootstrap theme (as of this writing), only supports Bootstrap 3, not 4. If you need a Bootstrap 4 theme look at Barrio or Radix.

We have a tutorial on Barrio called “Getting Started with Bootstrap 4 using Barrio in Drupal 8“.

Bootstrap Layouts

The Bootstrap Layouts module ships a bunch of prebuilt layouts for Drupal 8. We’ll use these layouts in Display Suite.

composer require drupal/bootstrap_layouts

If you want to learn more about Bootstrap Layouts, then check out our tutorial “How to Implement Layouts using Bootstrap Layouts in Drupal 8“.

Links:

5. Block and Menu System

Time: 01:01:42 – 01:15:03

Once we’ve created our sub-theme, we’ll create four new footer regions.

Add the following into your theme’s .info.yml:

regions:
  footer_one: 'Footer one'
  footer_two: 'Footer two'
  footer_three: 'Footer three'
  footer_four: 'Footer four'

Add the following into page.html.twig (make sure you override the Twig file):

<div class="footer footer-grid {{ container }}">
    <div class="row">
        <div class="col-sm-3">
            {{ page.footer_one }}
        </div>
        <div class="col-sm-3">
            {{ page.footer_two }}
        </div>
        <div class="col-sm-3">
            {{ page.footer_three }}
        </div>
        <div class="col-sm-3">
            {{ page.footer_four }}
        </div>
    </div>
</div>

6. Views

Time: 01:15:03 – 01:38:10

We need to create a few custom Views for our website. The first one, which lists blog content is fairly simple.

The second, which is “My listing” is complicated because you have to deal with contextual filters.

Read our tutorial “Add Custom Tab to User Profile Page with Views in Drupal 8” for a step-by-step tutorial on implementing this type of View.

7. Build Search page using Search API

Time: 01:38:10 – 02:10:32

We’ll use the Search API and Facets module to build our custom listing search page.

Download the required modules using the following command:

composer require drupal/search_api drupal/facets

Watch our webinar “How to Build Custom Search Pages in Drupal 8” which covers the core Search module and Search API.

Links:

8. Media Management

Time: 02:10:55 – 02:30:54

We now need to add media handling functionality to the directory site.

Run the following Composer command to download the required modules:

composer require drupal/entity_embed drupal/ctools drupal/entity_browser drupal/inline_entity_form

For a detailed tutorial on configuring all this stuff and more go to “Managing Media Assets using Core Media in Drupal 8“. And there’s a video: “Live Training: Managing Media Assets using Core Media in Drupal 8“.

9. Roles and Permissions

Time: 02:30:56 – 02:51:10

Now we need to create a role called “Contributor” and configure its permissions.

To allow users to publish/unpublish listings, you’ll need to use Override Node Options.

Install it using the command below:

composer require drupal/override_node_options

The “Contributor” role needs the following permissions:

  • Use the Contributor HTML text format
  • Image: Create new media
  • Image: Delete own media
  • Image: Edit own media
  • Listing: Create new content
  • Listing: Delete own content
  • Listing: Edit own content
  • View own unpublished content
  • Override Listing published option

Create Registration Page

To create a registration page, we’ll use Multiple Registration.

Run this command to install it:

composer require drupal/multiple_registration

Read our “Create Individual Registration Forms using Multiple Registration in Drupal 8” for a detailed tutorial on the module.

Links:

10. Paragraphs

Time: 02:51:10 – 03:06:45

We’ll use the Paragraphs module to allow an editor to add a Bootstrap Jumbotron to a page.

Install the module by running:

composer require drupal/paragraphs

If you want to learn more about Paragraphs, then check out our free course, “Build Edge-to-edge Sites using Paragraphs in Drupal 8“.

Links:

11. Webform

Time: 03:06:47 – END

We’ll use the Webform module to build functionality which sends an email to the owner of the listing.

You can install Webform by running:

composer require drupal/webform

Below is the token which is used:

[webform_submission:submitted-to:author:mail]

Links:

Summary

I don’t expect many people to make it to the end of the video but if you did, congratulations! I hope you learnt something new by seeing how a Drupal site is built.

We can often learn a lot just by watching a developer build something.

Ivan Zugec

About Ivan Zugec

Ivan is the founder of Web Wash and spends most of his time consulting and writing about Drupal. He's been working with Drupal for 10 years and has successfully completed several large Drupal projects in Australia.

Jan 16 2019
Jan 16

Accidentally creating duplicate content in Drupal is like... a cold: 

Catching it is as easy as falling off a log.

All it takes is to:
 

  • further submit your valuable content on other websites, as well, and thus challenging Google with 2 or more identical pieces of content
  • move your website from HTTP to HTTPs, but skip some key steps in the process, so that the HTTP version of your Drupal is still there, “lurking in the dark”
  • have printer-friendly versions of your Drupal site and thus dare Google to face another duplicate content “dilemma”
     

So, what are the “lifebelts” or prevention tools that Drupal “arms” you with for handling this thorny issue?

Here are the 4 modules to use for boosting your site's immunity system against duplicate content.

And for getting it fixed, once the harm has already been made:
 

1. But How Does It Crawl into Your Website? Main Sources of Duplicate Content 

Let's get down to the nitty-gritty of how Drupal 8 duplicate content “infiltrates” into your website.

But first, here are the 2 major categories that these sources fall into:
 

  • malicious
  • non-malicious
     

The first ones include all those scenarios where spammers post content from your website without your consent.

The non-malicious duplicate content can come from:
 

  • discussion forums that create both standard and stripped-down pages (for mobile devices)
  • printer-only web page versions, as already mentioned
  • items displayed on multiple pages of the same e-commerce site
     

Also, duplicate content in Drupal can be either:
 

  • identical
  • or similar

And since it comes in “many stripes and colors”, here are the 7 most common types of duplicate content:
 

1.1. Scraped Content

Has someone copied content from your website and further published it? Do not expect Google to distinguish the copy from its source.

That said, it's your job and yours only to stay diligent and protect the content on your Drupal site from scrapers.
 

1.2. WWW and non-WWW Versions of Your Website

Are there 2 identical version of your Drupal website available? A www and a non-www one?

Now, that's enough to ring Google's “duplicate content in Drupal” alarm.
 

1.3. Widely Syndicated Content 

So, you've painstakingly put together a list of article submission sites to give your valuable content (blog post, video, article etc.) more exposure.

And now what? Should you just cancel promoting it?

Not at all! Widely syndicated content risks to get on Google's “Drupal 8 duplicate content” radar only if you set no guidelines for those third-party websites.

That is when these publishers don't place any canonical tags in your submitted content pointing out to its original source.

What happens when you overlook such a content syndication agreement? You leave it entirely to Google to track down the source. To scan through all those websites and blogs that your piece of content gets republished on.

And often times it fails to tell the original from its copy.
 

1.4. Printed-Friendly Versions

This is probably one of the sources of duplicate content in Drupal that seems most... harmless to you, right?

And yet, for search engines multiple printer-friendly versions of the same content translates as: duplicate pages.
 

1.5. HTTP and HTTPs Pages

Have you made the switch from HTTP to HTTPs?

Entirely?

Or are there:
 

  • backlinks from other websites still leading to the HTTP version of your website?
  • internal links on your current HTTPs website still carrying the old protocol?
     

Make sure you detect all these less obvious sources of identical URLs on your Drupal website.
 

1.6. Appreciably Similar Content 

Your site's vulnerable to this type of duplicate content “threat” particularly if it's an e-commerce one.

Just think of all those too common scenarios where you display highly similar product descriptions on several different pages on your eStore. 
 

1.7. User Session IDs 

Users themselves can non-deliberately generate duplicate content on your Drupal site. 
How? They might have different session IDs that generate new and new URLs.


2. 4 Modules at Hand to Identify and Fix Duplicate Content in Drupal

What are the tools that Drupal puts at your disposal to detect and eliminate all duplicate content?
 

2.1. Redirect Module

Imagine all the functionality of the former Global Redirect module (Drupal 7) “injected” into this Drupal 8 module!

In fact, you can still define your Global Redirect features by just:
 

  1. accessing the Redirect module's configuration page
  2. clicking on “URL redirects” 
     

How to Deal with Duplicate Content in Drupal: Global Redirect features
Image Source: WEBWASH.net

What this SEO-friendly module does is provide you with a user-friendly interface for managing your URL path redirects:
 

  • create new redirects
  • identify broken URL paths (you'll need to enable the “Redirect 4040” sub-module for that)
  • set up domain level redirects (use the “Redirect Domain” sub-module)
  • import redirects
     

Summing up: when it comes to handling duplicate content in Drupal, this module helps you redirect all your URLs to the new paths that you will have set up.

This way, you avoid the risk of having the very same content displayed on multiple URL paths.
 

2.2. Taxonomy Unique Module  

How about “fighting” duplicate content on your website at a vocabulary level?

In this respect, this Drupal 8 module:
 

  • prevents you from saving a taxonomy term that already exists in that vocabulary
  • is configurable for every vocabulary on your Drupal site
  • allows you to set custom error messages that would pop up whenever a duplicate taxonomy term is detected in the same vocabulary
     

2.3. PathAuto Module  

Just admit it now:

How much do you hate the /node125 type of URL path aliases?

They're anything but user-friendly.

And this is precisely the role that Pathauto's been invested with:

To automatically generate content friendly path aliases (e.g. /blog/my-node-title) for a whole variety of content.

Let's say that you want to modify the current “path scheme” on your website with no impact on the URLs (you don't want the change to affect user's bookmarks or to “intrigue” the search engines).

The Pathauto module will automatically redirect those URLs to the new paths using any HTTP redirect status.
 

2.4. Intelligent Content Tools      

Personalization is key when you strive to prevent duplicate content in Drupal, right? 

And this is precisely what this module here does: it helps you personalize content on your website.

How? Through its 3 main functionalities delivered to you as sub-modules:
 

  • auto tagging
  • text summarizing 
  • detecting plagiarized content 
     

Leveraging Natural Language Processing, this last sub-module scans content on your website and alerts you of any signs of duplicity detected.

Word of caution: keep in mind that the module is not yet covered by Drupal's security advisory policy!
 

3. To Sum Up

Setting a goal to ensure 100% unique content on your website is as realistic as... learning a new language in a week. 

Instead, you should consider setting up a solid strategy ”fueled” by (at least) these 4 modules “exposed” here. One that would help you avoid specific scenarios where entire pages or clusters of pages get duplicated.

Now, that's a far less utopian goal to set, don't you think?

Dec 17 2018
Dec 17

Drupal is an enormously welcoming community with countless online forums and community events to learn about the platform. Its open-source knowledge sharing and peer review is arguably second-to-none, and thanks to Acquia's Drupal certifications the Drupal learning process is becoming more consolidated.

However, nothing can quite beat the quality, focus, and hard work that goes into publishing a book. We’ve quizzed our Drupal developers and members of the Manchester tech community to find out which books every Drupal developer must read.


Drupal-Specific Books

 

Drupal 8 Module Development

Drupal 8 Module Development: Build and customize Drupal 8 modules and extensions efficiently

By Daniel Sipos

This book is a great welcome to Drupal 8, introducing you to the architecture of D8 and its subsystems, for a thorough foundational understanding. It guides you through creating your first module and continues to build upon your skills with more functionalities that all modern developers need to know.

View on amazon

Drupal Development Cookbook

Drupal 8 Development Cookbook - Second Edition: Harness the power of Drupal 8 with this recipe-based practical guide

By Matt Glaman

Using a fun, easy-to-follow recipe format, this book gives you an expansive look at the basic concepts of Drupal 8, in a step-by-step fashion. While this sometimes misses out on the ‘why’ of an action, it makes building new modules approachable and unintimidating for any level of developer.

View on amazon

Ambitious, intelligent, and a great Drupal developer? Check out our careers page.

CTI Careers

Drupal 8 Explained

Drupal 8 Explained: Your Step-by-Step Guide to Drupal 8

by Stephen Burge

Written in no-nonsense plain English, this book is great for any Drupal beginner. It’s been praised as the day-to-day reference book that any new developer should keep handy on their desk.

View on amazon

Drupal 8 Blueprints

Drupal 8 Blueprints: Step along the creation of 7 professional-grade Drupal sites

By Alex Burrows

This Drupal 8 guide will take you through 7 real Drupal 8 sites to demonstrate the latest practices in action. This all-encompassing view provides a look at the reasoning and methodology behind certain practices, and context for their larger impact on the site.

View on amazon

Definative Guide To Drupal 7

The Definitive Guide to Drupal 7 (Definitive Guide Apress)

by Benjamin Melancon

While new sites are being built in Drupal 8, it’s important the remember that many of the sites you’ll work on and maintain are in Drupal 7. This comprehensive book provides the nuts and bolts of any Drupal 7 site, to build a powerful and extensible system. Some concepts are slightly dated, so we’d recommend cross-checking online occasionally.

View on amazon

Pro Drupal 7 Development

Pro Drupal 7 Development (Expert's Voice in Open Source)

by Todd Tomlinson

This book is for slightly more ambitious developers as it quickly jumps through the basic modules to the more complex. Breaking down the development of APIs and improvements to Drupal 7, this book will have any Drupal Developer producing complex modules in no time.

View on amazon

Essential Development Books

Many coding principles span development languages and frameworks. Here are our essentials for any developer seeking the ability to produce high quality, clean code.

The Clean Coder

The Clean Coder: A Code of Conduct for Professional Programmers

By Robert C. Martin

This book delves into the difference between good and bad code. Split into 3 parts, the book first discusses principles, patterns, and practices of writing clean code. Real world case studies follow, before the book finishes with the signs of bad code and problem solving skills needed to de-bug and refresh any code base.

View on amazon

CSS

CSS Secrets: Better Solutions to Everyday Web Design Problems

by Lea Verou

CSS Secrets explains how to code common 'real world' solutions with CSS. Condensing the most useful and practical examples, this book is a more exciting read than the often extensive paperbacks which try to cover absolutely everything.

View on amazon

PHP and Javascript

Learning PHP, MySQL & JavaScript 5e (Learning PHP, MYSQL, Javascript, CSS & HTML5)

By Robin Nixon

Begin expanding your language stack with this multifaceted book. PHP is essential for any Drupal developer as it forms the core language of the Drupal framework. Meanwhile, learning Javascript, CSS and HTML5 will empower you to deliver more complex solutions.

View on amazon

And lastly, an open source book about… open source

The Cathedral & the Bazaar

By Eric S. Raymond

While this piece is slightly dated, it’s underlying concepts are still highly relevant and give great insight into the origins and essence of open source. It’s also free, so definitely still worth having a skim through… if you can handle the formatting!

Read it for free

I hope you've found some great reads here, if you've got a personal favourite please let us know below. Also if you're interested in advancing your Drupal career, please check out our careers page to see if there's a position perfect for you.

Careers at CTI Digital

Dec 10 2018
Dec 10

It's a fact: “the next generation” of web apps aren't just extremely fast, they're highly scalable, as well. Which brings us to the next question: “How do you scale a web application in Drupal?”

What tools, best practices, and latest techniques do you use for leveraging Drupal 8's scalability capabilities?

For ensuring that your custom web app will keep on scaling to:
 

  • handle sudden spikes in traffic
  • avoid downtime 
  • withstand “surprise” content overloads
     

Well, here they come:
 

1. But Is Drupal Scalable? How Scalable? 

Let's just say that:

Drupal's built with scalability in mind and that Drupal 8 is... extremely scalable.

It's powering some of the world's most trafficked and content-rich websites (Weather, Grammy, Princess Cruises...). Therefore, it's designed to cope with heavy infrastructures of thousand content contributors, Drupal users and site/app visitors...

And when gauging Drupal 8's scalability you need to go beyond Drupal's unmatched modularity: +30,000 free modules.

Instead, just think of:
 

  • Drupal turned into a central API 
  • all the improvements brought to Drupal 8's scalability till this day
  • Drupal 8 enabling you, right out of the box, to integrate it with a wide range of third-party apps, software, and systems
  • RESTful API now in core!!!
     

… and how all that empowers you, the Drupal web app developer, to easily serve JSON or HTML code.

And Drupal 8's unparalleled scalability comes down to this:

Empowering developers to create content and send it to any third-party app via JSON.

Of course, its out-of-the-box scalability can get further optimized via:
 

  • an established set of best practices
  • additional support from various tools and technologies
     

2. How to Scale a Web Application in Drupal: Server Scaling Techniques

Let's say that... “it's time”:

You've applied all the optimization techniques on your web application so that it should seamlessly “accommodate” the increasing influxes of traffic and content load. And still, its server hardware has started to show its limitations.

So, it's time to scale your server hardware. And you have 2 options at hand:
 

2.1. You scale up your server vertically 

This is the handiest method, so to say. That “emergency” technique to go for when:
 

  1. you don't have time to install a caching module
  2. there's no one in your team with the needed expertise for adding more servers
     

So, what do you do? You increase your existing server size. 

You boost its performance by adding more resources.

This way, it could keep up with all those new traffic challenges calling for more memory, more CPU cores...

Word of caution: there' no such thing as “sky is the limit” here; you'll still reach the limit of the hardware at some point when you scale up a web app in Drupal using this method.
 

2.2. You scale up your server horizontally

The second best practice for scaling up your server is a bit more complex.

And it involves 2 approaches, actually:
 

a. You separate your database from your Drupal web app

Basically, your database will have its own server and thus you get to split the load in 2. Then, you can vertically scale each one of the 2 servers.
 

b. You add multiple servers and distribute the load between them.

This is the most complex way to scale a web app in Drupal. 

Just think about it:

How will the servers included in this whole “ecosystem” “know” which users to take over?

It goes without saying that you'll need a load balancer for properly “splitting up” the traffic load. And a database server, as well.

See? It already gets more complex compared to the other 2 above-mentioned server scaling techniques.

Nevertheless, this is the method which, when done properly, will reduce dramatically the load that each server must handle.
 

3. “Juggling with” Multiple App Servers for Drupal

Let's say that you've opted for the last method of scaling up your server, so:

Now you find yourself facing the challenge of handling multiple app servers.

How will you deploy code to each of them simultaneously? That is the biggest question when you scale a web app in Drupal.

The best practice is to keep all your servers on the same local network. 

Having one single data center will speed up the data transfer compared to having it traveling through the internet.
 

The END! This how you can leverage Drupal 8's scalability capabilities and easily “adjust” your web app to withstand unexpected surges of traffic.

Have you tried other techniques and best practices? 

Nov 14 2018
Nov 14

"A Drupal 8 initiative to improve Drupal's content workflow", this is how Dries Buytaert first defined the Workflow Initiative, back in 2016. Now, coming back to 2018, you must be asking yourself a legitimate question: “How do I set up a content workflow in Drupal 8?”

“How do I manage, extend and customize an editorial workflow to fit my Drupal 8 website's publishing needs? One including multiple users, with different permissions, that manages the workflow status of... different content types.”

Which are the (not so) new content management features and functionality implemented to Drupal core by now? Those aimed at improving the user experience (editors, content authors...)?
 
Let's get you some answers:
 

1. Introducing: The Content Moderation Drupal 8 Module

Content Moderation has reached stable version in Drupal 8.5. 

Why should you care? What makes this core module of critical importance for creating your content publication workflow?
 

  • because otherwise, you'd have only two built-in states to “juggle with”: published and unpublished
  • because it enables you to build a simple workflow for drafts, too
  • … to set up new custom editorial workflows, as well, in addition to the default one
     

In short, what this module does is that it enables you to create a flexible content workflow process where:
 

  • one of the editors in your team stags a “Draft” content
  • and another user on your Drupal 8 website, with a different permission, reviews/updates it
     

It comes as a powerful tool for you to leverage when your workflow needs are more complex than “ON/OFF”.
 

2. How to Set Up a Simple Content Workflow in Drupal 8

You'll only need 2 modules for putting together the workflow for a basic content publishing scenario:
 

  • Workflows, that will provide just the framework needed for managing the states and transitions included in the process
  • Content Moderation, which will add the “Draft” state, a “Draft to Published” content workflow, and an admin view for handling all the drafts
     

And here's setting up a basic content publishing workflow in 4 simple steps:
 

  1. Enable the “Content Moderation” core module
  2. Go to “Configuration” and click the “Workflow” tab; it's the last one in the unfolding drop-down menu
  3. Open the “Workflows” page
  4. Tada! You've just turned on your default “Editorial workflow”
     

For now, you should be having 3 major states in your workflow:
 

  • draft
  • published
  • archived
     

Note: use permissions to grant content contributors the right to edit/create drafts, editors the “Transition drafts to published” permission, admins the right to “restore to draft transitions” and so on...

And voila! Your default editorial workflow, with the Content Moderation module ON, should suit your basic state tracking needs. It should fit any standard use case.

Now, if your workflow needs are a bit more complex and website-specific... keep on reading:
 

3. Content Revisions in Drupal 8

One of the most powerful features that Content Moderation will “turbocharge” your editorial workflow with is: 

Saving each change as a content revision in the database. 

It stores all revisions in the system.

But let's take a common scenario, shall we?

Let's say that a second editor decides to make an update to a piece of content (either a content type or a custom block type). He/she updates it, then saves it as a “Draft”. You'll then still have the published version of the content, that's live, on your Drupal website, as well as this Draft (or several of them), stored, as a revision, in your database.

A crucial functionality for any complex content publishing workflow:
 

  • with content revisions, you get to keep track of who's updated what and when
  • … to trigger log messages regarding those changes, informing other content authors that a given content has been edited
  • and you can also revert to the oldest revisions if needed
     

4. How to Extend and Customize Your Content Publishing Workflow 

Rest assured: there's no need for custom code writing, even if your content publishing needs are a bit more complex.

Here's what it takes to extend and to custom-tune your default content workflow in Drupal 8:
 

  1. While on your “Workflow” page, just click the “Add a new state” button and add more workflow states: “Needs Review” or “Second Review” etc.
  2. Next, make sure you adjust your transitions to support your newly added state(s). For instance, a “Second Review” state would require a “Move to Second Review” transition. 
  3. Then, apply your extended workflow to either a specific content type or to a custom block type
  4. You can also create new separate content publishing workflows to have a different one for your press releases, a separate publishing workflow, an editorial workflow for your blog posts, a warehouse workflow etc.
     

Defining multiple workflows in Drupal 8, each one with its specific “ecosystem” of states and transitions, is now possible.

How to Create and Manage a Content Workflow in Drupal 8: Set Up a Custom Content Workflow

Notes:

  • the transitions in your workflow will stand for the permissions that you'll assign to different Drupal roles in your team
  • use clear, descriptive verbs to name them
  • remember to grant editors the permission to undo transitions, as well (they might need to revert a piece of content to “Needs Work” once they've reviewed it, for instance)

In short:

By defining multiple states for your piece of content (Published, Pending Review, Ready for Review, Ready for Second Review, Unpublished, Draft etc.) and managing the permissions corresponding to the state transitions you can build a content workflow in Drupal 8 capable to support even the most complex publishing scenarios.

Now, another common scenario where a custom content workflow in Drupal 8 is needed is when you have a website publishing content to multiple platforms. 

You have a Drupal 8 website, a native application and an internal portal, let's say...

Your publishing workflow would look something like this:
 

  • first, content gets moderated to be published on the front-facing Drupal website
  • then, it gets put in the queue for review before it gets published (or declined) on each one of the other 2 platforms
     

Note: if you need to further extend your editorial workflow and to apply it to a custom entity, for example, you can always write a WorkflowType plugin that meets your specific needs.

Then, you can apply your custom workflow to... steps in ordering in a resto app, steps in a manufacturing process and to pretty much any entity (think beyond content) that needs to change its workflow states...
 

5. How Do You Know If You Really Need an Editorial Workflow?

Do you really need to use content moderation? To set up a whole workflow for your publishing scenario?

You do, if and only if:
 

  • there are multiple content authors uploading content on your website, content that needs to be reviewed before it gets published
  • you're managing a team of multiple admins, with different user roles
  • each moderator knows his/her role in the publishing chain
     

But if the content authors in your team have the very same type of permission as the admins and they just push content through, a content moderation workflow is useless.

It would only slow down the publishing process.

So, just because you have the option to set up a content workflow in Drupal 8, doesn't mean that you should rush to implement it on your own website, too... Maybe you just don't need a workflow.

The END! 

What do you think about these content management capabilities in Drupal 8? Are they powerful and diverse enough to suit your workflow needs? 

Nov 08 2018
Nov 08

What do you get when you put together: Drupal 8 + AI + UX? Drupal8's content management features and integration capabilities, AI, for storing and interpreting data and building a predictive model and UX for anticipating user behavior while adding a “human touch” to the equation? You get predictive UX in Drupal!

Is it possible? Can we implement predictive UX in Drupal and thus create anticipated user experiences that:
 

  • help you deliver meaningful content only    
  • simplify user choice
  • simplify users'... lives?
     

But how does machine learning actually power these predictive user experiences? What's the whole mechanism behind?

And how is predictive analytics UX any different from... personalization? 

Are there any “traps” to be avoided when using the same event data to make informed decisions on the customer's behalf? 

And last but not least: what makes Drupal 8 the best fit for predictively serving content?
 

1. What Is Predictive UX More Precisely?

“Less choice, more automation.”

Or: Anticipating users' needs and delivering them precisely and exclusively the content they need (when they need it). In other words: creating those predictive user experiences that anticipate and meet your customers' needs...

Which one of these 2 possible definitions do you prefer?

Or maybe you'd like a more “elaborate” one:

Predictive UX means leveraging machine learning and statistical analysis to make informed decisions for the customer.

And if we are to turn this definition into a mathematical equation, it would go something like this:

machine learning (predicting) + UX design (anticipating)= predictive UX (based on a predictive or anticipatory design)
 

2. But Isn't This Just Another Word for “Personalization”?

As compared to personalization, predictive UX goes beyond tailoring content to users' past choices:

It actually makes decisions on their behalf.

It's not limited to leveraging data in order to deliver dynamic content. Which would automatically call for heavy manual work.

Instead, predictive UX is AI-driven, thus automating decision making on the user's behalf.
 

3. How Does Predictive Analytics Benefit You and Your Customers?

Here's an empathy exercise for you:

You're a mobile app user who's being constantly “flooded” by heavy streams of disruptive information through push notification, by text or by email. Or you're an online customer faced with a discouragingly “beefy” set of options as you're about to order food for lunch. There are so, so many irrelevant options that you're striving to make your way through till you find the dish that really suits your preferences... that you just feel like closing the app and hitting the closest resto instead...

So, what if:

  • your app could... tell what you want to have for lunch and display the most relevant options only?
  • you would receive app alerts or push notifications in precisely the most appropriate moments (time of the day, of the month)?

It would:

  1. make your life so much easier
  2. improve your overall user experience 

As a company, by leveraging predictive analytics to deliver relevant user experiences only, you're winning your customers' loyalty.

You're simplifying their lives, after all...
 

4. Leveraging Machine Learning to Create Predictive User Experiences

What's the whole mechanism behind the creation of predictive user experiences?

How is the machine learning technology/tool leveraged to predict user behavior?

It's no more than a 3-step sequence:
 

  1. you first define the problem (using machine learning terms)
  2. gather data in a suitable format
  3. put together a model 
     

For instance, here's a machine-learning-based recommendation system deconstructed:
 

  • content-based recommendation: recommending items based on similar characteristics
  • collaborative filtering: recommending items/services based on other customers' preferences (customers with similar past choices)
     

Note: more often than not it's a mix of these 2 types of recommendation systems that you'll find.
 

5. Predictive UX: 4 Common Sense Principles to Consider
 

5.1. Simplify the UI: keep the most relevant design elements and meaningful content only.

Instead of forcing customers to make too many choices, to scan through chunks of content, go for a minimal interface! Trim down the “irrelevant fat” and keep the essential.

Leveraging machine learning and statistical techniques, you should know by then what's essential and meaningful in terms of information and functionality for your users.
 

5.2. Disrupt the all-too-familiar patterns now and then.

In other words: don't get trapped in the “experience bubble”, where you keep recommending the same familiar options and encourage the user to make the very same choices over and over again.

Consider adding disruptive layers, now and then, “tempting” them to try something new.
 

5.3. Avoid forcing those most relevant options on the user.

OK, so you have the data at hand, you're leveraging that machine learning algorithm that anticipates:
 

  • what the user needs
  • what the user wants
  • what the user's going to do next
     

That doesn't mean you should overlook that:

It's always the customer who makes the final choice!

So give them enough options to choose from! Put him/her in full control of the final decision-making process!
 

5.4. Create predictive user experiences that are helpful, not annoying

In other words: when it comes to push notifications, choose the most appropriate time (if you're a retailer, you can't possibly anticipate that anyone would read about your promotion during work hours).
 

6. Predictive UX in Drupal: What Makes Drupal 8 the Perfect Fit?

There are some particular characteristics that make Drupal the perfect “teammate” for a machine learning tool:
 

  • its content management features and (huge amounts of) data storing and maintaining capabilities
  • its API-first approach, which makes third-party integrations conveniently easy; you can integrate Drupal with any system providing an API and an interface 
  • the “decoupled architecture” approach, which enables Drupal to serve content in various ways
     

Now, just think about it:

Analyzing that huge volume of data, stored on your Drupal website, and leveraging it, using a machine learning tool, to create anticipated user experiences! Think of all the emerging possibilities of implementing predictive UX in Drupal!
 

7. And How Do You Implement Predictive UX in Drupal?

First of all: choose your machine learning tool.

Let's say you will have chosen to go with Apache PredictionIO for obvious reasons:
 

  • it's open source
  • it “spoils” you with a set of customizable templates
  • a full machine learning stack
  • the tool's also conveniently easy to deploy as a web service
     

Now, let's have a close look at the Drupal & machine learning tool interaction:

The Event Server collects data from your Drupal app/website — provides it to the Engine —this one reads it — it uses it to put together a predictive model, by leveraging machine learning​​​​ — one that it then sends over to your Drupal app/website — upon a query via REST

Et voila! A predictive result is sent to your Drupal website or application, one that will power a predictive user experience.

Now, since we've been talking about the event data that's being sent from Drupal to the machine learning tool and further “exploited” for building that predictive model, you should know that it comes in “2 flavors”:
 

  1. explicit: the user will have already rated or bought an item, so you have explicit information about his/her preferences 
  2. implicit: the already available information is being leveraged, since there's no past choice or user feedback to analyze for anticipating his/her needs
     

The END! What do you... predict:

Will we be witnessing more and more Drupal 8 websites leveraging predictive UX and, implicitly, machine learning technology, to create anticipated user experiences?
 

Photo by David Travis on Unsplash.

Nov 02 2018
Nov 02

What's your favorite tool for creating content layouts in Drupal? Paragraphs, Display Suite, Panelizer or maybe Panels? Or CKEditor styles & templates? How about the much talked about and yet still experimental Drupal 8 Layout Builder module?

Have you "played” with it yet?

As Drupal site builders, we all agree that a good page layout builder should be:
 

  1. flexible; it should empower you to easily and fully customize every single node/content item on your website (not just blocks)
  2. intuitive, super easy to use (unlike "Paragraphs", for instance, where building a complex "layout", then attempting to move something within it, turns into a major challenge)
     

And it's precisely these 2 features that stand for the key goals of the Layout Initiative for Drupal

To turn the resulting module into that user-friendly, powerful and empowering page builder that all Drupal site builders had been expecting.

Now, let's see how the module manages to “check” these must-have strengths off the list. And why it revolutionizes the way we put together pages, how we create, customize and further edit layouts.

How we build websites in Drupal...
 

1. The Context: A Good Page Builder Was (Desperately) Needed in Drupal

It had been a shared opinion in the open source community:

A good page builder was needed in Drupal.

For, even if we had a toolbox full of content layout creation tools, none of them was “the One”. That flexible, easy to use, “all-features-in-one” website builder that would enable us to:
 

  • build complex pages, carrying a lot of mixed content, quick and easy (with no coding expertise)
  • fully customize every little content item on our websites and not just entire blocks of content site-wide
  • easily edit each content layout by dragging and dropping images, video content, multiple columns of text and so on, the way we want to
     

Therefore, the Drupal 8 Layout Builder module was launched! And it's been moved to core upon the release of Drupal 8.6.

Although it still wears its “experimental, do no use on production sites!” type of “warning tag”, the module has already leveled up from an “alpha” to a more “beta” phase.

With a more stable architecture now, in Drupal 8.6, significant improvements and a highly intuitive UI (combined with Drupal's well-known content management features) it stands all the chances to turn into a powerful website builder.

That great page builder that the whole Drupal community had been “craving” for.
 

2. The Drupal 8 Layout Builder Module: Quick Overview

First of all, we should get one thing straight:

The Drupal 8.6. Layout Builder module is Panelizer in core!

What does it do?

It enables you, the Drupal site builder, to configure layouts on different sections on your website.

From selecting a predefined layout to adding new blocks, managing the display, swapping the content elements and so on, creating content layouts in Drupal is as (fun and) intuitive as putting Lego pieces together.

Also, the “content hierarchy” is more than logical:
 

  • you have multiple content sections
  • you get to choose a predefined layout or a custom-design one for each section
  • you can place your blocks of choice (field blocks, custom blocks) within that selected layout
     

Note: moving blocks from one section to another is unexpectedly easy when using Layout Builder!
 

3. Configuring the Layout of a Content Type on Your Website

Now, let's imagine the Drupal 8 Layout Module “in action”.

But first, I should point out that there are 2 ways that you could use it:
 

  1. to create and edit a layout for every content type on your Drupal website
  2. to create and edit a layout for specific, individual nodes/ pieces of content
     

It's the first use case of the module that we'll focus on for the moment.

So, first things first: in order to use it, there are some modules that you should enable — Layout Builder and Layout Discovery. Also, remember to install the Layout Library, as well!

Next, let's delve into the steps required for configuring your content type's (“Article”, let's say) display:
 

  • go to Admin > Structure > Content types > Article > Manage Display
  • hit the “Manage layout” button
     

… and you'll instantly access the layout page for the content type in question (in our case, “Article”).

It's there that you can configure your content type's layout, which is made of:
 

  • sections of content (display in 1,2, 3... columns and other content elements)
  • display blocks: tabs, page title...
  • fields: tags, body, title
     

While you're on that screen... get as creative as you want:
 

  • choose a predefined layout for your section —  “Add section” —  from the Settings tab opening up on the right side of the screen
  • add some blocks —  “Add block”; you'll then notice the “Configure” and “Remove” options “neighboring” each block
  • drag and drop the layout elements, arranging them to your liking; then you can click on either “Save Layout” or “Cancel Layout” to save or cancel your layout configuration
     

And since we're highly visual creatures, here, you may want to have a look at this Drupal 8 Layout Builder tutorial made by Lee Rowlands, one of the core contributors.

In short: this page builder tool enables you to customize the layout of your content to your liking. Put together multiple sections — each one with its own different layout —  and build website pages, carrying mixed content and multiple layouts, that fit your design requirements exactly.
 

4. Configuring and Fully Customizing the Layout of a Specific Node...

This second use case of the Drupal 8 Layout Builder module makes it perfect for building landing pages.

Now, here's how you use it for customizing a single content type:
 

  • go to Structure>Content types (choose a specific content type)
  • click “Manage display” on the drop-down menu 
  • then click the “Allow each content item to have its layout customized” checkbox
  • and hit “Save”
     

Next, just:
 

  • click the “Content” tab in your admin panel
  • choose that particular article that you'd like to customize
  • click the “Layout” tab
     

… and you'll then access the very same layout builder UI.

The only difference is that now you're about to customize the display of one particular article only.

Note: basically, each piece of content has its own “Layout” tab that allows you to add sections, to choose layouts. 

Each content item becomes fully customizable when using Drupal 8 Layout Builder.
 

5. The Drupal 8.6. Layout Builder vs Paragraphs

“Why not do everything in Paragraphs?" has been the shared opinion in the Drupal community for a long time.

And yet, since the Layout Builder tool was launched, the Paragraphs “supremacy” has started to lose ground. Here's why:
 

  • the Layout builder enables you to customize every fieldable entity's layout
  • it makes combining multiple sections of content on a page and moving blocks around as easy as... moving around Lego pieces 
     

By comparison, just try to move... anything within a complex layout using Paragraphs:
 

  • you'll either need to keep your fingers crossed so that everything lands in the right place once you've dragged and dropped your blocks
  • or... rebuild the whole page layout from scratch
     

The END!

What do you think:
 

Does Drupal 8 Layout Builder stand the chance to compete with WordPress' popular page builders?


To “dethrone” Paragraphs and become THAT page layout builder that we've all been expected for? Or do you think there's still plenty of work ahead to turn it into that content layout builder we've all been looking forward to?

Oct 16 2018
Oct 16

[embedded content]

Video sections

Bootstrap is a powerful front-end framework which helps you build sites and web applications faster by offering prebuilt CSS and JavaScript components.

Some of the CSS components it offers are a grid system, buttons, navigation, jumbotron and so much more. On the JavaScript side, it comes with a few useful items such as a modal, collapsible divs, carousel to name a few. Read the Bootstrap documentation to find out more.

Bootstrap in Drupal

If you search for “drupal bootstrap” in Google, the first result will likely be the Bootstrap theme. This theme is the most popular on drupal.org with over 150,000 reported installs. But as of this writing, the theme only supports Bootstrap 3, not version 4 which is the latest.

So if you want to use Bootstrap 4 you’ll need to use another theme until the Bootstrap theme supports version 4.

In this tutorial, you’ll learn how to configure and use the Drupal 8 version of the Barrio theme which uses Bootstrap 4.

Getting Started

Before we can begin, go download the Barrio theme.

Using Composer:

composer require drupal/bootstrap_barrio

Create Sub-theme

The recommended way of using a theme in Drupal is to first create a sub-theme. You’ll never want to use Barrio directly. If you need to customize how things look, i.e., change CSS and override templates, then do it in the sub-theme and not Barrio itself, this way you can keep Barrio up-to-date.

If you want to learn more about sub-themes in general. Check out the Creating a Drupal 8 sub-theme, or sub-theme of sub-theme documentation page.

Let’s now look at creating a sub-theme which pulls Bootstrap via a CDN, this is the quickest and easiest way to get started.

Create CDN Sub-theme

1. Go to the bootstrap_barrio directory and copy the subtheme directory into /themes.

2. Change the subtheme directory name to anything you want, I’ll change it to barrio_custom (everywhere you see barrio_custom, use your actual sub-theme name).

Now we need to go through the sub-theme and replace bootstrap_barrio_subtheme to barrio_custom.

3. Rename the following files:

  • _bootstrap_barrio_subtheme.theme -> barrio_custom.theme
  • bootstrap_barrio_subtheme.info.yml -> barrio_custom.info.yml
  • bootstrap_barrio_subtheme.libraries.yml -> barrio_custom.libraries.yml
  • config/install/bootstrap_barrio_subtheme.settings.yml -> config/install/barrio_custom.settings.yml
  • config/schema/bootstrap_barrio_subtheme.schema.yml -> config/schema/barrio_custom.schema.yml

4. Open  barrio_custom.info.yml change the name of the sub-theme and rename the libraries section from bootstrap_barrio_subtheme to barrio_custom.

From this:

To this:

5. Open barrio_custom.theme (formerly_bootstrap_barrio_subtheme.theme) and change the function name:

// From:
bootstrap_barrio_subtheme_form_system_theme_settings_alter(&$form, FormStateInterface $form_state)
// To:
barrio_custom_form_system_theme_settings_alter(&$form, FormStateInterface $form_state)

6. Open config/schema/barrio_custom.schema.yml (formerly config/schema/bootstrap_barrio_subtheme.schema.yml) and change the following:

# from:
bootstrap_barrio_subtheme.settings:
# to:
barrio_custom.settings:

7. Open color/color.inc file and change the following:

// From:
'preview_library' => 'bootstrap_barrio_subtheme/color.preview',
// To:
'preview_library' => 'barrio_custom/color.preview',

8. Last but not least, open js/global.js and change the following:

// Change this:
Drupal.behaviors.bootstrap_barrio_subtheme = {
// To this:
Drupal.behaviors.barrio_custom = {

Now that you’ve created a sub-theme go to the Appearance page in your Drupal site and install your sub-theme by clicking on “Install and set as default”.

The front-end of your Drupal site should look something like the image below:

The actual Bootstrap 4 library is being loaded via a CDN which is the default behavior in the Barrio sub-theme and that’s why everything works without downloading the library locally. Of course, this can be changed and we’ll look at how to do that next.

Download Local Version of Bootstrap

In the sub-theme we created above, we’re pulling in Bootstrap through the CDN. Let’s configure it now to use a local version of Bootstrap.

1. Go to the Download page and click on Download in the “Compiled CSS and JS” section.

2. Extract the zipped file into /libraries directory in your Drupal site and rename the folder to bootstrap. 

The path to the css and js folder should be /libraries/bootstrap/css and /libraries/bootstrap/js.

3. Open up *.libraries.yml in your sub-theme, mine is called barrio_custom.libraries.yml and change the bootstrap section like so:

From this:

bootstrap:
  js:
    /libraries/popper/popper.min.js: {}
    /libraries/bootstrap/dist/js/bootstrap.min.js: {}
  css:
    component:
      /libraries/bootstrap/dist/css/bootstrap.min.css: {}

To this:

bootstrap:
  js:
    /libraries/bootstrap/js/bootstrap.bundle.min.js: {}
  css:
    component:
      /libraries/bootstrap/css/bootstrap.min.css: {}

Bootstrap 4 has two dependencies Popper and jQuery. Drupal comes with jQuery already and to save a bit of effort will use the bootstrap.bundle.min.js which comes with Popper whereas, bootstrap.min.js doesn’t.

4. Open the *.info.yml file in your sub-theme and change barrio_custom/bootstrap_cdn under libraries to barrio_custom/bootstrap.

From this:

libraries:
  - barrio_custom/bootstrap_cdn
  - barrio_custom/global-styling

To this:

libraries:
  - barrio_custom/bootstrap
  - barrio_custom/global-styling

5. Rebuild the site cache by running drush cr or drupal cache:rebuild or by going to /admin/config/development/performance and clicking on “Clear all caches”.

If the JavaScript or CSS file isn’t loading or the site looks broken. Make sure the paths in the *.libraries.yml file is correct and that the Bootstrap library is correctly in the /libraries directory.

Theme Settings

The Barrio theme allows you to configure a lot through the Settings page, which you can access by clicking on the Settings link after you’ve activated the theme. I won’t go through absolutely everything, however, I’ll mention some important settings.

To access the settings page, click on Appearance in the toolbar and Settings next to the installed theme.

Layout Settings

From the Layout tab, you can configure aspects of the layout such as the type of container, i.e., fluid or non-fluid and how wide the sidebar columns should be.

If you select “Fluid container”, then your website will be full-width with gutters on each side.

The “Sidebar first layout” and “Sidebar second layout” let you configure the width of each sidebar.

Components Settings

From the Components tab, you can configure the buttons and the navbar.

The most important section in this tab is the navbar. It lets you configure it without having to modify any CSS or SASS files.

Affix Settings

In this section, you can configure components like the navbar or sidebar to be affixed to the top when scrolling.

If you check “Affix navbar”, it’ll stick the navbar to the top as you scroll down the page.

Here’s an example:

Scroll Spy

In this area, you can configure the Scrollspy functionality in your Drupal Bootstrap site.

Fonts Settings

From the Fonts tab, you can configure what fonts will be used and icon set.

Colors

And finally, from the Colors tab, you can configure the color of the messages and how tables are displayed.

Color Scheme

One thing I do like about Barrio which is different to the Bootstrap theme is the ability to change the color scheme directly in the theme.

Now, this isn’t groundbreaking and Drupal’s had this ability for a long time, but being able to easily change colors without modifying CSS or compiling SASS is a nice touch.

However, there is a limitation on which colors can be changed. You can’t change Bootstrap colors: primary, secondary, success, danger, warning or info from the color scheme section.

So that is a quick overview of the settings page. My guess is you’ll spend most of your time configuring the navigation bar and grid layout. But do spend some time familiarizing yourself with the options available.

Bootstrap Library

Another way to load Bootstrap is by using the Bootstrap Library module. One of its benefits is the ability to change which version of the CDN library you want to use without modifying the *.libraries.yml file in your sub-theme.

1. Start things off by first downloading the module and then installing it.

composer require drupal/bootstrap_library

2. Go to the Settings page of your sub-theme and scroll to the bottom and from “Load library” choose how you want the library to be loaded.

  • CDN: This will load Bootstrap through a CDN.
  • Local non minimized (development): This will use the non minified version stored in the /libraries directory
  • Local minimized (production): This will use the minified version stored in the /libraries directory.

As long as you’ve downloaded Bootstrap and added it into the /libraries directory as explained early, the “Local non minimized” and “Local minimized” should work.

Bootstrap Library Settings

The Bootstrap Library module comes with a configuration page, just go to Configuration and click on Bootstrap Library.

If you choose None from “Load library” on the theme settings page, then whichever way Bootstrap is configured to load from this page is what will be implemented.

From this “Load Boostrap from CDN” section, you can choose if a CDN is used and which version. If you prefer to load Bootstrap locally, then select “Load locally”.

Then from “Minimized, Non-minimized, or Composer version” select which local version you want to use.

Form “Theme visibility” select which themes will have Bootstrap loaded.

Make sure you select your theme from the multi-select or the library will not load and your site will be broken.

From the “Activate on specific URLs” section, you can include or exclude the library on specific paths.

From the “Files settings” you can choose if you want CSS and/or JavaScript files loaded.

If you decide to use Bootstrap Library to load the library then make sure your sub-theme isn’t loading the library itself because you’ll end up loading the library twice.

Remove any library declarations from the *.info.yml file in your sub-theme. This will stop your sub-theme from loading the library.

Rebuild the site cache and you’re good to go.

Summary

The current state of Bootstrap in Drupal 8 is this. If you need to use Bootstrap 3, then use the Bootstrap theme. If, however, you want to use Bootstrap 4 then look at Barrio, Bootstrap4BootBase or Radix.

If you know of any good Bootstrap 4 base themes then please leave a comment.

Ivan Zugec

About Ivan Zugec

Ivan is the founder of Web Wash and spends most of his time consulting and writing about Drupal. He's been working with Drupal for 10 years and has successfully completed several large Drupal projects in Australia.

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