Jan 17 2020
Jan 17

Drupal 9 is scheduled for release on June 3, 2020. And as with any highly anticipated release, questions abound: “What will change from Drupal 8 to Drupal 9?” “What do I need to do to prepare before upgrading?” And top-of-mind is the big question: “What will Drupal 9 be like to work with?”

Read on as we share what you’ll need to know … and what might surprise you.

Anybody who’s upgraded from Drupal 7 to Drupal 8 recalls the giant chasm between the two systems. Almost 200 new features were launched including an entirely new page editor, a new theme engine, a new text editor, and new field types, to name but a few.

This gap doesn’t exist between Drupal 8 and Drupal 9. In fact, on the surface, there IS no difference: Drupal 9 has the same code, functions, and feature set as Drupal 8.9.

So why release it then? As it turns out, there are differences — they’re just not front-and-center on the interface.

Time to Clean House

Throughout its development cycle, Drupal 8 has wound up with a lot of code debt: functions that were created programmatically and used for some time but have been rendered redundant by more efficient functions.

These bits of code clutter up Drupal 8 like your old CDs and DVDs clutter up your bookshelf: There’s nothing wrong with them, but you probably don’t need them anymore now that you have something more efficient.

The result of all this extra code is that programmatically, there might be 10 different ways to do one single thing.

What Drupal has done is marked all of those code items in the backend code base as being “deprecated”. When Drupal 9 comes out, the plan is to remove all the deprecated code on this list, leaving only the latest version of whatever that code’s API is. They’ll also be updating third-party dependencies, such as Symfony and Twig. From Drupal’s site:

“Drupal 9 will be a cleaned-up version of Drupal 8. It will be the same as the last Drupal 8 minor version with our own deprecated code removed and third-party dependencies updated. We are building Drupal 9 in Drupal 8.”

Will Drupal 9 Be Better?

Yes, but not without some minor risks.

Jettisoning all this deprecated code will result in a much faster, cleaner, and better-operating version of Drupal. However, if you have legacy programs whose modules use some of that deprecated code, you could find yourself with some broken processes.

How to Prepare for Drupal 9

In general, upgrading to Drupal 9 is not an onerous process – it can literally be done via a single command. What will take more time is monitoring and auditing code bases to ensure that none of your functionality is dependent upon deprecated code.

Fortunately, Drupal is well prepared for this, and has indicated that the Drupal 8 branch of the Upgrade Status module can be used  to identify and report on any deprecated code:

“This module scans the code of the contributed and custom projects you have installed, and reports on any deprecated code that must be replaced before the next major version. Available project updates are also suggested to keep your site up to date as project will resolve deprecation errors over time.”

In addition, we anticipate that when downloading or updating modules, Drupal will likely advise whether there are compatibility issues due to bad functions. However, that notification system isn’t currently in place (if it indeed happens at all), so your best bet is to work with your development partner, who can audit your code to identify any trouble spots.

Marie Kondo-ing Your Infrastructure

Drupal 9 will be a much faster and more streamlined platform, but it doesn’t exist in a vacuum. If the rest of your operational architecture is similarly full of code debt and redundant processes, updating Drupal 9 will be akin to sending a Lamborghini down a pothole-rutted road: That powerful engine is wasted if the route is slowing it down.

So, going to Drupal 9 is an excellent opportunity to look at your legacy systems, audit them as well, and make sure your entire infrastructure is clean, fast, and free of roadblocks.

The Bottom Line

In general, upgrading to Drupal 9 should not be a complex or lengthy process. By cleaning out the clutter and performing some common dependencies, Drupal is practicing good development hygiene and providing its customers with a more streamlined system that will be faster … but still familiar.

Want to know more? Contact us today!

Jan 15 2020
Jan 15

With websites playing a major role in determining customer needs and impacting business sales, a second’s lapse in loading can make a customer think twice about staying on the website. 

As per Amazon’s findings, it stands to lose up to $1.6 BILLION per year if their site was slowed down by just one second. 

A reliable and fast web hosting provider can play a crucial role for your business to retain online users. 

While looking for a hosting provider for your website, what qualifies as the best solution? Does CMS specific hosting really have an impact on website performance?

Let’s find out! 

Why Drupal-Specific Hosting?

Drupal specific hosting is safer and better as it is more compatible out of the box and comes with a bundle of other benefits: 

1. Easier Installation For Quicker Website Building

Choosing Drupal-specific hosting providers helps with quick 1-click installs which can be completed within minutes. It’s best to to opt for CMS friendly web hosting solutions to sync up easily.

2. No Further Cost Associated

A Drupal specific host can provide a server infrastructure that is specifically optimized for running Drupal websites at no extra hidden cost.

3. Flawless User Experience

The benefit of working with Drupal-specific hosting is that it can notify you of any website performance issues or of any upcoming minor or major release and assures seamless user experience.

4. Strong Community Support

Drupal Community support for your website as well as your hosting provider with a plethora of huge libraries of modules and extensions can support you if you get stuck.

What are Drupal Web Hosting Requirements?

It is essential to choose a hosting provider which can match the setup of the CMS you’re using. 

With Drupal being a  CMS which has numerous modules running, it would need a hosting solution which can offer a huge spacing model. A basic Drupal site will need around 2 GB of RAM and 10 GB of total storage, MySQL 5.5 or higher for Drupal 8 and MySQL 5.0.15 or higher for Drupal 7. Also, the core installation takes about 100 MB on the web server, depending upon the modules, themes and content needed for your website. 

What Qualities Determine Best Hosting Provider?

 

With multiple options of popular web hosting available out there, choosing the right Drupal hosting can be a humongous task. Not just fast server speeds, but qualities to look in a hosting provider include robust security, one-click Drupal installs, migration assistance, scalable hosting, daily backups, and which come with Drupal utilities pre-installed. 

We have curated a list of things which you should consider in the hosting provider for your website. They’re listed as follows:

 

  • Higher Uptime Percentage: While choosing a hosting provider, ensure that it has a reputable uptime percentage, preferably above 99.5%, which shows how much time your hosted website will be online for its users. A weak server and unstable network connections of a hosting provider can often make your website offline.
  • Better Page Load Speed: Server speed is different than website speed. There’s no use optimizing your website if it is sluggish on the server it’s hosted on. With only 3 seconds to catch a visitor’s attention, you don’t want to lose one with a slow server response time. To stand out amongst million websites on the web, a super-fast loading website can transform a visitor to a customer.
     
  • Reliable Customer Support: This is an important aspect for your web hosting and should not be overlooked. Your provider should offer support on emails, chat, phone and much more and should have a responsive reputation in their support department. 
  • Automated Backup Restore: A good host will ensure daily website backup of all content, files, and code in case of unpreventable accidents.
  • Standard Development Workflows: An ideal Drupal hosting solution will usually come with three environments (dev, stage and live) in the cost of the subscription. Dev environment is used only by the development team to build and test new features, stage environment for bug fixes before they are launched to your live/production site, live environment being client facing with live content
  • Cost-Effectiveness: Well, who doesn’t want an affordable and reliable web host? 

Srijan’s Recommendations For Drupal Website Hosting

We’ve chalked out a list of some of the best Drupal platforms that are trusted and proven to provide the best service for small to enterprise business.

AcquiacloudimageAcquia Cloud platform tops our list of the best Drupal hosting providers. A trustable name in the hosting industry, it is not only secure and compliant, but also is improved to be able to support Drupal 8 sites. The provider has a huge support staff and is the most preferred channel for big names like BBC world.  Its starting price for small businesses is $141/month and ranges to $795/month for mid-size businesses. Users could try the free version before deciding to go for it. 

Pantheonimage

Pantheon offers a competitive price for Drupal hosting with uncompromisable performance. Makes your Drupal run faster, this hosting provider handles traffic spikes without any hiccups. Big names like Apigee, Tableau rely on it and stands strong based on user reviews. Offering in-built dev, staging and live environments, it is developer friendly provider helping them deploy code securely, using a continuous integration workflow. Its most popular plan starts from $114/month and is apt for traffic-intensive websites.

Sitegroundimage

Siteground hosting provider is tailored as per your Drupal website needs. Well backed by Drupal experts, the plan comes with an easier start, alongwith 1-click Drupal install and no-downtime for your website. Here’s a list of its amazing features:

  • 30 daily backup of website
  • 100% security from attacks
  • 24/7 uptime monitoring
  • Latest technology hardware used
  • 24*7 Drupal expert support available

It offers affordable hosting plans starting from $3.95/month. 

AWS offers a cloud hosting platform for your Drupal website. Its extensive computing power and faster content delivery can help your businesses scale and grow rapidly. It offers various services to host Drupal 8 in a distributed environment.

It is considered best for medium to large enterprises. You can check the pricing details here and use the calculator to see if the cost suits your budget.

A2hostingimageHigh powered hosting to meet your needs, it offers 20 times faster speed for your Drupal website at four affordable plans for shared, reseller, VPS and dedicated server hosting. It is optimized for speed and performance, with Drupal being pre-installed with every hosting plan. Here’s a highlight of what it offers:

  • Fast servers for a supreme user experience
  • Friendly and knowledgeable support team available 24/7/365
  • Completely risk free money back guarantee
  • 99.9% uptime commitment

While there are numerous providers for hosting a site and some of them appearing just tailor made specific to unique needs of Drupal sites, if you need assistance in deciding which one suits your needs, contact us. Experts at Srijan can guide you to opt for the best hosting solution as per your Drupal needs.

Jan 14 2020
Jan 14

Content management systems (CMSs) are the engine that drive content creation on the web today. They form the foundation that we build on for publishing and sharing information, creating digital experiences and conducting online retail. WordPress and Drupal are staples in the CMS world and they have both been around a long time. WordPress is known for its intuitive and easy-to-use interface. Drupal is known for its flexibility and complexity. While both have their strengths and weaknesses, the usability gap between WordPress and Drupal is changing. This article will show you the current state of Drupal’s admin user experience in a side-by-side comparison with WordPress, the most widely used CMS. If you’re familiar with one CMS but not the other, this comparison is also a good introduction to the other.

TL;DR: The primary goal of this article is to dispel the perception that Drupal is widely different and harder for administrators to use than WordPress. If you don’t care about the background behind this perception, just skip down to the direct comparison.

WordPress is easy, Drupal is hard… why does this perception exist

But first, a little background. The dominant CMS in terms of number of sites running on it is WordPress. It’s estimated to power about 62% of all websites that use a CMS, meaning multiple millions of websites are using it. Why is WordPress so popular? WordPress started as a blogging engine with a focus on being easy-to-use. This proved to be incredibly important because it meant that nearly anyone could get a WordPress site up and running fast and be able to use it with little-to-no training. The idea caught fire with both individuals and local businesses who just wanted a simple, low-cost website that others could find online. Web developers and agencies also finally had a framework that allowed their clients to make simple content edits within an admin environment that was friendly. Of course, WordPress today can be used for much more than a simple website, but it is still ideal for simple websites. Another key takeaway here is this perception of WordPress as being easy-to-use. This reputation holds true just as much today as it ever did in the past.

This article isn’t actually meant to praise and promote WordPress. Instead, much of this article will focus on another popular CMS, Drupal. Drupal is a fantastic CMS and is incredibly powerful when used correctly. In many web development circles, Drupal is the go-to solution for providing a robust solution for today’s CMS driven website development. It’s thriving both in usage and as a community of enthusiasts, but while WordPress sits in #1 spot with 62% of the market share, Drupal holds steady at #3 with about 3%. It still means there are many hundreds of thousands of websites powered by Drupal, but the number of websites using it pales in comparison to WordPress.

Why isn’t Drupal more popular? Well, anyone who knows Drupal (and even many who don’t) will tell you that Drupal is best suited for large websites with high traffic and complex requirements. Universities, government, nonprofits and online retailers are a sample of who uses Drupal. Drupal out-of-the-box isn’t as ready to use as WordPress, so it’s unlikely a suitable fit for simple websites. For individuals, configuring Drupal is a steep learning curve. For local web agencies, it takes more time to setup which means they must charge more. These reasons alone largely take Drupal out of the running for many websites, so for Drupal it’s more about use case than mass adoption.

With that said, Drupal’s ability to be configured and developed on literally means it can handle nearly any situation required of it, whether that means selling products for enterprise businesses or being the integration layer between multiple platforms. While this inherent flexibility is great for software developers, Drupal’s perception of complexity combined with a historically underwhelming admin experience has cemented a reputation that Drupal is unintuitive and difficult to use for the end user, the people who will be using it every day. While in my opinion this isn’t true of today’s Drupal, like WordPress it’s reputation precedes it. In Drupal’s case, however, this reputation isn’t as flattering and it’s something that our sales and outreach teams battle with often.

For Drupal, it’s time for change

Like WordPress, Drupal is open source software. It’s free to use and anyone has full access to the underlying code to modify and build upon. Both platforms have a core team for advancing key initiatives and a massive community of individuals and organizations that support the initiatives while also adding additional functionality through plugins (WordPress lingo) or modules (Drupal lingo).

While usability has always been important to WordPress (since it started as a blogging platform), Drupal was historically more focused on being open and flexible. It’s user experience has continuously improved with each version release, but late in 2018 marked the beginning of a big push towards modernizing the Drupal admin user interface (UI). Drupal is really amazing software and it’s time that the admin experience catches up.

Introducing Claro, Drupal’s new admin UI

Drupal 8 Claro admin theme
Claro interface design mockup courtesy of Drupal.org

Claro is the new admin theme being built as part of the Admin UI Modernization initiative. It’s included with every Drupal 8 site, new and old, and can be enabled right now if you so choose. Just be aware that it is currently considered “experimental” while progress continues to be made. It’s not yet in its finished state, but you can view the development roadmap here to see what is still left to do.

Side-by-side: WordPress & Drupal Admin UI Comparison

On to the comparison!

For WordPress, I’m using version 5.3.2 (released Dec. 18, 2019) which comes with its own Twenty Twenty default theme and content.

For Drupal, I’m using version 8.8.1 (also released Dec. 19, 2019. How about that!) and the new, but experimental, Claro admin theme. If you’re looking at this at a later date, some aspects may be different (for the better!) as development of the theme continues. I’ve also installed Drupal using the official Umami demo install profile so that I have a theme and some content to work with.

In each of the 10 comparison categories below, I’ll give my opinion on which CMS has the edge out-of-the-box and why I think this. I’ve used both platforms and do have some bias towards Drupal, but I’ll do my best to keep that in check.

Category quicklinks
  1. Admin toolbar
  2. Login dashboard
  3. Managing media
  4. Creating pages
  5. Editing pages
  6. Managing widgets and blocks
  7. Managing menus
  8. Managing users, roles and permissions
  9. Site status report
  10. Plugins and modules
  11. WordPress & Drupal comparison summary

1. Admin toolbar

The admin toolbar is always present on the page of both WordPress and Drupal.

WordPress

WordPress admin toolbar

In WordPress, a single toolbar is used as a jump-off point for common admin pages, but you can also start the content creation process and access your account profile and information.

Drupal

Drupal 8 admin toolbar

Drupal has a similar admin toolbar except you have access to everything including creating new content. Every admin page that your user role has permission to view is available through this menu. While it’s more to look at initially, experienced users enjoy fewer clicks to get where they want to go.

Edge: Drupal

While the learning curve to know where everything is might be a bit steeper, experienced Drupal users enjoy being able to access everything in one familiar way. With that said, new users may find this larger menu intimidating.

2. Login dashboard

After logging in, the login dashboard is the first page you see. WordPress and Drupal both take a different approach to their login dashboard.

WordPress

WordPress login dashboard

WordPress has a robust dashboard right out of the gate. This dashboard takes admins away from the site frontend and into an interface that only they can see. The left side has a larger menu for accessing the rest of the admin interface. The main content area mix of useful information about your site and information specific to WordPress as a whole, such as training resources and upcoming WordPress events. The panes on this page can be toggled on and off and plugins can add new panes.

Drupal

Drupal 8 login dashboard

This is the first area where Drupal takes a different approach. Instead of a robust dashboard, you don’t actually get much of anything. The admin toolbar already gives you access to the entire site, so Drupal keeps you on the website frontend and instead shows you your “user page”. This page is entirely customizable although you will most likely need third-party or IT support to do so. It’s an open canvas to do with as you like. For ecommerce, you might show a customer their information, recently viewed products and their last order placed. For content creators, you might show a custom dashboard with quick links to their common tasks. What you do here is entirely up to you.

Edge: WordPress

Although it’s not entirely useful, WordPress actually has a dashboard which is a nice touch for new users. Drupal's clean slate offers a lot of exciting potential for admins and visitors alike, but any potential must first be realized before this page is useful.

3. Managing media

Images, videos, documents and more are uploaded and organized within a media manager. Both WordPress and Drupal offer a convenient content editor plugin which makes selecting and adding media into content easy.

WordPress

WordPress media manager

WordPress really defined the way media can be managed within a CMS. Their interface for managing media contains a handy drag-to-upload feature and each piece of media is shown in a grid format by default. Media can be filtered by date, type and name.

Drupal

Drupal 8 media manager

Drupal admittedly isn’t as clean as WordPress in this interface yet but it’s functionality is essentially the same and solid for most users. The visual interface will improve as the development of Claro progresses. By default, Drupal displays media in a list, but you can toggle between list and grid. There are also similar filtering options. Like all other aspects of Drupal, advanced users can customize media types beyond what you see here and entirely new media types can be created. This advanced functionality is unique to Drupal and isn’t as easily done in WordPress.

Edge: WordPress

WordPress does a great job of making media easy to manage. Drupal will continue to see improvements in the near future, but right now it still feels clunky.

4. Creating pages

Creating new pages, such as general content pages and blog posts, is a common interaction that most admin users will need to do.

WordPress

WordPress new page Gutenberg editor

As of version 5.0, WordPress includes their much anticipated Gutenberg editor experience. This editing format is sleek, modern, and very intuitive. You start with a title and then continue piecing together chunks of content by selecting various types of “blocks” to build the page with. Blocks are a single, reusable type of content such as a heading or paragraph of text, an image or gallery, a list, a quote, etc. Custom blocks can be created and plugins may also add additional blocks that content creators can use. Along the right side of the page is a settings pane. This pane provides various page specific settings and customizations such as page visibility, featured image, an option to allow comments, etc. Additional settings for the currently selected content block also appears here.

Drupal

Drupal 8 new page creation

Out-of-the-box, creating a new piece of content looks like the screenshot above. Content in Drupal could potentially be something wildly different than just a basic page, so Drupal defaults to a standard “field based” editing interface where the different fields that are configured to make up the content are laid out on the page. All editors need to do is fill in the blanks. Field types can be text (with an optional WYSIWYG editor), and image, a file upload, a date, and anything else you can imagine. This again is where Drupal’s flexibility is both an advantage and a curse. The advantage is that a type of content can be anything you can imagine, but the downside is that someone has to configure that content type first. The field based editing experience is provided by default to ensure the editing experience is consistent across different content types.

Here’s the important thing to know about Drupal. Drupal doesn’t like to make assumptions as to what your editing experience should be. As an example, a used car dealership, a national newspaper, and an online retailer will all have entirely different content editing requirements. Drupal doesn’t want to get in your way and it doesn’t try to. What it does do is give you a solid foundation to create YOUR ideal editing experience. This might not be ideal for organizations and businesses with simple website requirements, but for those with complex workflows and unique requirements, Drupal is ideal.

One last important note to make on this topic is that Drupal does also have a Gutenberg editing experience, it just doesn’t come packaged with Drupal out-of-the-box. This module and other editing interface modules and initiatives can be installed in Drupal to make the default editing experience more capable and modular.

Edge: WordPress

When based solely on out-of-the-box functionality, WordPress pre-packaged Gutenberg editing experience is modern and intuitive for new and experienced users. However, it’s important to note that Drupal modules exist that greatly improve Drupal’s default experience. You can even add the same Gutenberg experience.

5. Editing pages

Once a page has been created, sometimes you still need to go back and edit it once in a while. This is a different experience from creating new content, so let’s now look at how it works with each CMS.

WordPress

WordPress editing existing pages

Pretty standard, as a logged in administrator you have access to editing content by viewing the page on the website frontend and using one of the various “edit” buttons. You’re then brought to the same Gutenberg interface that you see when creating content.

Drupal

Drupal 8 edit existing pages

I would say Drupal has the upper hand for editing existing content. Similar to WordPress, as a logged in administrator you have access to page edit links when viewing the content which brings you back to the same interface as when the content was created. However, in Drupal you also have additional links to view content revisions as well as the view and edit page translations for multi-language sites.

Drupal 8 inline page editor

The current version of Drupal, Drupal 8, also includes an additional edit icon that contains a new “quick edit” option. Depending on the content, the quick edit allows on-page inline editing (shown above) instead of taking you to a separate page! This makes simple edits quick and easy. Furthermore, the edit icon also appears when administrators hover over menus and other configurable page elements too, giving you a quick way to access their configuration.

Edge: Drupal

While WordPress has the edge when creating new content, Drupal’s on-page inline editing feature makes editing existing content quick and easy by keeping content editors on the website frontend.

6. Managing widgets and blocks

Widgets (WordPress lingo) and blocks (Drupal lingo) are two words for essentially the same thing. While not limited to these locations, the header, footer and often left and right columns beside the main content area contain defined regions where certain elements can be placed. I’m talking about slogans, menus, a search bar, your copyright, recent posts, social feeds, etc. WordPress and Drupal have similar but different ways to manage these elements.

WordPress

WordPress widgets page

WordPress includes a backend and frontend methods for editing page widgets, both of which are quite basic and lack a lot of real capability.

The backend method (shown above) is accessed through the backend Appearance menu. This page gives you a nice list of available widgets on the left side and another list of active widgets within the available regions on the right. A simple drag and drop interface lets you move elements around and opening each widget allows for basic configuration.

WordPress widgets live editor

The frontend method is through a”Live Preview” mode (shown above) where a version of the site theme is presented and widgets are managed through the left column. Settings for existing widgets can also be quickly opened by clicking its blue edit icon, as you can see in the image above.

Out-of-the-box, it’s difficult to understand exactly where a widget will appear throughout the site because you don’t have the ability to see or control which pages accept the widget. Some third-party plugins are available to give you this functionality, but they must be added. New widgets are also a bit more difficult to add as they must be created by a developer or added though a plugin.

Drupal

Drupal 8 block layout page

Like WordPress, Drupal has the ability to manage blocks from both the backend and frontend of the website, although Drupal handles both situations better.

The backend method (shown above) is accessed through the admin toolbar’s Structure menu. Here you can view all available regions and the blocks contained within each. Regions are a big part of Drupal theme creation, so you will often see 10+ available regions to choose from. If you’re not sure of your themes regions, the “Demonstrate block regions” link above the list of regions will give you a preview. Each region has a “Place block” button for adding new pre-configured blocks. Existing blocks can be moved dragged between regions and each block can be configured independently. Block configuration in Drupal is very robust, including but not limited to control over what pages the block is visible on and what account roles can view it. Like content, blocks can be translated and even have revisions.

Custom blocks can also be created by more advanced Drupal users in a similar way that new media and content types are created. In the screenshot above there is a link to the “Custom block library,” which is where new blocks can be created. Like WordPress, modules can also be installed which will add new blocks.

Drupal 8 frontend block quickmenu

Drupal’s frontend method for managing blocks takes on the same familiar editing experience that we discussed for editing content. When logged in and viewing the website frontend, navigating to a page and hovering your cursor over an element will reveal an edit icon if that element is a configurable block. Options for the block are then given. The block in the screenshot above contains a menu, so we see options to configure the block and edit the menu. In this case, clicking one of these options will take you to the backend page for performing these actions. If the block contained text, we would also be given an option to edit the text directly on the page, just like we can with content.

Edge: Drupal

Simply put, Drupal’s block management is robust yet not too difficult. Being able to manage existing blocks directly from the website frontend is both user friendly and familiar given that existing pages can also be managed in the same way.

7. Managing menus

Menus connect the pages within a website. Commonly you’ll find a primary navigation and some sort of footer menu, but menus are used in many other places as well.

WordPress

WordPress menu management

The menu system in WordPress is a bit strange at first, but overall it’s pretty simple. You create a menu (or select an existing one using the menu selection dropdown), then add links by selecting pages, categories, or by creating custom links (add menu items in image above), then use a drag and drop interface for moving and nesting the menu items (menu structure in image above). Each menu item within the menu structure can be opened for a bit of customization.

The menu settings area controls where the menu is displayed within predefined template locations. Just check the box and the menu will appear once saved. Any menu created here can also be assigned to region as a widget or through the template live preview screen.

One odd thing I’ve found with WordPress is that, when editing a page, you’re not able to add it into a menu. I’m sure there are plugins that allow this, but out-of-the-box you have to add the page through the menu system or check a setting within the menu that all new pages get added… but then you might have to remove some.

Drupal

Drupal 8 menu management

Drupal’s approach to menus is what I wond consider more standard. You navigate the “menus” page which lists all of the menus that have been created, then you create a new menu or edit an existing menu. The screenshot above is what you see when editing a menu. Here you manage this menu’s links by either adding a new one or manipulating the existing ones. When adding a new link you can easily search for content that the link will link to or specify a custom link.

Pages can also be added to a menu when the page is being created or edited. Within the page settings, all you do is select the menu and specify a link title.

Like WordPress, once you create a menu you can then add it into a region of the site as a block. However, within the menu itself you don’t have the ability to put the menu anywhere.

Edge: Drupal

A more standard approach makes managing menus clearer and more user friendly. Also being able to choose if a page should be included in a menu while creating the page is a nice feature. That said, I appreciate being able to manage a menu in its entirety on a single page like you do in WordPress.

8. Managing users, roles and permissions

Managing users is common for both controlling who can edit the website and who can login for other reasons, such as non-admin accounts for an online store or community.

WordPress

WordPress user management

WordPress has six predefined user roles: Super Admin, Administrator, Editor, Author, Contributor, and Subscriber. Each has varying degrees of what they can do, but it’s pretty clear for the most part and goes back to when WordPress was mainly a blogging platform. Users can be created and managed through a “users” page (shown above), which is laid out in a straightforward manner displaying

But WordPress has some major drawbacks here. First, WordPress doesn’t have any frontend user self-management, meaning users can’t view or edit their own profiles. Second, the predefined roles and their associated permissions don’t work for everyone and actually complicate user management when you don’t need it. Third, there is nowhere to really manage role permissions in a granular way. These drawbacks can be fixed through custom development and/or various plugins, but many consider this to be a general weak point of WordPress.

Drupal

Drupal 8 user management

User management is another area where Drupal shines. In contrast to WordPress, Drupal only starts with three default roles: Anonymous, Authenticated and Administrator. Anonymous is a user who is not logged in, authenticated is a user who has an account but isn’t someone who typically isn’t managing content and site configuration, and administrator is a user with full site and admin access. These three roles are minimal, clear and cover all of the basic needs of most sites. If and when another role with different permissions are created, this is easy to do right out-of-the-box.

The image above shows Drupal’s version of the current list of users. It follows a similar look and style to the rest of the admin pages, giving administrators a place to add and manage user accounts, including assigning users to specific roles. Anonymous and authenticated users can also create or manage their own account through the website frontend (although this functionality can be turned off in desired).

Drupal 8 user permissions page

Drupal’s strength in user management comes in the form of roles and permissions. When a role is created, a column of permission checkboxes for the role is added to the Permissions page (shown above). Almost every piece of functionality within Drupal has an associated permission. Simply checking the boxes determines what each role can and can’t do. It’s powerful and easy.

Edge: Drupal

A simple yet powerful user management system combined with frontend self-service functionality gives Drupal a clear edge over WordPress.

9. Site status report

Both WordPress and Drupal include a site status page that gives you information about the website and server configuration as well as an overall health report that outlines any issues. These automated health checks help keep your CMS up-to-date and secure.

WordPress

WordPress site health page

The “Site health” page (shown above) gives you an overall health status and list of any issues. This status page is clean and each item can be expanded for more information, but there is no visual urgency that makes the “2 critical issues” stand out. In my opinion, critical issues should be resolved and so highlighting these issues in some way is a necessary UX improvement.

An info tab at the top of the page can be opened which gives more information about your installation of WordPress, the server, the PHP version, and the database.

Drupal

Drupal 8 status report page

Drupal contains both site information and site health in one “Status report” page (shown above). Like WordPress, this page gives you everything you need to know at a glance about your Drupal installation and the other components that make it run. Here we can also clearly see what errors and warnings have been found and some information on how they can be resolved.

Edge: Drupal

While both WordPress and Drupal have similar pages that show similar information, Drupal’s status report does a better job at laying out the information and visually capturing the severity of any issues.

10. Plugins and modules

Plugins (WordPress lingo) and modules (Drupal lingo) extend core CMS functionality and add new features. Extensions are usually created by third-party developers and released to the platform communities for anyone else to use. Whether it’s to increase performance, enhance SEO capabilities or create an online store, extensions are a powerful way to improve and adapt the CMS platform.

WordPress

WordPress plugins page

Visiting the “Plugins” page (shown above) is a quick way to see what additional plugins are currently packaged with your WordPress installation and can be activated if desired. Plugins shown here all provide some sort of new functionality or feature that is not part of the core WordPress software.

WordPress plugin search page

When you need new functionality, WordPress provides an excellent and convenient plugin library browser (shown above) accessible within the website backend. Here you can search for, view, and install plugins easily with the click of a button.

Drupal

Drupal 8 extend page

Drupal’s module list is where you can see all current extensions, activated or not, for your Drupal installation. The big difference here between WordPress and Drupal is that for Drupal you are able to see all modules installed, even those that are part of the core software. Modules are also nicely grouped which nicely organizes the large list.

Installing new modules isn’t nearly as easy in Drupal. Unlike WordPress, Drupal doesn’t include a module library browser within the backend interface. Instead, users must search for modules within a web browser and manually install them. Finding modules can be difficult if you’re not familiar with the process.

Edge: WordPress

While both platforms have a massive library of extensions, WordPress offers users a much friendlier and intuitive way of finding and installing extensions that users of any skill level can appreciate. This may or may not be an issue for you if you have a capable IT team or development partner, but for small teams WordPress has the clear edge.

WordPress & Drupal comparison summary

I hope after going through this comparison you now have a good understanding of the differences and similarities between WordPress and Drupal. As you can see, both platforms out-of-the-box have different strengths and weaknesses, but it’s important to know that all of the weaknesses can be overcome through platform extensions and experience. In extreme cases, both platforms support custom development to overcome unique problems.

For convenience, here is a quick summary showing which CMS has the edge in the 10 categories compared. However, I would recommend that you go back and read the edge summary for each category, if you haven’t done so already.

Comparison category WordPress Drupal Admin toolbar   ✓ Login dashboard ✓   Managing media ✓   Creating pages ✓   Editing pages   ✓ Managing widgets and blocks   ✓ Managing menus   ✓ Managing users, roles and permissions   ✓ Site status report   ✓ Plugins and modules ✓  

A final word of advice

In my opinion, you shouldn’t be turned off from one platform or the other simply because you’ve heard that one is better or easier to use. Both platforms are mature and constantly improving, user experience is top of mind, and usability gaps have become less of an issue in recent years.

My advice, select the platform you use based on your requirements. WordPress is a great authoring tool and is good for small and medium sized organizations. Drupal is fantastic for medium and large sized organizations or anyone who has complex workflows, products, and/or a need to integrate with other platforms. That’s a pretty general summary, but if you’re considering either of these platforms, first know what your requirements of the platform are and then start talking to the experts for each.

Acro Media is an ecommerce consultation and development agency who can help you in this regard. We specialize in open source ecommerce and a large part of our work is based around Drupal. Drupal typically works better for our clients but we know WordPress, too. If you’re researching your requirements or evaluating your options, hit us up for a quick chat, we would love to help. Otherwise, check out some of these related resources.

Contact Acro Media Today!

Related resources

Jan 07 2020
Jan 07

We’ve already discussed in our previous blog, how Progressive Web Apps (PWAs) are trending and making web apps load faster, ensuring exceptional user experience.

For one of our clients, we implemented this solution to create a budget planner and currency calculator for a giant travel retail outlet and helped boost the sales just after 3 months of its deployment. 

Let’s dig deeper into the technical details and understand the nitty-gritty of creating PWA using React on a Drupal 8 website. 

Why Opt For This Approach

With the increasing popularity of ReactJS, JavaScript libraries and frameworks prove to be useful in building complex applications by seamlessly getting embedded on a Drupal site, thus combining the robustness of an API-first CMS with slick and quick React frontend to collectively give way to amazing digital experiences along with future-proof builds. 

To create PWA on a Drupal site, one can use Service Workers, Web App Manifest and HTTPS. However, opting this approach will not unnecessarily increase the load of the application and will reduce the entire application load time. Possessing knowledge of React in addition to Drupal is the only requisite here to implement the approach.

How To Create PWA With React on Drupal 

Step 1: Create React Environment

In our last blog on React, we learned how to set up Setup React App From Square One Without Using Create-React-App  Once the environment is set up, we shall move forward to creating a React app.

Step 2: Create React Application

Before looking into the process of creating a React application, let’s get a hold of the below terms:

  • Components - It's the building block of any react app. Basically, there are two types of components.
    • Functional
    • Class (From 16+ react version, this component is deprecated. Only functional components are used.)
  • Props - Arguments passed in react components to send data to components. 
  • States - Behaves like a data store to components. It’s mostly to update components when user performs some operation like clicking buttons, typing some text etc.

Now, let's write our first code block of React by using ES6 classes to create a React component called App.

index.html

class App extends React.Component {

  //...}

Now we'll add the render() method to render DOM nodes.

index.html

class App extends React.Component {

  render() {

      return (

          //...

      );

  }

}

In return, we’ll insert a simple HTML element. 

index.html

class App extends React.Component {

  render() {

    return <h1>Hello world!</h1>

  }

}

Finally, we're going to use the React DOM render() method to render the App class we created into the root div in our HTML.

index.html

ReactDOM.render(<App />, document.getElementById('root'))

Here is the full code for our index.html:

index.html

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8" />

 

    <title>Hello React!</title>

 

    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>

    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>

    <script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script>

  </head>

 

  <body>

    <div id="root"></div>

 

    <script type="text/babel">

      class App extends React.Component {

        render() {

          return <h1>Hello world!</h1>

        }

      }

      ReactDOM.render(<App />, document.getElementById('root'))

    </script>

  </body>

</html>

Now if you view your index.html in the browser, you'll see the h1 tag we created rendered to the DOM.

hello world screenshot

Hello World screenshot

Step 3: Visualizing the React component in Storybook

Storybook is a user interface development environment and playground for UI components. 

Visualizing the React component in Storybook

The tool allows testing the components independently and interactively in an isolated development environment. Story file code looks like:

Story file code

After running `npm run storybook` command, storybook will open on localhost server as shown in the attached screenshot.

storybook screenshot

 

Step 4: Creating Custom Block API in Drupal 8 and Embedding React application 

On running npm run build command on React application, it creates this react minified JS file:

/drupal_root/module/custom/react_block/react_block.libraries.yml

jsfile

The minified js file searches for the markup in the /drupal_root/module/custom/react_block/src/Plugin/Block/ReactApp.php file

and on finding the div ID, it renders itself at that point.

file getting rendered

And this is how the React block renders itself on our Drupal 8 website and makes the website a PWA.

Srijan can help you leverage the power of React with API-first Drupal to create robust content workflows and hence lead to joyful editorial experiences for your business to evolve. Get in touch with our experts or leave your queries in the comment section below and let’s get the conversation started.

Jan 07 2020
Jan 07

We’ve already discussed in our blog how decoupling Drupal helps you achieve greater flexibility, to deliver data anywhere and everywhere to the user at a lightning fast speed, ensuring exceptional web experience.

Let’s dig deeper into the technical details of how progressively decoupled apps can be created using React on a Drupal 8 website.

Why Opt For This Approach

With the increasing popularity of ReactJS, JavaScript libraries and frameworks prove to be useful in building complex applications by seamlessly getting embedded on a Drupal site, thus combining the robustness of an API-first CMS with slick and quick React frontend to collectively give way to amazing digital experiences along with future-proof builds. 

How To Create Progressively Decoupled App With React on Drupal

Step 1: Create React Environment

In our last blog on React, we learned how to set up Setup React App From Square One Without Using Create-React-App  Once the environment is set up, we shall move forward to creating a React app.

Step 2: Create React Application

Before looking into the process of creating a React application, let’s get a hold of the below terms:

  • Components - It's the building block of any react app. Basically, there are two types of components:  Functional and Class (From 16+ react version, this component is deprecated. Only functional components are used.)
  • Props - Arguments passed in react components to send data to components. 
  • States - Behaves like a data store to components. It’s mostly to update components when user performs some operation like clicking buttons, typing some text etc.

Now, let's write our first code block of React by using ES6 classes to create a React component called App.

class App extends React.Component {
}

Now we'll add the render() method to render DOM nodes.

index.html

class App extends React.Component {
render() {
return (
);
}
}

In return, we’ll insert a simple HTML element. 

class App extends React.Component {
render() {
return <h1>Hello world!</h1>
}
}

Finally, we're going to use the React DOM render() method to render the App class we created into the root div in our HTML.

ReactDOM.render(<App />, document.getElementById('root'))

Here is the full code for our index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<title>Hello React!</title>

<script src="https://unpkg.com/[email protected]/umd/react.development.js"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/[email protected]/babel.js"></script>
</head>

<body>
<div id="root"></div>

<script type="text/babel">
class App extends React.Component {
render() {
return <h1>Hello world!</h1>
}
}

ReactDOM.render(<App />, document.getElementById('root'))
</script>
</body>
</html>

Now if you view your index.html in the browser, you'll see the H1 tag we created rendered to the DOM.

hello world screenshot

Hello World screenshot

Step 3: Visualizing the React component in Storybook

Storybook is a user interface development environment and playground for UI components. 

Visualizing the React component in Storybook

The tool allows testing the components independently and interactively in an isolated development environment. Story file code looks like:

Story file code

After running `npm run storybook` command, storybook will open on localhost server as shown in the attached screenshot.

storybook screenshot

Step 4: Creating Custom Block API in Drupal 8 and Embedding React application 

On running npm run build command on React application, it creates this react minified JS file:

/drupal_root/module/custom/react_block/react_block.libraries.yml

jsfile

The minified js file searches for the markup in the /drupal_root/module/custom/react_block/src/Plugin/Block/ReactApp.php file

and on finding the div ID, it renders itself at that point.

file getting rendered

And this is how the React block renders itself on our Drupal 8 website and makes the website a progressively decoupled app..

For one of our clients, we implemented this solution to create a budget planner and currency calculator for a giant travel retail outlet and helped boost the sales just after 3 months of its deployment. 

Srijan can help you leverage the power of React with API-first Drupal to create robust content workflows and hence lead to joyful editorial experiences for your business to evolve. Get in touch with our experts or leave your queries in the comment section below and let’s get the conversation started.

Jan 06 2020
Jan 06

It is known that page load time is one of the important aspects of search engine result position. Site speed is what stands between the website and the potential user.

Caching therefore plays an essential role in optimizing websites to deliver high-performance. Not only does it help support faster load times than otherwise possible, but it also helps in reducing latency. The information can be stockpiled at every level right from the original server to intermediate proxies to the browser.

Drupal encompasses numerous tools for caching content that can work for your site exceptionally and it’s important to know what they are and what they do. This blog will elucidate the caching mechanism in Drupal 8.

Drupal 8 Caching Modules

By default, Drupal 8 comes with 2 modules for implementing caching-

  • Internal Page Caching:
The Internal Page Caching module when enabled, stores the complete page information even if the user visiting the site hasn’t logged in. Future anonymous visitors will then observe that the same content is loaded extremely fast since the page wasn’t put together from scratch. This module is useful for websites with a lot of unregistered users
  • Internal Dynamic Page Cache:

The Internal Dynamic Page Cache module is designed to cache small sections of each page for all users whether they are logged in or not. Whenever the page content is requested by the same or different user, the module can pull in those individual parts to speed up the building of the page on the fly.

Understanding Caching At Different Layers

Caching in Drupal takes place at three separate levels: application, component, and page. Given below is the detailed description of each-

  • Application-level Caching

Application-level caching is in-built in Drupal. However, you won’t see it in action until you scrutinize Drupal’s internal code. It is active by default and won’t even show older, cached pages.

The application-level caching in Drupal ensures that the cached pages are separately stored from the site content (which goes into the database). You can’t set this up, except for guiding Drupal where to save cached pages explicitly. 

Drupal stores its external and internal data structures efficiently to enhance repeated users’ access when performing application-level caching. This isn’t the information that a site visitor sees in itself but forms a critical factor in constructing any page. The only level of refinements that can be made at this level is improving where this cached information is stored, like using Memcached instead of the database.

  • Component-level Caching

Component-level caching works on front-end components such as blocks, panels, and views. For example, you might own a website having dynamic content but a single block remains constant. In fact, you may have the same block widely scattered across dozens of pages. Caching it can deliver improved performances significantly.

Though component-level caching is generally disabled by default, however, you can make it active with some simple configuration changes. You can initiate with identifying blocks, panels, and views on your site that remains the same across to later cache them strenuously. You will notice a strong speedup for authenticated users.

  • Page-level Caching

As the name suggests, this page-level caching caches, stores, and delivers the entire page to the user. One of the most effective types of caching,  it shoes static HTML pages to users to improve site performance almost immeasurably.

Page-level caching gives you enough space to customize where you can use any number of caching servers, including Varnish, or CDNs like CloudFlare to deliver cached pages from servers close to the users’ location. 

CDNs help you in bringing your site closer to your users. However, it only works for anonymous users by default. Fortunately, this drives huge traffic to any website.

A typical Drupal application comprises of all the layers mentioned above. However, to better understand the flow and learn how to debug a caching issue, a flowchart is given to illustrate how content is cached at different layers-

Flowchart of how caching works in Drupal 8Learn more about caching from here-

[embedded content]

Cacheability Metadata in Drupal 8. What is it?

Cacheability metadata is used to describe the thing which is rendered with respect to its dynamism. Сaching properties could be applied to any object and one can easily change the default cache settings of these three properties-

  1. Cache Tags  
  2. Cache Contexts  
  3. Cache Max-Age
  • Cache Tags: 

Tags are used to nullify cache entries when something on the site undergoes modification. (nullifying or invalidating means that the cache entry won’t get used, and will be reconstructed the next time that piece of content is rendered). Drupal comprises multiple cache tags to explicate all sorts of different scenarios from individual nodes and blocks, to site configuration settings, and menus. 

For example, the cache tag ‘node:5’ gets invalidated any time the Drupal content node with ID 5 gets modified.

So, whenever content gets cached which depends on something related to node 5,  the cache entry keeps track of that tag; then, saving the node causes that cache entry to get invalidated. This implies that any time you save something in Drupal, a relevant tag gets invalidated.

The tag for the same will look like this-

Syntax : “node:5” 

node_list: List cache tags for node entities

  • Cache Contexts: 

Contexts are quite different from tags. Cache contexts are stored alongside cache entries and are designed to let content vary depending on what circumstances or situation it is showcased in.

For instance, you have a site with users of several different roles, and one block on the site is meant to show content differently depending on what roles the user seeing it has. This can’t be implemented through cache tags alone. However, it won’t be a good idea to leave the block completely uncached, instead, it can have the “user permissions” context applied to it. This way, the block can be cached multiple times- specifically one time for each combination of roles that the users see the block have. This way, an administrator can see something different from an editor who will see something different from a user who has both roles.

Commands shown in for caching tags

  • Cache Max-age:

Cache max-age is the last step to handle cache invalidation. You have to simply set the time on how long the content should be cached for. This can vary from 0 seconds (to not cache content at all) to as long as you want. 

Presuming that all of the tags and contexts being used are working as intended, this can be put to indefinite (default state in Drupal) since those can cover most scenarios where cached content might need to be created.

Given this, there is still no mechanism that notifies your Drupal site about the change in content, and therefore, no-cache tags can be invalidated and no context is helpful (as the content doesn’t vary by the situations in which it is displayed).

However, if you set a max-age of 3600 on the page, then it will cache its content for up to one hour before automatically invalidating, at which point the next person who views the page would get a brand-new updated version (fresh with new content from the remote service) which would then get cached for another hour. This way, you can leverage all the benefits of caching without causing your site to stop updating itself with content from the remote service. 

Summing Up-

Caching lets you retrieve data instantly without having to request it from the source. Given that, it makes up a significant part of website speed optimization. If you want to ease surfing experience for your users on the site, then enable the cache for the same. Drupal 8 has enhanced its caching capabilities considerably.

Dec 31 2019
Dec 31

As APIGEE end of support for Drupal 7 in May 2020 is combined with Drupal 7 end of life in Nov 2021, developer portal are not left with many choices - migrate to Drupal 8 or continue with Apigee’s integrated portals. 

For a custom Drupal 7 developer portal, migrating to Drupal 8 comes as a natural choice. In this blog we will understand why it is so important and what should be on your checklist while migrating to Drupal 8.

Benefits of Migrating Your Developer Portal to Drupal 8 

With continued effort of the Drupal community for its long-term sustainability and more effortless adoption, complete re-architecturing of Drupal 8 has made it different from the previous migrations. There are many ways why Drupal 7 can put your developer portal at risk

Drupal 8 with its performance-enhancing features and modules can turn your developer portal into a speedy and high performing one. Let’s look at what makes Drupal 8 the best version to be on:

  • Drupal 8’s adoption of Symfony framework has made it all the more better. Symfony’s robust, flexible and high-performance framework allows for easy scalability of a website.
  • BigPipe Caching lets you segregate your page into different sections which gets rendered as they become available, enhancing website’s performance and speed.

Source: specbee

  • Drupal 8 is PHP7 ready, which is twice as fast as PHP 5.6. It is capable of enhancing the performance of your developer portal to about 110%, with reduced memory usage.
  • Talking about Drupal 8 themes, they are responsive, making your developer portal look great on almost any device. 
  • Drupal 8 is equipped with CKEditor, which lets you preview your entered content quickly as well as an in-place editor that lets you edit blocks, content, menus, etc. right on the same page.
  • SEO will not be a concern anymore. Drupal 8’s built-in powerful SEO modules, like SEO Checklist, PathAuto, Redirect, and MetaTag can help boost your developer portal’s SEO. 
  • Not to forget about Drupal 8’s out-of-the-box multilingual support, which can help boost language-based views of your developer portal.

Planning Your Migration - Your To Do Checklist

It is important to follow the best approach for the migration process. Having spent too much time on building the right content for your developer portal, you would not want to drop your stats without a proper plan. Content migration becomes a significant decision for your business. 

When you think of developer portal migration to Drupal 8, you need to look into enhancements to the front-end features such as smartDocs API reference documentation, theme editor enhancements, default portal theme and content enhancements, quick start and how developer accounts are managed using the developer identity service.

To ease the process of migration, maximum time should be spent on planning. If properly administered, this will further bring down the number of hours spent on the actual migration. Though content migration is a tedious task, however, strategizing it well in advance will make the developers smoothly execute the process.

One would need one of these two steps to migrate their developer portal to Drupal 8:

 

  1. For minimal custom implementations on Drupal 7 portal, have Apigee Developer Portal Kickstart ready to migrate Drupal 7’s configuration and content.
  2. Follow custom migration approach for heavy customizations of Drupal 7 portal. For this, Apigee Edge module can help in connecting Drupal 8 Portal to Apigee and use Drupal 8 Migration API to migrate the Drupal 7 implementations to Drupal 8 Portal.

 

Now, let’s take a look at the pointers to consider before migration:

 

  • Take Backup

It is always a good practice to take a backup of your entire website before starting with the migration process. This can be done with the help of Backup and Migrate module to create a database dump to save all your Drupal database tables into a single file download, to be later used for restoring at a later stage. 

Enabling Backup and Migrate Module

  1. Navigate to Administer > Modules
  2. Select Backup and Migrate in the Other block
  3. Scroll to the bottom of the page and click Save Configuration

Configuring Backup and Migrate Module

  1. Navigate to Administer > Configuration > System > Backup and Migrate
  2. Download a backup of the default (Drupal) database by clicking Backup now. 

It is recommended to download a backup prior to updating or installing modules.

Backup to Server

Create a private directory to store backups on the server by following the below 3 steps:

  1. Navigate to Administer > Configuration > Media > File System
  2. In the Private file system path field enter sites/default/files/private
  3. Click Save configuration

 

  • Quick Roundup of Functionality and Content Check

Having a quick yet thorough check of the website for the entire set of features and functionalities of your developer portal will give you an idea of moving on from irrelevant ones. Do check if you want to drop off with any content or content types post analyzing them. This is the time when the need for new content types arises.

Like content types, it is important to figure out which of these fields should be migrated. You should check which of the fields are important in your existing site and which of them are no longer relevant for the new site. Examine the number of users logging in, reviews, ratings, views and other taxonomy terms too.

In this way, you get a chance to completely revamp the architecture of your website.

  • Move Content Securely

Migrating web content is an integral business decision where you must take precautions to avoid any security breach or data theft. Ensuring your database and development infrastructure is up-to-date with the latest upgrade, wiping out all your data including user accounts from database infrastructure and not sending database dump via unsafe channels are few things which need to be kept in mind.

  • Prepare a Backup Plan for Theme Mismatch

Up until Drupal 7, PHPTemplate has been the default Drupal Theme engine. But Drupal 8 uses Twigs (part of Symfony2 framework) to render pages in a highly flexible and secure way. It won’t allow your existing (D7) theme to port directly to D8. Note that no single module can move your existing theme to Drupal 8.

Upon migrating the developer portal, custom CSS styles will be overwritten. So the new default theme needs to be applied along with custom CSS styles manually post migration.

  • Search Modules upon Migration

Drupal 7 core modules and many contributed modules are now available in Drupal 8 core. While most of them are automatically upgraded, a few modules will need manual upgrade as they are not mapped to the same Drupal 8 module or are now segregated into different modules. 

Due to Drupal 8’s revamped architecture, if you’re unable to find a particular contributed module in Drupal 8, you can:

  • Simply archive the module’s data, or
  • Find a similar community module sharing common functionality, or
  • Hire a developer and get a custom module built with the required functionality

However, when it comes to custom modules, you need to port them in Drupal 8. You can hire Drupal developers who can help you with porting the modules.

 

All you need to do the following things before migrating the developer portal to Drupal 8: 

 

  1. Prepare the Migration script for Drupal 8 considering the number of developers on Drupal 7 portal, capturing all the custom field data attached to a user entity. Do a parity check on Drupal 7 portal users with the new Drupal 8 portal and list all the extra fields needed to be created on the new portal. Migration script should execute avoiding the API call to Apigee to update a developer.
  2. Sync Developer apps and developer API products with Drupal 8 via Apigee Contributed module. If there are any custom attributes attached to app or API products as dependent, this should be processed via custom migration script.
  3. Migrate Open API spec’s documentation content on developer portal to Drupal 8 Portal via Drupal 8’s Apigee Catalog module or DevPortal Module. Migration script should write the documentation pages to new Drupal 8 portal, based on the option chosen to present doc’s on Drupal 8 Portal.
  4. Migrate any other monetization related configuration (triggering get or post data to Apigee) to Drupal 8 via custom migration script. 
  5. Implement customization done on contributed Apigee Devconnect module newly on Drupal 8 Portal and the data related to this implementation should be processed via migration script.

Wrapping it up

Migrating your developer portal to the latest version is a difficult decision to make. However, it proves to be a brilliant decision once you get a secure, accessible, modern, and responsive website, which suits your needs and stays compatible with updates for years.

For a successful migration that keeps in mind all these steps, you'll need to work with experienced developers. Our team of experts can help you in migrating your developer portal to Drupal 8 to future proof your digital presence, solve your queries around API security and provide a range of services around API designed with a strategy tailored to your success. Contact us today.

Dec 24 2019
Dec 24

Remember how 2015 was filled with anticipation in the run up to the release of Drupal 8? Well, 2020 is all set to be a repeat of that - the same rush, excitement, innovative work will be happening around Drupal 9. But that’s not the only thing to look forward to for Drupalers in 2020.

From charting new growth paths, to ensuring an enhanced experience and easier adoption of Drupal for beginners, to creating closer integration with other technology frameworks - 2020 has a lot in store for Drupal. And here are the ones we are most excited about.

Drupal 9

Well that’s an obvious one and will definitely be at the top of the list everyone in the Drupal community. 

Drupal 9 is all set to release on 3 June 2020. The big deal with Drupal 9 is that it shouldn’t be a big deal. And that thinking is exactly what is new.

That’s because Drupal 9 is not being built on a new core, but rather within Drupal 8. Here’s how:

  • New features and functionalities will be added to D8 as backward-compatible code. These will start being available to D8 users as experimental features, that can be used and modified. All this while, older D8 features will work without a hitch.
  • Once these new features are stable, their older counterparts will be deprecated. 
  • And finally, 3rd party dependencies, like those with Symfony and Twig, will be updated to offer support for their latest versions.

This collection of new stable features and updated 3rd party dependencies will be what forms Drupal 9.

Drupal-9 - Drupal in 2020We’ve already covered what to expect with Drupal 9 and how to prepare for it and ensure a smooth upgrade experience.

So let’s move on to the other interesting developments slated for 2020.

Drupal 9 Product Tracks

The launch of Drupal 9 is also significant because this is the first time the community has a strategic roadmap for how we want Drupal 9 to grow. Dries’ State of Drupal address in Drupal Amsterdam outlined the four product tracks envisioned for D9:

  • Reduce the cost and effort involved in managing a Drupal 9 website. So the focus will be on introducing new features and functionalities that simplify website support, maintenance and updates - configuration management, automated updates and more.
  • Enhance the beginners’ experience with Drupal by making it simpler to install and get it running out of the box. The first two initiatives in this track are two new themes - Olivero for the frontend and Claro for admins.
  • Work towards ensuring an Open Web that’s accessible, secure, inclusive and interoperable. In the next decade, the Drupal community will collectively ensure that their work - project, websites, solutions - consistently meet these standards
  • Prepare Drupal to be one of the best structured data and content repositories, ready to work seamlessly with a range of devices and delivery channels

2020 will see these product tracks being actively discussed within the community and work starting on several new initiatives.

Drupal 8.8

Drupal 8.8 was released on 4 December 2019 and sites on Drupal 8 can look forward to harnessing great new features and functionalities in 2020. Some of the key upgrades are:

  • Media Library being marked as stable, so content writers and editors can add media content right from the WYSIWYG editor
  • Official support for Composer out-of-the-box, meaning Drupal is simple and easy to install and update with Composer taking care of updating all third-party dependencies
  • The Automatic Update module is available in early alpha stage and has a set of very convenient features. It allows you to configure your site to display PSA messages for required updates or mail them directly to the site admins. You can check if your site is ready for update, with all requisite file permissions, and update your site with just a click, if all prerequisites are in place.
  • The JSON:API Explorer which is an interactive query builder to explore your JSON:API server, strengthening Drupal’s positioning as an effective decoupled solution.

Decoupled Drupal

Yes, Decoupled Drupal has been talked about for quite a few years now, but 2020 and the following decade will be when it becomes extremely commonplace. This will be primarily due to the growth of a complete ecosystem of features and solutions that make it easier to pull off decoupled Drupal solutions. 

While the API-first initiative and the project around building a reusable component library are key to great decoupled Drupal implementations, there are also third-party frameworks and solutions launched in 2019 that will drive decoupled Drupal in 2020:

  • Acquia Content Cloud: A platform that allows content creators to write, edit, and review content independent of the channel where it will be published. The content created here can be pushed to multiple different channels simultaneously or at different times, and will be automatically formatted to best fit the channel. 
  • GatsbyJS: A React-based site generator that offers the perfect JAMstack for a headless Drupal architecture. GatsbyJS drives greater site performance and smooth user experience. It offers a full plugin library to allow almost any kind of content to be pulled in for site creation, via GraphQL. The not-so-steep learning curve and growing community of developers means GatsbyJS will see higher adoption as enterprises try to get more done with Drupal. 

Growing the Drupal Community

This decade is going to be special for us as well as Srijan puts in concerted efforts to grow the Drupal community in India and Asia at large. As a part of this, we plan to:

  • Commit greater number of resources to contributing to Drupal, working across a diverse range on ongoing initiatives and Drupal 9.
  • Drive the Drupal India Association to bring structure and increased participation of different firms and developers in the Indian Drupal community.

Much like the last decade, 2020 and beyond will be marked by exciting new developments in Drupal. But unlike before, these developments will not just be around core Drupal, but rather focussed on how Drupal will interact and operate with other technology solutions and frameworks to solve key enterprise challenges. 

What are you most excited about Drupal's future in 2020?

And if you are wondering how Drupal can help you solve a particular challenge at your organization, just drop us a line and our Drupal experts will be in touch.

Dec 23 2019
Dec 23

From time to time conversations come up among developers, and other fellow travelers, about being self-taught vs getting formal training. Over time I’ve come to realize that the further and further you get into your career, the less the distinction means anything; eventually we are all mostly self-taught.

I’ve written before about the value of my liberal arts education and I stand by my assertion that what I learned in that setting was, and is, valuable to my life and work. But just because something was useful to life does not mean it was the only way to acquire the skills. It’s a good way for many people, but far from the only way.

For anyone in a technical field, and most professional fields really, to succeed over time you need to learn new tools, skills, and techniques. The tools I knew when I graduated college are all largely outmoded or significantly upgraded, and I’ve had to learn a variety of technologies that didn’t exist in 2001.

Within the Drupal community lots of people talk about being self-taught, sometimes with pride sometimes with embarrassment, but in truth very few people were formally trained on the platform. Lots of very successful developers in the Drupal community (and beyond) have degrees in fields like religion and art history, not computer science, and have taught themselves how to do awesome things. In fact, I’ll argue that just about every Drupaler taught themselves most of what they know about Drupal. How they did that can vary widely, but we are a community with few formal training programs and lots of people who stumbled into Drupal trying to solve a non-technical problem. Even advanced workshops at conferences dig deep into one small area and expect you to generalize that knowledge to your projects, which I count as self-teaching. For example, I had a friend ask the other day about how to control the PDO connection settings in Drupal 7 — which I didn’t know how to do, but knew they were similar to Drupal 8 — so I sent him my Drupal 8 instructions and he figured it out how from there. He’s now taught himself how to do what he needed for that project and in the process generalized the approach for whatever he may need next time.

So then it is important for all of us to find, and hopefully share, techniques for self-teaching — even for those who have some kind of formal training. Here are my suggestions for people who are starting out and haven’t yet found the pattern that works for them:

  1. Assume you first solution is wrong. Most of us have, or will, stumble our way through a project where we don’t really know what we’re doing without a lot of support. We usually learn a great deal in the process, and launching those projects can feel pretty good cause you’ve succeeded at something hard. It is easy to get into the habit of assuming the solutions from that project were correct because they worked. In truth those projects are really rough around the edges, and just because we got it to work does not mean the solution was good. Assuming the first solution is good enough forever is how you become an expert beginner which then takes a lot of effort to undo. Once you have a working solution, step back and see if you can think of a better one, or see if you now can guess better search terms to see if someone else wrote up a different solution to the same problem. Admit your work could be better and try to improve it.
  2. Learn a few more programming languages. Most people who are self-taught from the start, and even some who have a BA/BS in Computer Science, only know 2 or 3 programming languages (PHP, JS, and CSS+HTML are often the only languages new people learn at first). One of the courses I took by chance in college forced me to learn 8 in 16 weeks. It was grueling, miserable, and darned useful. I can still learn a new language in just a couple weeks and rarely do I hit a language construct I don’t recognize. You don’t need to go that far. When I first started out a mentor told me you should learn a new language every year, and for several I did. Some of those, not the languages I learned in college, are the ones I use most day-to-day. All told I’ve spent time writing code in more than twenty different languages. That many isn’t terribly useful but the more languages you learn, the more you learn to understand the elements of your primary language.
  3. Learn basic algorithms and to measure complexity. The kind of thinking that goes into formal algorithms will help you be a better developer overall; badly thought through processes is the place I tend to see the largest gaps between developers with and without formal training. Any college-level CS program will put you through an algorithms course that teaches a variety of specific algorithms and force you to understand their structures. If you didn’t go through one of those programs, this is probably the course that will help you the most. On the one hand most of us rarely rewrite these algorithms as on modern platforms some library or another will provide a better version than we are likely to craft for our project. But learning what they are, when they are used, and how to understand their performance is useful for any project that involves lots of data or processing. MIT has a version of their algorithms course from 2011 online, or find one through another provider. Even if you just watch the lectures (really watching, not just vaguely have them on while cooking and cleaning), you can learn a great deal of useful information. I learned a lot watching those lectures as it refreshed and updated my understanding of the topics.
  4. Find and learn from mentors. Notice I used a plural there; you should try to find a few people willing to help you learn your profession, and more generally help you learn to advance in your field. Most of us benefit from learning from the experiences of multiple people, and who we need to learn from changes over time. I had the great experience of having a few wonderful mentors when I was first starting out, and much of the advice they gave me still serves me well. Some of it contradicted, and resolving those contradictions forced me to learn to do things my own way and find my own solutions.
  5. Learn other platforms. This is both a protection against future shifts in the market, and also a way to see how things work from outside your current professional bubble. Drupal developers can learn a lot from writing a WordPress plugin, or better yet an add-on for a platform in another language (think about Plone, Gatsby, or Hugo). Or try to learn to work with a platform like Salesforce or AWS. Other platforms have different communities, different learning styles, and different patterns. Like understanding additional languages, different platforms help you broaden your understanding and provide insights you can bring back to your main work.
  6. Learn to give and take criticism. Part of learning is getting feedback on your work, and part of being on a team is sharing feedback with others. If you took art or music classes in high school or college you probably learned some of the basic lessons you need here, but if you didn’t, consider taking one now at your local community college or art center. The arts are wonderful for getting experience with criticism. For all art is often open to interpretation, it also requires specific skills. If you play off-key, it sounds wrong. If your sculpture collapses under its own weight, the project failed. If your picture’s subject is out of focus, you need to re-shoot it. Sure there are brilliant artists who can violate all the rules, but if you have never experienced an art critique you are not one of those artists. The experience of getting direct, blunt, and honest feedback will help you understand its value and how to give that feedback yourself.
  7. Share what you think you know. We learn a great deal with we teach others. Both because it forces us to refine our thinking and understanding so we can explain it, and because learners ask questions we cannot answer off the top of our heads. This can be user group or conference presentations, internal trainings for your team, mentoring junior developers, writing a blog, or anything else that gets your from learning to teaching. It’s okay if you’re not 100% right, that’s part of how we learn. A few years ago I was doing a joint project with a junior developer who asked me a lot of questions, and pushed hard when she thought I was making mistakes. When she asked why I was selecting a solution or setting a pattern, she was never satisfied with “because that’s the best way to do it.” She wanted me to explain why that was the best way. If I couldn’t walk her through it right away, I went back and hunted for reference material to explain it or if that failed I tested her counter ideas against my plans to see if I was missing something. While I was usually right, not always and we did make changes based on her feedback. More importantly it forced me to show my work in fine detail which was a good exercise for me and gave her insights to help her do better work.
  8. Find your own patterns. At the start I said this list was for people who didn’t have their own patterns yet. In the long-run of your career you need to figure out what you need to know to get to where you want to go next. Eventually you will need to find a pattern that works for you and the life you are living. No one can tell you what that is, nor how to learn it all yourself. Experiment with learning styles, areas of work, roles, and types of projects as much as you are able until you feel your way to the right solutions for you.
Dec 15 2019
Dec 15

I have to say, I was skeptical about dark mode in our current operating systems, but since wiring it up to switch to it automatically after sunset, I’m a believer. I know some people always operate their in dark mode, and that's not for me. I prefer the light on my screen to match the light of the day. It's especially nice to have my iPhone in dark mode at concerts, so I can avoid being "that guy" who blinds the person behind me,

Websites now respect the system setting of dark mode, and ever since Jeff Geerling updated his site's theme to support dark mode, I had on my list to do the same.

It turns out that the Responsive Blog Drupal theme, a very nice theme that does what it says on the tin, has a switch for turning on the dark mode version of it. I'm glad I realized that most of the work had been done for me, and I've submitted a patch to the project for review.

The last frontier of dark mode based on system setting is third-party JavaScript widgets. None of the 3 widgets on my blog, to my knowledge, have the ability to switch automatically.

Dec 13 2019
Dec 13

Acknowledged as one of the most popular online activities, online shopping is considered one of the key contributors in taking up global e-commerce sales to 3.53 trillion US dollars in 2019, with e-retail revenues' projected growth of approximately 6.54 trillion US dollars in 2022.

Desktop PCs are still the most popular devices among users for placing orders; however, mobile devices, especially smartphones are getting up to speed to deliver seamless digital experiences.

Drupal has modernized itself from being just a pure WCMS to a full-grown e-commerce site builder 

As more enterprises have taken their core businesses on the internet, Drupal has adapted itself well enough from being a pure website content management system to a full-grown e-commerce site builder. 

Though e-commerce is not yet a part of Drupal’s core, it extends its support in the form of contributed modules. The e-commerce community in Drupal stays active by introducing revolutionary features to help build simple, powerful, and intuitive sites.

This blog illustrates those e-commerce modules which smoothens enterprise mission-critical operations that drive business results and have a direct impact on the bottom line.

But Why Drupal?

In case you have already ventured into e-commerce or are planning to, you should never underplay the essential role of the technology as it takes on a critical role in helping you reach millions of customers digitally and make your company rise and shine into a vibrant & flourishing business.

Considering that fact, Drupal can prove lucrative in creating a stable online store with its ability to provide an attractive and clean design, leading to engaging user experience and increased conversions and revenue.

Read on to find out why you should capitalize on Drupal only to make it big in your e-commerce venture-

  • Implicit SEO Tools

It helps you out in taking your Drupal-powered website on the top ranks of the search engine results

A lot of e-commerce websites become lost in the shuffle and fail to garner the attention of people from various sections of society. However, with Drupal, you require minimum support of SEO experts as it already comprises of SEO Checklist module, built-in URL optimization, advanced.htaccess, and other analogous useful tools. Thereby, it helps you out in taking your Drupal-powered website on the top ranks of the search engine results.

  • It Is Powerful and Multi-skilled WCMS

Today, making customers place their orders is not the ultimate goal of e-commerce sites. Rather it is to engage them through blogs, forums, community, articles, and reviews around products to attract the new ones and at the same time, keep the existing ones loyal towards the brand. 

These features can be easily integrated and administered to your e-commerce site with a groundbreaking system like Drupal.

  • Seamless Integration With Third-party Solutions

Drupal allows effortless and seamless integration with third-party solutions, like Acquia Lift for enabling personalization on your site to deliver customized results to users, or Smart Content module for Account-Based Marketing. All this can be done through the RESTful API. Or you can also employ the Feeds module, which lets you import content from external data sources.

  • Fast Deployment

Drupal ensures that you get many capabilities and functionalities fresh-out-of-the-box without paying exorbitantly

The type of framework you handpick for designing your e-commerce site also relies on the speed of the deployment of the end solution.

Drupal, with more than 40K modules, ensures that you get many capabilities and functionalities fresh-out-of-the-box without paying exorbitantly. Simply put, Drupal provides all the tools utilized by the most renowned marketplaces of the world successfully for a long time.

  • It Is Secure

There are more than 45,000 developers lending their support to the community & making every effort possible to combat all security risks that may occur, ensuring that the information in your store, as well as your client’s data, is out of reach of intruders and malicious attacks.

  • Seamless Mobile Experience

Drupal-based pages are already created with responsive web design guidelines in mind and are adapted to modern smartphones, thereby; saving you from creating separate mobile-specific websites. Further, it can deliver content directly to mobile apps.

Drupal Modules To Help You Get Your E-commerce Site Going

The most suitable modules that can help you build your out-of-the-box e-commerce site swiftly are listed below-

Drupal Commerce module makes a great fit for small and large businesses alike as it is highly flexible, scalable, and customizable. Users can create several types of displays and product categories with this module and simultaneously manage the payment procedure and orders efficiently.

Get your Drupal site up and coming with Commerce Kickstart in an accelerated way with its built-in configurations and modules, making the whole procedure of launching an online store quick and easy.

Those running their site on Drupal 7, two versions of the module are available: both 1.x and 2.x. For those running their site on Drupal 8, you’ll need the Drupal Commerce 2.x installer.

It provides you the flexibility to tailor more complex shipping scenarios while your business grows at every stage

Chances are high that if you are selling products online, you are shipping them too. 

So, instead of setting a constant shipping price, let this module calculate a cost for shipping based on the customers’ location at the checkout stage.

Commerce Shipping can also be integrated well with other shipping modules, like Commerce Flat Rate or Commerce UPS. Indeed, it provides you the flexibility to tailor more complex shipping scenarios while your business grows at every stage.

Keeping track of your customers’ transactions has now become easier with Drupal’s e-commerce Invoice module, where you can generate invoices for each purchase, for yours and your customers’ records.

 It has an abundance of invoice templates from which you can select the one that best suits your needs. Also, you have the option to view and download your invoices in PDF format, as needed.

Enterprises can boost their revenues per order with cross-selling and upselling techniques. Both Commerce Recommender and UberCart Recommender are the Drupal modules that you should install to enable cross-selling on the Drupal Commerce and Ubercart platforms, respectively.

Both modules help in triggering personalized messages and product recommendations for web users

Both modules help in triggering personalized messages and product recommendations for web users. The suggestions are based on users’ current orders and previous purchases.

This module also comes in handy when the user is new on the site and the software doesn’t have any prior purchase history to refer to for making any suggestions.

In such a scenario, these cross-selling modules analyze the purchase history of other users who previously bought the same product in the current order and hence recommend products that these users ordered in the past.

Even though phenomenal growth and new trends are being observed in leveraging social media, email marketing remains an undivided strategy of any online marketing plan. 

Marketing and sales campaigns are regularly employed by sending emails to people on subscription lists. 

The Mailjet module works on Drupal Commerce for running email marketing campaigns while the MailChimp E-commerce module supports both Drupal Commerce and Ubercart.

To get started with the module, you need to first signup with the respective company. The services are free, however, the email volume should be kept below a certain threshold. 

Both modules enable site administrators to create email campaigns, personalize the marketing messages, and track campaign efficacy. 

Learn more about the modules from the video

[embedded content]

It is adept in automatically tweaking the display format of price information based on the location of each online shopper

E-commerce gets its customers on its radar from the farthest and remotest countries of the earth, with all having different local currencies. Thus, the online store should be capable enough of converting product prices for customers as per their geographical location. Besides, the freshly converted local amount must be showcased in a format that conforms to the customers’ regional convention.

This module specializes in converting world currencies based on stored exchange rates. Besides, it is adept in automatically tweaking the display format of price information based on the location of each online shopper.

This module identifies the visitors’ IP address to recognize his or her geographical location (the country) of the user and store it in its database.

You can also perform your lookup on the data via a function to use the data in the way you want to. Besides, it automatically updates the IP-country database and admin spoofing of an uncertain IP or Country for testing purposes.

The technology behind maintaining this database is for establishing a link between IP address and Country is hosted and maintained by ARIN, the American Registry for Internet Numbers, therefore the database is 98% accurate

With the aim to remarket the product to the customer that he or she left in the shopping cart, this module saves the product for a later purchase. Products added to the wishlist display image of the product, add to cart button, stock, and price.

It also comes with a wishlist page showcasing a similar interface to Commerce’s Shopping Cart and a block.

Recurly, when integrated within Drupal, relieves you from subscription billing service and management. It can work alongside your existing payment gateway or merchant account or you can use the included Recurly Gateway.

With basic integration from Drupal, it includes receiving push notifications from Recurly.com. It also comprises of built-in pages for users to view invoices, subscriptions, and to upgrade/downgrade their subscription level.

Customers can easily and securely make payments in your Drupal Commerce shop without needing to leave the site

The Commerce Stripe module integrates well with Drupal commerce to support the tokenized payment gateway. This way, customers can easily and securely make payments in your Drupal Commerce shop without needing to leave the site.

The Physical Field module provides an API for storing and controlling physical measurements. It supports all kinds of unit conversions-

 It lends its support to measurement types like Area, Length, Volume, and Weight.

It also supports these following field types-

  1. Physical measurement: Stores a single measurement and it’s unit.
  2. Physical dimensions like length, width, and height along with its unit.

Commerce Stock assists in stock management for Drupal Commerce stores.

The other features include enabling and disabling the add to cart form, checking the cart form submit, checkout submit, and review submit, stopping the user from checkout in case the order contains out of stock items, and advanced configuration of the add to cart button for more control.

This module adds coupon functionality to Drupal Commerce through integration with the Commerce Discount module. You can add any number of coupon codes to a discount. Customers need to enter coupon code during checkout to activate the related discount. If there are some terms and conditions on the discount that prevent it from being applied to the order, the customer will be notified of the same.

Otherwise, the discount will be applied and the customer will see that the coupon has been redeemed.

This checkout progress block has been added to the core. It adds a block visible on the checkout pages to find out on what step of the checkout process the user is currently on. The status is an unordered list with each checkout page title being an item. 

The Commerce Message module integrates order-specific messages into it, such as order paid, product added to the cart, admin comment, order confirmation sent after checkout complete. A history view option appears to display all messages for a given order

Commerce File module widens the Commerce License ability to sell access to files. Whenever a user buys a product, he or she gets access to all files attached to that product’s commerce_file field.

This adding up of new files to the commerce_file field makes them available instantly to all the users who have an active license.

This module facilitates you to add new customer profile types for the Commerce module using a UI. So, in case you want another customer profile type other than the default billing pane in Commerce, then you can now easily do so by using this module. 

Similar to that of adding fields to the billing profile type and controlling how the fields are displayed, you can add new profile types to the ones you create here too, using this module.

In the End

Drupal does not only work as a driving force for content but also makes up an essential element in designing your e-commerce site. You can leverage the best of both the worlds- Drupal’s flexibility as a CMS in combination with e-commerce, to suit your business no matter at what stage it is!

Further, knowing about the ideally-suited modules as per your requirements can help you in kicking off the ideal site, or to improve the site that you already have. Either way, you’ll need developers to install these modules for you.

Srijan Technologies can assist you in taking your site up a notch. Whether you have decided to switch to Drupal, or fine-tune your existing site; it can help you to assure the success of your e-commerce site. Talk to us now!

Dec 06 2019
Dec 06

Mark brings a fifteen year programming background and six years of Drupal experience to his role as Senior Drupal Developer at Mediacurrent. Highly involved in his local web community, Mark runs the ABQ Webgeeks Group and started the Albuquerque Drupal Users group.

A former radio personality, Mark switched careers to become a programmer when he realized he could have a fun job and eat. (No seriously, kids, radio pays horribly). But as a nod to his days as in radio, Mark hosts the bi-weekly Mediacurrent Dropcast show and the Friday 5 video seriesPrior to Mediacurrent, Mark first dove into Drupal to convert dreamincode.net to a better CMS than it had. Through that he was sent to Do It With Drupal in New Orleans, where he met the great people of the community. From that point, he was hooked. 

Mark resides in Albuquerque, New Mexico. When not in front of the computer, he enjoys playing hockey, tennis, and a good craft beer- not necessarily in that order.

Dec 02 2019
Dec 02
A Step-by-step guide to integrating your BigCommerce store with the Drupal CMS


The BigCommerce for Drupal module, created by Acro Media in partnership with BigCommerce, was released early this year and brings together two different platforms – BigCommerce, the open SaaS ecommerce platform, and Drupal, the open source content management system. The result provides a wonderful new way for retailers to implement an innovative and content rich headless ecommerce strategy. If you use one and would like to have the capabilities of the other, the BigCommerce for Drupal module is the bridge you need. With this module, you can use Drupal as the powerful front-end CMS with BigCommerce as the easy-to-use and scalable ecommerce backend.

This post is a step-by-step guide for people who want to know how to install the BigCommerce for Drupal module and get started with both platforms. If you just want to know more about the BigCommerce and Drupal together as ecommerce solution, check out this post instead.

How this module works

Here’s a quick overview of how this all works. The BigCommerce for Drupal module integrates BigCommerce and Drupal together, but each platform is still used for different tasks.

In BigCommerce, you configure products, categories, shipping, taxes and everything else for the ecommerce side of your site. BigCommerce is also where you go to manage orders as they come in.

Drupal is then used for the website frontend and theming. Product and category information from BigCommerce are synced to Drupal, importing them as Drupal Commerce products so that they can be displayed and used like any other Drupal-based content. Any non-commerce content is also managed within Drupal. When a customer goes to checkout, a BigCommerce checkout pane is embedded in the Drupal site to securely process payment and save customer and order information.

Setup BigCommerce and Drupal

On to the guide! Follow these steps and you’ll have your BigCommerce and Drupal store configured in no time!

Prerequisites

This guide already assumes that you have the following ready.

  1. A BigCommerce account and store created
    You will need to create a BigCommerce account with at least one product, shipping method and payment method configured in your BigCommerce store. Do this here, not in Drupal.

    NOTE: BigCommerce currently offers a 14-day trial period, so any one can go and create and configure a store easily for free. For this demo, I signed up for that and created some random products to use for testing.

  2. A working Drupal 8 site
    You should have a Drupal 8 site with the Commerce module enabled and a default store added (via Commerce > Configuration > Store > Stores). You don’t need to do any other setup here yet or enable any of the other Commerce modules like checkout or payment. BigCommerce is going to handle all of this for you.
  3. An SSL certificate for your Drupal site
    Your Drupal website needs to have an SSL certificate active for the BigCommerce checkout form to render. This is required because it ensures security for your customers at checkout, so make sure you install one.

BigCommerce for Drupal setup guide

With the prerequisites done, here’s what you need to do to the the BigCommerce for Drupal connection made.

Step 1: Create a BigCommerce API account

  1. Go to your BigCommerce store admin page and navigate to Advanced Settings > API Accounts.
  2. Click on “Create API Account” button and select “Create V3/V2 API Token”.

    BigCommerce Store API Accounts page
    Fig: BigCommerce Store API Accounts page

  3. Provide a name (i.e. Product Sync) and select the scope for each features (i.e. if you don’t want the ability for the Drupal admin to modify product information, you can set the scope for “Products” as “read-only”).

    API configuration in BigCommerce
    Fig: API configuration in BigCommerce

  4. Click “Save” to save your changes. Once saved, you will see a summary and a prompt to download a file. Download it and keep it safe. Once you create an API account, you can’t modify the keys (but you can always make a new one).

    BigCommerce API Credentials dialog box
    Fig: BigCommerce API Credentials dialog box

Step 2: Download and configure the BigCommerce for Drupal module

  1. Get and install the BigCommerce for Drupal module.TIP: This module requires a bunch of other modules to work. To get the BigCommerce for Drupal module and all of its dependencies at the same time it’s recommended to use Composer instead of manually downloading it. Running the following command within your Composer based Drupal project will get everything you need.
    composer require drupal/bigcommerce
    
  2. In Drupal, navigate to module configuration page at Commerce > Configuration > BigCommerce > BigCommerce Settings.
    1. Fill in the API Path, Client ID, Secret Key, and Access Token that you received when creating the BigCommerce API.
    2. Hit “Save”. If everything is correct, you will see a message saying “Connected Successfully”.

      BigCommerce Configuration page in Drupal
      Fig: BigCommerce Configuration page in Drupal site

  3. Next we configure the Channel Settings. This will create a storefront url for you in BigCommerce which will match the one that is generated on the Drupal side.
    1. Select “Add new channel” from the select channel list.
    2. Provide a channel name.
    3. Click the “Create new BigCommerce channel” button. You will then see a Site ID and Site URL on the setting page.

      BigCommerce configuration page in Drupal - Channel settings
      Fig: BigCommerce configuration page in Drupal

  4. Now in the same Channel Settings area, click on the “Update BigCommerce Site URL” button. This lets you confirm that the url generated is actually sent to the BigCommerce, otherwise the checkout form will not be loaded on your Drupal site.

    You can also confirm the channel connection in from within the BigCommerce admin dashboard by visiting the Channel Manager admin page.

    Channel Manager storefront confirmation in BigCommerce
    Fig: Channel Manager storefront confirmation in BigCommerce

Step 3 : Sync products, variations and taxonomies from BigCommerce

  1. In Drupal, navigate to the product synchronization page at at Commerce > Configuration > BigCommerce > BigCommerce Product Synchronization.
  2. Click the “Sync Products from BigCommerce” button and ta-da, all the products, variations, and categories will be synced to your Drupal site in an instant.

    Alternately, you can also synchronize via the following Drush command. Advanced Drupal users can use this command on cron to do automatic syncing.

    drush migrate:import --group bigcommerce
    
    Product Synchronization page
    Fig: Product Synchronization page

    BC4D-Setup_Syncing-from-BigCommerce-in-progress-1
    Fig: Syncing from BigCommerce in progress

    NOTE: If you run into errors when syncing products, it probably because you don’t have a store added in the Drupal Commerce module yet. Add one at Commerce > Configuration > Store > Stores.

    TIP: Any time you make changes to the products in BigCommerce, visit this page or use the Drush command to synchronize the changes. Before syncing, you’ll also see a message telling you that updates are available.

  3. Confirm the products have synced by visiting the Product page for Drupal Commerce at Commerce > Products. A list of all of the products brought in from BigCommerce will appear here.

Step 4 : See the BigCommerce checkout in action

  1. Now that everything is set up, go to a product page, and it to your cart and proceed to checkout.

    If everything was done correctly, you will be able to see the BigCommerce checkout form embedded in to your Drupal site! Hurray! All of the shipping methods, payment methods, tax calculations, and other BigCommerce store configurations will be seen in the embedded form here.

    If you don’t see the checkout form make sure that your channels settings are correct and that you have an SSL certificate installed.

    Drupal’s checkout page with embedded BigCommerce checkout form
    Fig: Drupal’s checkout page with embedded BigCommerce checkout form

    Drupal’s checkout page after order complete
    Fig: Drupal’s checkout page after order complete

  2. Once an order has been placed, the order information will be stored in Drupal (at Commerce > Orders) and will also be sent to BigCommerce (at Orders > View).

    BigCommerce backend View Orders page
    Fig: BigCommerce backend View Orders page

Additional notes

The BigCommerce for Drupal module is ready for production and available for all to use. When writing this guide, there were some additional notes that I wanted to share.

  • At this time, product management should always be handled within BigCommerce and then synced to Drupal. Currently there is no option to bring back a product if you delete it in the Drupal side, so be careful.
  • A development roadmap for the module can be found here. It outlines future features and plans.
  • If you use the module and find any bugs or want specific features, please add them to the module issue queue here.

Acro Media is a BigCommerce Elite Partner

Acro Media is the development team partnered with BigCommerce that made the BigCommerce for Drupal module a reality. We have many, many years of ecommerce consulting and development experience available to support your team too. If you’re interested in exploring Drupal, BigCommerce or both for your online store, we’d love to talk.

View our BigCommerce for Drupal services

Nov 30 2019
Nov 30

Given the facts and figures in this study, there are more than 58 percent of people who prefer their smartphones over desktop or laptop to browse information on the internet. And when those responsible for the development (at the backend) decide to go ahead without any changes for the mobile, the users start getting annoyed. So much so, that 39% of them stop engaging if images don’t load or take too long to load.

In this blog, we will explore some of the awesome Drupal 8 modules for image optimization and how they can help websites reach their desired user experience. 

Drupal 8 Modules For Image Optimization 

Fortunately, Drupal 8 has many useful and out-of-the-box image optimization modules that makes it most appealing among website owners also who look forward to upgrading to Drupal 8.

Read on to find out about those modules that can help you in image optimization-

Responsive Image Module

The Responsive Image module in Drupal 8 encompasses an image formatter and breakpoint mappings to deliver responsive images using the HTML 5 picture tag. It comprises of fallback support for Internet Explorer 8. To get images in IE8 that are not tweaked for a mobile interface, you’ll need to configure the fallback in your display to use your desktop image size rather than “automatic”.

How to Set Up Responsive Images in Drupal 8

Following steps will help you in easy setup of responsive image module-

Step 1: Enable the responsive image module

One of the major changes in building responsive images in Drupal 8 from Drupal 7 is the responsive image module being part of Drupal’s core - there is no need to download an extra module. However, this feature is not enabled by default.

  1. To enable the responsive image module, go to "Admin" > "Configuration" (/admin/config).

  2. Click the checkbox next to "responsive Image".
  3. Click "Install".

Step 2: Setup breakpoints

If you are using a default theme like Bartik, there is no need to create a breakpoints.yml file. Default themes already have this file.

If you have a custom theme, go to your editor. In the root of your theme directory, create a file called "yourthemename.breakpoints.yml".

Your theme directory is usually found at "/themes/custom/yourthemename".

Step 3: Setup the image styles for responsive images

We need to create several image sizes for different breakpoints. Add one image style for each breakpoint you create at your_theme_name.breakpoints.yml.

Step 4: Responsive image styles

We will now assign the image styles with the breakpoints, to create the Responsive Image styles.

Go to ‘Home > Administration > Configuration > Media’ (/admin/config/media/responsive-image-style) and click on ‘Add responsive image’.

Below mentioned is the result of how a responsive image style, once set up,  can turn the tables.

  Devices 

Without the Responsive Image  Module 

With the Responsive Image Module 

Desktop

1-526074867869569249next 1

Tablet

3,27-8

Mobile

last secondlasttttt

 

ImageMagick Module

Drupal by default comes with the GD2 image manipulation toolkit which helps the image cache module to create different sized alternatives of the same images. While GD does most of the work, it lacks some important features like converting/supporting gif with image style, & supporting of some extra image formats like TIFF. At this point, we need to use ImageMagick to extend support for gif format with an image style.

Follow the given steps to start with ImageMagick-

1) Install the module by running the following command 

Composer require 'drupal/imagemagick'

2) Enable the module with following path  ‘yoursite/admin/config/media/image-toolkit’

3) Select the ImageMagick image toolkit and configure the image quality to 100%.

By implementing the module, the following improvements can be observed:

1) The gif image format support is now enabled when used with an image style.

2) 20-40% decrease in image size

Please refer to below table for detailed output-

Image Format/ Toolkit

GD2 Toolkit

ImageMagick Toolkit

PNG

1.car2.carr

JPG

3,carrrr4.carrr

GIF

5.screen

6.screen

Note: ImageMagick is preferable over the GD toolkit due to the functionalities it provides.

WebP Module

WebP format is one of the image formats developed by Google, capable of reducing the image size by 20-50%. Some of the dependencies which WebP module had before being used in Drupal are as below:

1) At least one image library (GD2, ImageMagick.). In our case, we are using ImageMagick.

2) Images to be rendered using a responsive image style as the WebP module works with <picture> tag only. Any image which is not rendered using picture tag is not converted to WebP form and remains in its original format.

Note: In some browsers, WebP format is still in testing mode. WebP module detects the unsupported browser and renders the original format image instead of WebP format.

Use the below steps to get started with WebP - 

1) Install the module by running the following command

composer require  'drupal/webp'

2) Enable the module and go to path ‘yoursite/admin/config/media/webp/settings’

3) Configure the image quality to 100%.

Below are the improvements that can be noticed on the site alongside a decrease in image size by 20-25% - 

Please refer to below table for detailed output-

Image Format / Configuration

With ImageMagick and without WebP

With ImageMagic and WebP

PNG

2.carr-1

White second

JPG

new brown 2brown fina;

GIF

6.screen5.screen

Note: Please note that the size of the gif image remains the same in both cases - with and without WebP. The reason is that WebP does not support gif images on some browsers. Hence, we have excluded the gif by applying a patch on the WebP module.

Summing up:

The bounty you get against the efforts you put in is the website images that look vibrant and crisp on all touchpoints, while still downloading efficiently. Users won’t leave your sites disgruntled anymore as images won’t take forever to download; making a huge difference to your engagement ratio, conversions, and other sales activities.

Drupal is a powerful, robust, and scalable website content management system that ensures every element on the website functions well to deliver a seamless digital experience to users. Using its modules, you can surely manage the images efficiently witnessing the boost in site performance.

(Co-authored by Sumit Kumar)

Nov 21 2019
Nov 21

Gone are those days when traditional inbound marketing practices worked wonders. Today, the one-size-fits-all approach does not prove effective for companies trying to appeal to well-heeled clients and companies. 

Perhaps, this approach has served B2B marketers well for so long but now this digital era has taken over and led to the battle already where everyone is going head over heels to grow traffic and generate more leads. 

One inverted triangle and one normal with text written                                                            Source: Acquia

What is the solution then?

It is account-based marketing (ABM) indeed! An action-plan approved by both large and SMBs to help them aim at high-value accounts with customizing or rather personalizing campaigns and raising awareness.

The illusion of (some) control over what visitors are engaging with is powerful, and has a positive effect on visitor psyche. Perhaps, that why personalization works so well. 

Drupal 8’s API-first architecture makes integration easy to implement account-based marketing

This blog will give you deep insights on how Drupal and ABM can benefit enterprises in increasing customer engagement, and what all the tools are there for the same.

Benefits Of Account-based Marketing

Here are some of the ABM benefits listed-

1.  Clearer Path To ROI

Account-based marketing is accurate, focuses on personalized targeting, and is measurable too

Account-based marketing is accurate, focuses on personalized targeting, and is measurable too. Considered as appropriate in B2B marketing tactics and strategies for the highest ROI, it is the one that ensures less waste and so the risk.

This practice makes it easier to streamline sales and marketing for consistent marketing that grows accounts.

  1. Faster Sales Process

Due to the involvement of several stakeholders in making a final purchase decision, the whole process gets stretched. As a result, this slows down your typical sales and marketing process. However, ABM provides you the opportunity to nurture your primary decision maker particularly, along with all relevant potential customers, to facilitate and hasten the sales process.

  1. Efficient Use Of Marketing Resources

ABM redefines your marketing efforts on the major accounts to drive the most revenue

ABM redefines your marketing efforts on the major accounts to drive the most revenue. These initiatives let you optimize your most valuable resources: time and money. The integration of sales and marketing efforts can let you focus your marketing team directly with sales to target and produce content for key accounts and build a successful communication with sales.

  1. Right Targets to Get Right Leads

As per this report, there are almost more than 45% of the bad leads that are of no use to marketers even after additional cleaning,  and hence leads to wastage of resources, money, time, and effort.

ABM is a breakthrough marketing practice that helps in hitting on the right lead instead of low-profit or low-level clients 

ABM is a breakthrough marketing practice that helps in hitting on the right lead instead of low-profit or low-level clients that might give you only a small percentage of revenue. ABM has the unique ability to target the right accounts, i.e, large accounts that have the possibility of closing down soon; resulting in right leads and more revenue than those hundreds of the wrong leads combined!

Quick look on the basics of ABM. 

[embedded content]

Getting Started With ABM? Tools You Can Consider

Getting rid of age-old marketing tools to embrace the ABM personalization tools, or simply finding a way to seamlessly integrate them into your workflow can be one of the best decisions you can make for better customer engagement.

With tools such as Engagio that help account-based marketers to initiate lead-based marketing strategies for reviewing performances, there are also tools like Terminus that emphasize personalized account targeting, engagement insights for the sales team & ROI tracking. 

Integrate is also one such useful tool that lets you combine and manage several lead generation platforms in one place and save your time and effort of moving back and forth from one platform to another. Uberflip is no less and focuses on delivering the right content to the right audience at the right time. It uses an AI component that acts as a recommendation engine for content delivery to enhance customer experiences. 

How Integrating ABM and Drupal Can Result In Increased Lead Generation, Retention, and New Market Growth?

In this era of “the customer is the king”, it has become extremely difficult for the companies to get noticed and break through the noise.

However, when Drupal 8’s API-first initiative is combined with ABM, enterprises get access to a whole new line of solutions to deal with the problems that have been surfacing for so long, such as relevant lead generation, retention of customers, and new market opportunities.

ABM requires sales & marketing teams to work closely together in pinpointing and selecting individual companies to target and treat each of these accounts as its very own market to see stronger results.

ABM and Drupal collectively understand that audience identification is the key to the personalization and unmatched experience

Drupal is an ultimate martech stack based on open-source and has been built in such a way that it integrates well with all other tools seamlessly. The use of API structure in Drupal allows the use of the latest javascript to create wonderful apps and deliver exceptional digital experiences in real-time.

ABM and Drupal collectively understand that audience identification is the key to the personalization and unmatched experience and therefore, ensures focus & flexibility to target only those accounts which are well-suited as per organizations’ competency. Ideally, Drupal manages content and the ABM platform ensures identification and recommendation.

Today with ABM, any company that has been using marketing automation technology and CRM software can automate much of the tedious work required for mining potential customer data and personalizing the marketing messages to meet the specific needs of the targeted accounts. In addition to this, an ABM strategy makes it smooth and efficient for enterprises to see how much of the money the company is spending on marketing is directly converting into closed sales and revenue or not.

Modules That Fuel Personalization Through ABM & Drupal Integration

Here are some Drupal modules and tools that support ABM for refined digital experiences-

1. Acquia Lift

Amalgamation of the potential of Lift and the capabilities of Drupal allows marketers to select the level of sophistication that fits their needs and budgets

Web Personalization is the key to successful customer experience. An effective personalization pulls and analyzes customer data, and accordingly suggest content to deliver the right experience to the right customers. For similar reasons, Acquia Lift provides the three-step approach, i.e., crawl, walk, and run approach for web personalization. 

Have a look at these three approaches-

Crawl personalizations can be started instantly from a content and data perspective. These are considered as low effort (means general, easily gathered data and personalization that can be ongoing), of varying impact, and with fast results.

Walk personalizations need additional content and more data collection for further defined segments. Considered as a medium to the high effort ( data that requires multiple visits and additional content creation), delivers results with moderate impact. 

Run personalizations demands more content, more personalization activities, and more data for further defining segments. They require high effort ( requiring data collection and integration from other systems, moderate to large-scale content generation, and more analysis and resources to build and implement rules) with high impact during an extended period.Multiple colored boxes with text insideSource: Acquia                                      

Doing it the right way, with the right technology, can only deliver results that will drive customer experience and your business forward. So, Acquia Lift when combined with powerful solutions, like Drupal, results in a powerful yet easy-to-use platform that augments real business results. Acquia Lift facilitates enterprises in understanding their customers and improving engagement with relevant content for unmatched contextual digital experiences.

The amalgamation of the potential of Lift and the capabilities of Drupal allows marketers to select the level of sophistication that fits their needs and budgets to build unified customer personas, based on data like device type, geolocation, and browser history. Following this, Lift delivers personalized content to relevant customer segments through drag and drop Drupal interface.

Acquia Lift offers following features-

1. Simple campaign creation

Marketers can easily create personalized campaigns in just three steps

2. No coding for testing and targeting

Fueling the creation and launch of personalization without any technical skills.

3. Well-defined personalization campaign types

Enterprises can set a/b tests, target personalizations to specific crowd or suggest content across a series of sessions to deliver the best possible experience.

4. Enhanced scheduling

Assists marketing teams aligning personalizations to events, promotions, sales, and press-related activities.

5. Multi-lingual personalization

Personalize in multiple languages by automatically localizing content as per the detected location.

6. Real-time operation and insights

Caters a dashboard from where activities can be reviewed in real-time for both optimizing and validating marketing investment.

  1. Smart Content Demandbase

The Smart Content Demandbase is a targeting and personalization platform to deliver a personalized experience to each visitor on the website in real-time

The Smart Content Demandbase is a targeting and personalization platform to deliver a personalized experience to each visitor on the website in real-time.

It gives enterprises insights on buyers’ persona and so the ability to optimize your ABM at scale.

With Demandbase, marketers can target website content to companies that fit pre-defined criteria based on attributes and metrics like industry, revenue, customer status, or products purchased. Following are its features-

A. Coordination among different channels

Creating and managing target account lists in the Demandbase ABM platform can be done via enabling the third-party system to ingest these lists. This way, they can be used in a coordinated fashion across virtually any channel (email, direct mail, content syndication, etc).

B. Monitor and fragment target account audiences

Audience lists can be easily managed by fragmenting the data brought into the Demandbase Platform through these integrations. This way, opportunities through CRM can be pulled in for increasing the ROI of ABM programs and at the same time use it for boosting account profiles with contact data and both online and offline engagement data, to provide a comprehensive framework of target accounts.

C. Innovation through collaboration

Collaboration with other hundreds of smart, innovative companies who are building capabilities to benefit ABM marketers will grow only in the coming times. The Demandbase ABM Ecosystem will facilitate clients to benefit from such innovations alongside future capabilities that Demandbase delivers.

D. Seamless data integration

In a world where martech stacks are overflowing, siloed data comes up as a huge challenge for every CMO in achieving the desired ROI. With the enablement of complementary solutions to pass data between systems, the Demandbase ABM Ecosystem can eliminate the risk of buying decisions and enable the marketer to get to value quickly.

  1. Smart Content Module

Marketers can leverage browser conditions, cookies, or third-party APIs to display various content for anonymous and authenticated users

The Smart Content module builds for Drupal 8, can be easily integrated with any data source to facilitate enterprises deliver segmented content- via Drupal admin, as per industry, buyer stage, location or other crucial segments.

It is a toolset that enables the personalization of an anonymous website in real-time. Marketers can leverage browser conditions, cookies, or third-party APIs to display various content for anonymous and authenticated users.

However, it has limited functionality on its own as it is designed to work in conjunction with other modules to boost the power of personalization.

Two of its components are-

1. Smart Content Blocks

Smart content block lets you insert a smart content block on any page to hide/show/swap content within that block, as per the conditions defined by a content administrator. These blocks can be added anywhere, and even in multiple regions on a single page.

2. Smart Content Segments 

You can create, save, and manage a set of conditions, knowns as segments with it. These blocks can use any segment(s) to display the corresponding content.

Smart content lets an API with available data be used as conditions to boost your personalization strategy and better leverage the tools you already have.

Final Words

Drupal and ABM take personalization to the next level collectively and also empower sales and marketing teams. The results obtained are - increase in customer engagement, relevant leads and prospects, enhanced customer retention, and hence sky-rocketing ROI. 

If your enterprise is looking for inculcating Drupal and ABM platforms, then you are in the right place! Srijan has helped its clientele in maximizing their ROI and it can help you too. Contact us now!

Nov 16 2019
Nov 16

A few weeks ago we announced our diversity scholarship for DrupalSouth. Before announcing the winner I want to talk a bit about our experience doing this for the first time.

DrupalSouth is the largest Drupal event held in Oceania every year. It provides a great marketing opportunity for businesses wanting to promote their products and services to the Drupal community. Dave Hall Consulting planned to sponsor DrupalSouth to promote our new training business - Getting It Live training. By the time we got organised all of the (affordable) sponsorship opportunities had gone. After considering various opportunities around the event we felt the best way of investing a similar amount of money and giving something back to the community was through a diversity scholarship

The community provided positive feedback about the initiative. However despite the enthusiasm and working our networks to get a range of applicants, we only ended up with 7 applicants. They were all guys. One applicant was from Australia, the rest were from overseas. About half the applicants dropped out when contacted to confirm that they could cover their own travel and visa expenses.

We are likely to offer other scholarships in the future. We will start earlier and explore other channels for promoting the program.

The scholarship has been awarded to Yogesh Ingale, from Mumbai, India. Over the last 3 years Yogesh has been employed by Tata Consultancy Services’ digital operations team as a DevOps Engineer. During this time he has worked with Drupal, Cloud Computing, Python and Web Technologies. Yogesh is interested in automating processes. When he’s not working, Yogesh likes to travel, automate things and write blog posts. Disclaimer: I know Yogesh through my work with one of my clients. Some times the Drupal community feels pretty small.

Congratulations Yogesh! I am looking forward to seeing you in Hobart.

If you want to meet Yogesh before DrupalSouth, we still have some seats available for our 73780151419">2 day git training course that’s running on 25-26 November. If you won’t be in Hobart, contact us to discuss your training needs.

Share this post

Nov 08 2019
Nov 08

If you are a frontend web developer you have probably heard of GraphQL or maybe you have even used it, but what is it? GraphQL is a query language for APIs that allows you to write queries that define the data you receive. No more emailing the backend team to update an endpoint for your application. The client developer defines the data returned in the request.

What is a GraphQL Server/API?

A GraphQL server is a server-side implementation of the GraphQL spec. In other words, a GraphQL server exposes your data as a GraphQL API that your client applications can query for data. These clients could be a single page application, a CMS like Drupal, a mobile app, or almost anything. For example, say you have a MySQL database and you want to expose the content to a React application. You could create a GraphQL server that will allow our React application to query the database indirectly through the GraphQL server.

Why would you consider a GraphQL API?

1. You need an API for your applications

At Mediacurrent, we have been building decoupled static web sites using GatsbyJS. But sometimes we also need some components with dynamic data. You need an API for that and our front-end team was already using GraphQL in Gatsby. Or maybe you might develop a mobile app and need a reliable and fast way to get data from your legacy database. You can use GraphQL to expose only the data you need for your new app but at the same time give your client app developers the ability to control what data they get back from the API.

2. You need data normalization

For our purposes as developers data normalization is simply the process of structuring our data to remove redundancy and create relationships between our data. Data normalization is something database designers think about but developers and software architects should consider as well.

One of the biggest mistakes I’ve seen in my years building web applications is the pattern of including too much business logic in application components. These days, it is not unusual to require data from multiple applications, public REST APIs as well as databases. There is often duplication across these systems and the relationships are rarely clear to the development team. Creating components that require data from multiple systems can be a challenging task. Not only do you have to make multiple queries to retrieve the data, but you also need to combine it in your component. It’s a good pattern to normalize the data outside of your components so that your client application’s components can be as simple and easy to maintain as possible. This is an area where GraphQL shines. You define your data’s types and the relationships between your data in a schema. This is what allows your client applications to query data from multiple data sources in a single request.

3. You love your client application developers

A well-built GraphQL server will avoid these issues that are common with REST APIs.

  • Over-fetching - receiving more data than you need.
  • Under-fetching - not receiving all the data you need.
  • Dependent requests - requiring a series of requests to get the data you need.
  • Multiple round trips - needing to wait for multiple requests to resolve before you can continue.

Over-fetching

In a perfect would we would only fetch the data we need. If you have ever worked with a REST API you will likely know what I mean here. Your client application developers may only need a user’s name but it is likely that when they request the name using the REST endpoint they will get much more data back from the API. GraphQL allows the client to specify the data returned in the request. This means a smaller payload delivered over the web which will only help your app be more performant.

Under-fetching, dependent requests, and multiple round trips

Multiple requests with GraphQL

Another scenario is under-fetching. If you need a user’s name and the last three projects they were active on, you probably need to make two HTTP requests to your REST API. With GraphQL relationships, you can get this data back in a single request. No more callbacks and waiting on multiple endpoints to resolve. Get all your data in one request. Now you are avoiding multiple requests, dependent requests, and multiple round trips to get the data for your app’s components.

GraphQL single request to multiple data sources.

Self documenting

The type based schema that GraphQL provides creates the structure to build powerful tools like Graphiql, an in-browser IDE for exploring GraphQL.

Graphiql example

This schema also allows for what I would call a self documenting API. GraphQL playground is an example of the power of the GraphQL schema. It takes this schema and creates documentation as well as an IDE like Graphiql. When you update your schema, your documentation is automatically updated as well as the IDE. That’s a huge win!

GraphQL Playground example