Envato Tuts+: Top 10 Most Usable Content Management Systems

There are plenty of options when it comes to picking a content management system for a development project. Depending on how advanced you need the CMS to be, what language it’s built in, and who is going to be using it, it can be a nightmare trying to find the “perfect” CMS for a project.

However, some CMSs have a slight edge over the rest of the competition because of the usability of the software. Some are just easier to install, use and extend, thanks to some thoughtful planning by the lead developers. 

We have a number of themes and resources to support these top content management systems. If you’re looking for WordPress Themes, Drupal Themes, or Joomla Themes we have you covered on Envato Market

We support a number of additional popular CMS systems. And a gallery of WordPress Plugins, Drupal Plugins, Joomla plugins and more. Visit our ThemeForest or CodeCanyon marketplaces to browse through a ton of professional options.  

Here are 10 of the most usable CMSs on the web to use in your next project, so you can choose the one that fits your needs best.

1. WordPress


What is there left to say about WordPress that hasn’t already been said? The PHP blogging platform is far and away the most popular CMS for blogging, and probably the most popular CMS overall. It’s a great platform for beginners, thanks to their excellent documentation

and super-quick installation wizard. Five minutes to a running CMS is pretty good. Not to mention the fact that the newest versions auto-update the core and plugins from within the backend, without having to download a single file.

For those users not familiar with HTML or other markup language, a WYSIWYG editor is provided straight out of the box. The backend layout is streamlined and intuitive, and a new user should be able to easily find their way around the administration section. Wordpres also comes with built-in image and multimedia uploading support.

For developers, the theming language is fairly simple and straightforward, as well the Plugin API.

The WordPress Community is a faithful and zealous bunch. WordPress probably has the widest base of plugins and themes to choose from. We have thousands of professional WordPress Themes and WordPress Plugins available for sale on Envato Market, with a full suite of styles and options to choose from. 

A great part about the WordPress community is the amount of help and documentation online you can find on nearly every aspect of customizing WordPress. If you can dream it, chances are it’s already been done with WordPress and documented somewhere.

If you need help with anything from installing a theme to optimizing the speed of your WordPress site, you can find plenty of experienced WordPress developers to help you on Envato Studio.

2. Drupal


Drupal is another CMS that has a very large, active community. Instead of focusing on blogging as a platform, Drupal is more of a pure CMS. A plain installation comes with a ton of optional modules that can add lots of interesting features like forums, user blogs, OpenID, profiles and more. It’s trivial to create a site with social features with a simple install of Drupal. In fact, with a few 3rd party modules you can create some interesting site clones with little effort.

One of Drupal’s most popular features is the Taxonomy module, a feature that allows for multiple levels and types of categories for content types. And you can find plenty of professional Drupal Themes, which are ready to be customized and worked with. You can also grab Drupal Plugins.

Drupal also has a very active community powering it, and has excellent support for plugins and other general questions. 

You can also hire a developer to complete a range of tasks for your Drupal site for a reasonable fixed fee.

3. Joomla!


Joomla is a very advanced CMS in terms of functionality. That said, getting started with Joomla is fairly easy, thanks to Joomla’s installer. Joomla’s installer is meant to work on common shared hosting packages, and is a very straightforward considering how configurable the software is.

Joomla is very similar to Drupal in that it’s a complete CMS, and might be a bit much for a simple portfolio site. It comes with an attractive administration interface, complete with intuitive drop-down menus and other features. The CMS also has great support for access control protocols like LDAP, OpenID and even Gmail.com.

The Joomla site hosts more than 3,200 extensions, so you know the developer community behind the popular CMS is alive and kicking. Like WordPress, you can add just about any needed functionality with an extension. However, the Joomla theme and extension community relies more on paid resources, so if you’re looking for customizations, be ready to pull out your wallet. You can also grab Joomla plugins, or hire Joomla developers to help you get your store set up right.

4. ExpressionEngine


ExpressionEngine (EE) is an elegant, flexible CMS solution for any type of project. Designed to be extensible and easy to modify, EE sets itself apart in how clean and intuitive their user administration area is. It takes only a matter of minutes to understand the layout of the backend and to start creating content or modify the look. It’s fantastic for creating websites for less-than-savvy clients that need to use the backend without getting confused.

ExpressionEngine is packed with helpful features like the ability to have multiple sites with one installation of software. For designers, EE has a powerful templating engine that has custom global variables, custom SQL queries and a built in versioning system. Template caching, query caching and tag caching keep the site running quickly too.

One of my favorite features of EE that is the global search and replace functionality. Anyone who’s ever managed a site or blog knows how useful it is to change lots of data without having to manually search and open each page or post to modify it.

ExpressionEngine is quite different than other previously-mentioned CMS in that it’s paid software. The personal license costs $99.95, and the commercial license costs $249.99. You can also get help with ExpressionEngine on Envato Studio.

5. TextPattern


Textpattern is a popular choice for designers because of its simple elegance. Textpattern isn’t a CMS that throws in every feature it can think of. The code base is svelte and minimal. The main goal of Textpattern is to provide an excellent CMS that creates well-structured, standards-compliant pages. Instead of providing a WYSIWYG editor, Textpattern uses textile markup in the textareas to create HTML elements within the pages. The pages that are generated are extremely lightweight and fast-loading.

Even though Textpattern is deliberately simple in design, the backend is surprisingly easy to use and intuitive. New users should be able to find their way around the administration section easily.

While Textpattern may be very minimal at the core level, you can always extend the functionality by 3rd party extensions, mods or plugins. Textpattern has an active developer community with lots of help and resources at their Textpattern.org site.

6. Radiant CMS


The content management systems that we’ve listed so far are all PHP programs. PHP is the most popular language for web development, but that doesn’t mean we should overlook other popular web languages like Ruby. Radiant CMS is a fast, minimal CMS that might be compared to Textpattern. Radiant is built on the popular Ruby framework Rails, and the developers behind Radiant have done their best to make the software as simple and elegant as possible, with just the right amount of functionality. Like Textpattern, Radiant doesn’t come with a WYSIWYG editor and relies on Textile markup to create rich HTML. Radiant also has it’s own templating language Radius which is very similar to HTML for intuitive template creation.

7. Cushy CMS

Cushy CMS

Cushy CMS is a different type of CMS altogether. Sure, it has all the basic functionality of a regular content management system, but it doesn’t rely on a specific language. In fact, the CMS is a hosted solution. There are no downloads or future upgrades to worry about.

How Cushy works is it takes FTP info and uploads content on to the server, which in turn the developer or the designer can modify the layout, as well as the posting fields in the backend, just by changing the style classes of the styles. Very, very simple.

Cushy CMS is free for anyone, even for professional use. There is an option to upgrade to a pro account to use your own logo and color scheme, as well as other fine-grain customizations in the way Cushy CMS functions.

8. SilverStripe


SilverStripe is another PHP CMS that behaves much like WordPress, except has many more configurable options and is tailored towards content management, and not blogging. SilverStripe is unique because it was built upon its very own PHP framework Saphire. It also provides its own templating language to help with the design process.

SilverStripe also has some interesting features built in to the base, like content version control and native SEO support. What’s really unique with SilverStripe is that developers and designers can customize the administration area for their clients, if need be. While the development community isn’t as large as other projects there are some modules, themes and widgets to add functionality. Also, you’ll want to modify the theme for each site, as SilverStripe doesn’t provide much in terms of style, to give the designer more freedom.

9. Alfresco


Alfresco is a JSP is a beefy enterprise content management solution that is surprisingly easy to install. A really useful feature of Alfresco is the ability to drop files into folders and turn them into web documents. Alfresco might be a little bit more work than some of the other CMS and isn’t as beginner-friendly, it certainly is quite usable given the massive power of the system. The administration backend is clean and well-designed.

While Alfresco might not be a great choice for most simple sites, it’s an excellent choice for enterprise needs.

10. TYPOlight


TYPOlight seems to have the perfect balance of features built into the CMS. In terms of functionality, TYPOlight ranks with Drupal and ExpressionEngine, and even offers some unique bundled modules like newsletters and calendars. Developers can save time with the built-in CSS generator, and there are plenty of resources for learning more about the CMS.

If there is a downside to TYPOlight, it’s that it has so many features and configurable options. Even though the backend is thoughtfully organized, there are still a lot of options to consider. But if you’re wanting to build a site with advanced functionality and little extra programming, TYPOlight could be a great fit.

Go to Source

Envato Tuts+: Intro to Drupal: Build a Simple CMS

Drupal’s popularity has lately been rising. It’s a great platform for setting up content management systems and community driven sites. Here, I’ll give a general overview of Drupal and build a simple site for a fake client. We’ll begin with outlining the client’s needs, installing and configuring a few modules, creating user roles and assigning permissions, and finally we’ll add in some content. We won’t go into theming, as it’s a bit out of the scope of this article.

Continue reading “Envato Tuts+: Intro to Drupal: Build a Simple CMS”

Promet Source: A Comprehensive Guide to Drupal Migration Resources


Current stats on the high percentage of Drupal websites that are still on version 7, with no apparent migration plan in sight, are sparking concern and curiosity throughout the Drupal sphere. What exactly is standing in the way of decisions to shed this outdated version and start reaping the benefits of better security and a far superior CMS? 

Go to Source

Security advisories: Drupal core – Critical – Drupal core – Critical – Third-party libraries – SA-CORE-2021-004

Drupal core – Critical – Third-party libraries
The Drupal project uses the pear Archive_Tar library, which has released a security update that impacts Drupal.

The vulnerability is mitigated by the fact that Drupal core’s use of the Archive_Tar library is not vulnerable, as it does not permit symlinks.

Exploitation may be possible if contrib or custom code uses the library to extract tar archives (for example .tar, .tar.gz, .bz2, or .tlz) which come from a potentially untrusted source.

This advisory is not covered by Drupal Steward.

Install the latest version:

Versions of Drupal 8 prior to 8.9.x and versions of Drupal 9 prior to 9.1.x are end-of-life and do not receive security coverage.

Reported By: 
Fixed By: 

Go to Source

Specbee: Building Chatbots in Drupal Using Dialogflow

Building Chatbots in Drupal Using Dialogflow
Kashyap Rai
20 Jul, 2021

Being present when your customer needs you the most displays how much your business values responsiveness and customers engagement. Having a chatbot enables your business with these capabilities and more. A chatbot is a computer algorithm that simulates a human conversation. People interact with these bots by selecting predefined options. To give valid answers, chatbots require people to make a few selections.

With Drupal, you can try your hands out at different chatbots using modules like the Drupal Chatbot or other integration modules and APIs. In this article, we will be exploring more on Drupal Chatbot which uses Dialogflow as the NLP agent.
Building Chatbots in Drupal

Why use a Chatbot?

A Chatbot is an excellent marketing tool for a business to drive customer engagement. Chatbots enable a business to:

  • Gather customer insights
  • Increase sales
  • Be available 24/7
  • Save on time and money
  • Improve customer satisfaction

How do Chatbots built with Dialogflow work?

In a nutshell, this is how a chatbot normally works:

  1. User sends a text message through chat window 
  2. The chat app transfers the message to Dialogflow
  3. The message is matched to as intent (Intents updated manually by developers or admin in Dialogflow console)
  4. Based on the matching intent, a response is fetched. (Each intent will have its own developer defined response)
  5. The user gets a response back.

Why Dialogflow?

Dialogflow is a natural language understanding platform that makes it easy to design and integrate a conversational user interface into your mobile app, web application, device, bot, interactive voice response system, and so on. Dialogflow can analyze multiple types of input like text or audio. It can also respond to user in multiple ways, either through text or speech. 

Building a Chatbot in Drupal using Dialogflow

Step 1: Create a New Agent

  • Create and sign in to your Dialogflow account 
  • Click on Create Agent in the navigation bar and fill in the required fields.
  • Give a name and select language to your agent. Then, click the Save button.

Create New Agent 
Agent Name 

Step 2: Create an Intent

But first, what is an intent? An intent links what a user says with what your agent does. Dialogflow matches the end-user phrase to the best intent in your agent.

A basic intent contains the following:

  • Training phrases: These are example sentences or phrases of what end-users might say. This should be updated in Dialogflow console by developer.  When an end-user expression resembles one of these, Dialogflow matches the intent. You don’t have to define every possible phrases, Dialogflows built-in ML handles other, similar example phrases.
  • Responses:  Developer defined text response in return to the end-user. These may provide the end-user with answers or ask the end-user for more selection or terminate the conversation.

To create an intent:

  1. Select the agent that you created in step 1
  2. Click on the Add button next to Intents in the menu.
  3. Enter a name for your intent. 
  4. Enter Training Phrases
  5. Enter Response Test 
  6. Click Save.

Internet Name 
Training Phase


Dialogflow contexts are similar to natural language context. If a person says to you “they are green”, you need context to understand what “they” is referring to. For Dialogflow to handle an end-user phrase like this, it needs to be provided with output or input context to accurately match an intent.

There are 2 types of contexts:

  • Output contexts: control active contexts. When an intent is matched, any configured output contexts for that intent become active.
  • Input contexts: control intent matching. While contexts are active, Dialogflow is more likely to match intents that are configured with input contexts.

Input and output contexts are applied to intents. They work together to control bot conversation flow.


Step 3: Integrating Drupal with Dialogflow

  • Install the Drupal chatbot module from here.
  • Enable Webhook for first intent and then click on Fulfillment in the left panel, enable webhook and enter the URL (for example: www.yourURL.com/assist). Click on Save.


  • Click on the settings icon beside the Agent name in the left navigation. Copy the client access token to be used in the Drupal module.
  • Go to admin/config/services/chatbot-settings and fill in the client access token and other information required. 
  • Go to admin/structure/block and look for the “Chat Bot” block. Place the block wherever desired.
Shefali ShettyApr 05, 2017


Go to Source

ComputerMinds.co.uk: Custom node routes

Cycle path flyover over roads into Auckland
Sometimes it can be handy to have extra pages for a node (or any entity). For example:

  • To show different sets of information on separate pages for a single product, page, or thing.
  • So you can set different access requirements on each page for a node.
  • You want to block access to the ordinary route (e.g. node/123 and its aliased equivalent) for some reason, but you still want some other page to represent that node.

I’ve found a few people with that need on Drupal slack before, so I thought I’d write a guide because it’s surprisingly easy!

My imaginary requirement

I’m going to imagine my client has asked me to set up an additional page for products, to show information relevant to someone that has already bought the product. We’ll call it the ‘Product support’ page. This page could be public, but shown as a separate tab for products, or even just hidden as a link only sent out to customers that have ordered the specific product. Access could even be restricted to those people entirely. All the content to show on the page would come from fields on the product. We don’t really want to go creating another separate entity to hold data that’s only relevant to the product in question anyway. This makes sense from a data point of view as all the fields are for one thing, whether for existing or potential customers. (Of course, Field Group could be used to split those things into tabs on the product’s edit form, or a similar technique to this article’s could be used to separate them out into an additional edit page!)

First, set up a view mode for your node/entity

Just like teasers can be configured separately to the full content version of a node, you can create your own view mode. Add it from /admin/structure/display-modes/view on your site, and then enable it from the ‘Custom display settings’ section at the bottom of the ‘Manage display’ tab for your entity type/bundle. Once that’s done, navigate to the sub-tab for your view mode and choose the fields you’ll want to show.

So I’ll make one called ‘Product support’, and configure only fields like ‘Support helpline’, ‘Manuals’ and ‘Returns information’ to show in this view mode. I will probably go hide those fields in the usual (default/full) mode too.

Next, set up the page to use that view mode

HTML page routes for viewing entities are usually set up by the ‘route_provider’ specified in an entity type’s annotation block. For nodes, that’s DrupalnodeEntityNodeRouteProvider, which dynamically sets up the view, edit & delete routes (take a look!). But you can define your route with some simple YAML. In a custom module, add (or use an existing) mymodule.routing.yml file, with the following code. Replace ‘mymodule’ with your module’s machine name, and ‘product_support’ with the machine name of your view mode:

  path: '/node/{node}/product-support'
    _entity_view: 'node.product_support'
    _title: 'Product support'
    node: 'd+'
    _entity_access: 'node.view'
    _custom_access: 'mymodule_product_support_access'

The last line contains the name of a function you might want to use to add any custom access logic. The function could just be in your .module file. In my case, I might look up the current user’s orders to check whether they have bought the product before allowing access. You might want to at least restrict which bundles the route works for, like so:

 * Extra access callback for product pages.
function mymodule_product_support_access(DrupalCoreEntityContentEntityInterface $node) {
  return DrupalCoreAccessAccessResult::allowedIf($node->bundle() === 'product');

But you can just omit that _custom_access: line from the YAML entirely to just use the same access that the ordinary node page has, no problem.

Rebuild the site caches; you’re done!

Now you can access /node/123/product-support to view a different page of content for your product! If you want to set it up as a tab where the usual ‘View’/’Edit’ tabs of a node would be, then use the following YAML in a mymodule.links.task.yml file in your module. Again, replace ‘mymodule’ and ‘product_support’ as appropriate, and then rebuild the site caches to see it work:

  route_name: mymodule.product_support
  title: 'Product support'
  base_route: entity.node.canonical
  weight: 5

All of this can work for any entity type – try just replacing ‘node’ in each of these code snippets with the machine name of the entity type that you want to use.

There’s a module for that

There are modules like View Mode Page which let you set these extra pages up in the UI. But I’ve found my additional pages usually need some additional bespoke logic though, whether for access or something else on the page. So given how little actual code is needed, I tend to just make them this way. But it does have some handy features, like supporting URL aliases for nicer paths.

Entity Form Mode also claims to help you make separate edit pages for form modes, which is very handy. But again, I find these tend to have even more interesting bespoke requirements with custom access logic. But see how you get on. Making these in custom code can be just as easy anyway – just replace the _entity_view: 'node.product_support' part of the routing YAML with _entity_form: 'node.my_form_mode', and the _entity_access part should use ‘node.update’ instead of ‘node.view’.

I’m sure there are some interesting use cases for this – let me know in the comments what you’ve needed custom entity routes for!

Photo by Thant Zin Oo on Unsplash

Go to Source

Talking Drupal: Talking Drupal #303 – Multitasking

Today we are talking about multitasking between projects.



  • John – Timezone issue
  • Fatima – Gaming chair
  • Nic – Kint arrow
  • What do we mean by multitasking
  • Not task switching
  • Kinds of projects
    • Camp organizing
    • Mentoring
    • Podcasting
    • Open source project maintenance
    • Sewing
    • Lego building
  • Processes used to manage
    • One per night
    • Blocking time for each project
    • Workflows weekly planning – daily wrap up
  • Helpful tools
    • Trello
    • Apple Reminders
    • Google Docs
    • Calendar
    • Fantastical
    • Calendly
    • Slack
    • Email
    • Todoist
    • Notion
    • Guestimer
    • Hocus Focus
  • Manager vs Maker
  • Additional apps
    • Rescue Time
    • Timing


Drupal.org Time https://www.drupal.org/project/drupalorg/issues/3164818 Todoist https://todoist.com Notion https://www.notion.so/ Gestimer http://maddin.io/gestimer/ Hocus Focus http://hocusfoc.us/ Maker vs Manager Schedule https://fs.blog/2017/12/maker-vs-manager/

Guests Hosts

Nic Laflin – www.nLighteneddevelopment.com @nicxvan

John Picozzi – www.epam.com @johnpicozzi

Fatima Sarah Khalid – @sugaroverflow

Go to Source

Tag1 Consulting: How to load test with Goose – Part 3: Bigger instances

Goose, the open source load testing framework created by Tag1 CEO Jeremy Andrews, continues to show its performance and scalability capabilities. In this Tag1 Team Talk, Managing Director Michael Meyers joins VP of Software Engineering Fabian Franz for a demonstration of Goose’s rapid ramp-up and scaling by COO Narayan Newton. In this final talk in our series of live demonstrations of Goose, Narayan and Fabian break down how some of the methods used in part 2 weren’t ideal, and some ways to make spinning up load tests faster and more efficient. Part 1 | Part 2 For more Goose content, see Goose Podcasts, Blogs, Presentations, & more! For a transcript of this video, see Transcript: How to load test with Goose – part 3: Bigger instances. ## Additional Resources – Goose Podcasts, Blogs, Presentations, & more!Goose source code — Photo by chris robert on Unsplash

Mon, 07/19/2021 – 07:37

Go to Source