Drupal or Wordpress definitely make the most popular CMSs of the moment and considering that they do share quite a lot of similarities, too, making a straight choice between them can get quite energy and time-consuming.
How should you know for sure which one is THE one that will respond better to your web project's specific needs?
Before you dive into our in-depth comparative review of the two famous CMSs, (that we hope it will manage to steer you in the right direction), we need to put this straight right from the start: there is no such thing as “one is better or worse than the other”.
Both Drupal and Wordpress work wonderfully when it comes to suit specific needs, therefore, there' no question of hierarchy here, only a matter of “suitability” so to say.
Each one of the two is designed for a specific type of website (and, thereby, comes with a specific set of expectations from its future owner), that's all!
Drupal or WordPress: Which One Is More Advanced in Terms of Functionality?
Here's something to reflect on: Drupal's far more advanced functionality (compared to Wordpress's) is, at the same time its strength and its “Achille's heel”.
How come?
It all depends on the level of technical knowledge of the one deciding to “unleash” and handle its functionality. It can lure and be an “irresistible' challenge for some, but it can discourage others!
Drupal requires someone with more than “some” technical experience (or at least one who's well aware, from the start, that there is a steep learning curve involved) for handling all its various features- content types, taxonomies, blocks, views- and livening it up to its full potential. Once handled by “technical savvy hands”, it can handle all types of refineries that Wordpress can't: it can handle heavy content and multiple website stakeholders (website admins, content editors, publishers you name it).
As for Wordpress, it will definitely manage to cast a spell upon you if have basic technical skills. Designed as a blogging platform, Wordpress's performance can be affected to a great extent if it's “forced” to carry away a too heavy load of plugins and content “on its shoulders”. Otherwise, if you keep your Wordpress website light, it can reach pretty much the same level of performance as a content-stuffed, large-scale Drupal website.
See? Told you!
It all revolves around the type of website that you need to build (and also around your level of technical knowledge).
Drupal is more robust, but it's quite “picky” when it comes to “revealing its true power” to the one handling it: it's a CMS built by developers for developers, after all.
Wordpress keeps its performance within good parameters as long as you don't overload it (and it requires zero technical skills, too)!
Drupal or WordPress: Which One Is More Flexible?
HIGH PERFORMANCE and FLEXIBILITY sure are the 2 pillions of any great website on the online landscape, wouldn't you agree?
"Flexibility" is another word for “Drupal”. The CMS practically “overwhelms” you with a wide collection of free themes, modules and tempting customizing options, which you can pick, tweak and use for constantly editing and boosting your website's looks and performance.
And yet, it's a “gift with a twist” that Drupal makes you! There's no point in hiding it (and even we, as Drupal developers in Toronto aren't going to conceal this detail): you need to be a developer for efficiently handling all its modules. They require customization and therefore technical skills.
But once you've learned how to install, costume and update modules in Drupal, how to “unleash” all that extra functionality that these modules “encapsulate”: oh boy, it's such a confidence-booster! You'll get to build a website capable of handling thousands of users and thousands of content-stuffed pages!
Wordpress isn't a cheapskate, either, when it comes to “spoiling” its users with no less than “millions” of plugins and themes. Moreover, it definitely has a strong advantage for the non-tech savvy ones: you don't need to be that technical for successfully integrating all those plugins and perform all the needed editing yourself: on colours, font, layout, you name it. Ease peasy!
But you get to do all that only as regards small size websites, you should definitely keep that “tiny” detail in mind!
Drupal or WordPress: Which One Ranks Higher in Search Engines?
When comparing Drupal to Wordpress in matters of SEO-related features, what you should know is that there is no matter of “better” or “worse”! It's just a matter of “two different, yet equally efficient approaches”!
Let's dig into more details!
With “tantalizing” plugins, such as Yoast's SEO, Wordpress helps you ideally optimize your website for search engines in no time (and with no great technical skills required either, remember?). It “spoils” you with a quick and easy way of optimizing your site.
As for Drupal, it comes with a certain “edge” given by the fact that it can handle way larger websites. Loads of content and truckloads of daily visitors to handle, you can just figure it out yourself, come with a different approach to SEO, with totally different SEO needs and strategies. Moreover, you need to know what you're doing, when handling Drupal, if you want to efficiently optimize your site.
Here's another “detail” for you to reflect on: when it comes to page load times (and you're well aware of Google's “weakness” for websites that load fast) Drupal comes equipped with robust and (most important) out-of-the-box catching features, as compared to Wordpress, where you have caching plugins that you get to use for speeding up your website!
Drupal or WordPress: Which One Handles Security Better?
Whitehouse.gov is built on Drupal!
Need I say more? Drupal takes security to a higher level, that's for sure, and no wonder since it's been designed to suit the specific security needs of enterprise-level websites!
Wordpress, since it's been designed as a blogging platform, is more vulnerable. It takes just a hacked plugin for hundreds (or more) of Wordpress websites to get “infected”, so just reflect on this for a minute or two before you make your final choice.
Size does matter! The size of the website that you develop determines its future security needs, as well (so, you can't compare a blog to a governmental website, right?).
There's more! Choosing the right platform specific hosting application is decisive when it comes to managing security risks:
you have Acquia and Pantheon if you go for Drupal
you have WP Engine and since recently Media Temple, too, if you go for Wordpress
We, here, at our web development company in Toronto, manage to “sleep well at night” since we are Acquia partners!
Drupal or WordPress: Which One Is Easier to Use?
This is the aspect that Wordpress excels at! Anyone can use it!
You get to set up your Wordpress site and make it look sharp and functional in no time without having to be a programming languages guru! With its simple user interface, it turns building a website into a matter of minutes and even its customization doesn't pose great problems or causes severe headaches.
Things get a bit trickier with Drupal! It's not hard to use it, it's just a bit more challenging to learn how to use it in the first place!
Once “armed” with enough technical skill, the sky is the limit with Drupal: you can develop far more advanced (and therefore confidence-boosting) websites. Its interface, too, is easy to use, so that won't be a problem. It just requires a bit more time (and will) to learn how to mix and match its core features and how to edit anything in the back-end, too.
And, the good news is that it looks like Drupal 8 paves the way to turning its CMS more accessible for non-developers (such as content editors, for instance), too. So, there are chances that Drupal steals the “crown of easiness to use” away from Wordpress in the future to come! Stay tuned!
Also, you can relax: they both get your back covered!
That's right, both CMSs are supported by active user communities, so you can easily get the answers to your questions or the needed documentation!
Another highly important “detail” is that both Drupal or Wordpress reward you with freedom in terms of design! You get to design your templates to your liking, no matter which one of the CMSs you'll go for!
We'll end our comparative review with 3 last questions that you should ask yourself before you go for one CMS or another:
1. Does your future website have to handle multiple user permissions?
2. Will it feature multiple content types (and page templates)?
3. Does it require enterprise level security?
Adrian Ababei / Dec 14'2016
You are aware, aren't you, that there's a lot at stake when choosing the “right” CMS, the one that meets your particular web project's needs? So, you definitely need to think it through and to consider all the main aspects!
Still, no need to panic now! To get stressed out that you risk to make the wrong choice, for you can't tell which one is the perfect fit for your particular work scenario.
The best way to find your answer if by asking yourself the right questions!
As simple as that!
What's your level of knowledge of the main programming languages (CSS, HTML, PHP)?
What type of website will you be developing (a corporate website, an e-commerce website, a social network etc.)?
What future do you anticipate for this website? Are there any chances that it should grow significantly? Will it require new functionality and is it likely to face the challenge of traffic overloads later on?
And so on...
Are You Joomla's or Drupal's “Target” User?
Are you're a “tech savvy” developer, with a consistent coding experience in the basic programming languages? Then you're the type of target user that the community developing Drupal envisioned for this platform!
Are you confident that the site you're about to build will grow and, therefore, get more and more “greedy” when it comes to new features and constant customization (and you have a certain “weakness” for the after-launch “polishing” and constantly upgrading processes? Then you should definitely go for Drupal.
Do you have basic technical skills instead? Are you looking for a super easy to use CMS that doesn't require certain language programming skills? Then Joomla is the platform that you'll find be comfortable with! It will allow you to have your e-commece or social networking site up, running and looking attractive in no time!
Is It A Joomla-Specific or a Drupal-Specific Website That You'll Build?
What type of website are you planning to develop?
And (after you've discovered whether you're Drupal or Joomla “material” answering to the question in the previous paragraph) this might just be the question that will help you make a choice between the two popular CMSs!
Is it an ecommerce website that you'd like to set up quick and easy, with no customization implied or maybe a fully functional social networking website and you have basic technical skills? Then you've got yourself a winner: Joomla!
Are you facing an a lot more challenging project, where you need to rely on your technical expertise and deep experience as a web developer for building large scale websites? Then it's Drupal that will help you meet and exceed your client's daring business goals. For instance here, in our web design company in Toronto, we often face the challenge of developing content-packed websites. So, we know that we can rely on Drupal: its been designed for handling truckloads of users and large amounts of data, you know.
And where do you add that, due to its catching features, Dupal loads faster, too? And it requires less server resources than Joomla, as well?
Checked and double checked! If you're planning to start a daring (even a multisite) website project, one that's sure to grow steadily in traffic and content in the future to come, then go for Drupal!
How Do Drupal and Joomla Respond to Your Need of Customization?
FLEXIBILITY and CUSTOMIZATION are Drupal's “little name” and respectively “middle name”!
So, you bring in your passion for “getting your hands dirty” up to your elbows in lines of code and it will spoil you with an overwhelming array of themes, plug-ins and all sorts of other configurable options!
Select the ones that respond to your website's ever growing needs, mix and match them and then skillfully integrate them, boosting both its looks and functionality!
It's true, Drupal “expects” you to be more of a technical savvy (compared to Joomla), but it also gives you unlimited freedom: feel free to come up with any needed improvements to your site, to create custom modules, to play with themes, to upgrade its out-of-the-box features to your (or your client's) liking. Sky it the limit!
Oh, and I almost forgot: they're all free! It's a “detail” that you should take into account if you consider that some of Joomla modules and plug-ins are not free of charge!
So, yes, when it comes to flexibility and customization, it depends a lot on your own needs:
Do you actually want to be able to constantly customize the look and feel of your website? Drupal enables you to do that painlessly.
Do you just want to set up a functional site as quickly as possible, without investing to much time and skills into its customization? Then Joomla, with its already famous easy to use interface, will help you set up your social network or online shop as quickly and stress-free as you say: “Joomla”!
What About Security? Which One Makes A More “Secured” Choice?
It would have to be Drupal!
And I'm not saying it because it's Drupal that we're building wesites on here, in our digital agency in Toronto! Just think about it (for it's pretty obvious): how many hacked Drupal websites have you heard of compared to Joomla or Wordpress sites?
It's true that those who've “pledge to remain 100% faithful” to these two CMSs will come to “counterattack” stating that this is only because there aren't as many websites built in Drupal as there are in Joomla or Wordpress.
And yet, it's a proven fact: Drupal takes security to another level, compared Joomla. Its worldwide community of developers is constantly “hunting” down threats and is always on the lookout for any weaknesses showing up in the system. Moreover, whenever they spot security vulnerabilities, they patch them up and “expose” then on the website.
Still, even if with its not that strong approach to the security factor, Joomla, too, responds to security vulnerabilities and it gives you the chance to strengthen your site's level of security, to upgrade it with new extensions. Yet, it is important to keep in mind that you'll need to constantly run the necessary updates for keeping it properly shielded!
Which Are Joomla's and Drupal's SEO Capabilities?
If you're concerned about the SEO aspect (and you should be, especially if it's the challenge of a large scale, multilingual website project that you need to respond to), then there's no “better option”, there's just ONE option: Drupal!
It “beats” Joomla in terms of SEO capacities, being equipped with far more advanced SEO features.
Still, it's true that you can optimize your Joomla website for the search engines, too. The main difference is that you'll need to actually create those custom SEO-related features yourself (and since this CMS “boasts” to be “a dream come” true for the non technical savvy ones, this aspect might just be an unpleasant surprise for you).
How Do They Handle Technical Support?
When it comes to their help portals, if you're a beginner you'll find Joomla's technical support far more accessible.
You can find the answers to all you Joomla-related “dilemmas” and you'll be able to get all the guidance you'll need as compared to Drupal's support options, which are more “from developers to developers”: a lot more technical.
So, there's no "better" or "worse" help portal! It's just a matter of responding to their own target users and “speaking their language”.
What other strong and weak points of these two popular content management systemshave you “dug up” yourself ? What other similarities and major differences? We're looking forward to reading about them in the comments below!
Adrian Ababei / Dec 13'2016
Drupal's ready to turn into your best ally in your endeavours to constantly comply with Google's ever-changing “rules”! With mobile-friendliness being the ultimate goal and the main words on the lips of all marketers and web developers these days, it would be quite “reckless” to ignore all the efforts that the Drupal community has put into developing this module: Drupal AMP (Accelerated Mobile Pages).
Just think about it:
as a marketer speeding up your website's load time on mobile means happy users (boosting UX) and therefore, “overwhelming” organic traffic for you
as a content editor, it instantly eases your whole workflow: you're given the easy-to-use toolkit for making your content mobile-friendly in no time
as a web designer, it lifts a great deal of the “pulling off the best solution for crafting responsive design” weight off your shoulders
In short: it's “Optimize for mobile or die trying!" Not really an exaggeration if we think that you only have less than 5 seconds to catch your users' attention and to get them hooked on your website. 5 golden seconds when, if your site loads all its awesome content at a really slow speed or makes content look weird on mobile devices, you can as well “bid farewell” to your users. They'll be off to greener pastures in no time: to websites ideally optimized for the web, that doesn't waste their way too valuable time.
What Web Pages Does It Target?
That's right, you should know before installing the Drupal AMP module that it doesn't address your whole website. It targets blog posts and informational, news article-based pages on your website!
So, it's not geared towards e-commerce websites!
How Does It Work?
If you're still undecided, facing the challenge of picking between Drupal AMP module and other solutions available out there for helping your site gain speed on mobile devices, consider this: the Drupal AMP module is an open-source project!
So, if you're a future-oriented type of developer/marketer, you know what this means: it will constantly get tested and improved!
But how does it work precisely?
Once you integrate it into your website, it creates a new view mode for the targeted content type.Then, you get to choose the AMP field formatters that will handle your target content's conversion for the mobile (formatters for video, text or images). Next, it's the PHP library that “comes into the picture”, processing the entered HTML and doing its best to come up with the proper AMP HTML equivalents.
It practically gets to “work its magic” on any type of content that you want to optimize for the web.
Let's dig into the AMP Theme and the AMP PHP Library!
OK, now walk us through short “descriptions” of each one of the AMP module's 2 main components:
AMP Theme: familiar with the AMP HTML (a subset of HTML) and its standard? The one aimed at encouraging beautifully looking, quickly loading content on mobile? Well, then you should know that what the AMP Theme does is actually producing the markup that this standard requires for websites venturing in the mobile world. Moreover (for it's still a Drupal theme that we're talking about, so it's got “flexibility” written all over it), it enables content managers to come up with custom-made AMP pages. They gain total control over how these pages on mobile will actually display their content!
AMP PHP Library: it handles the final corrections and repairs. Whenever the entered HTML doesn't comply with the AMP HTML standard, it's the PHP library that makes the right images, Youtube HTML, Tweets and Instagram conversions and creates the issues reports. Take it as a “quality assurance” tool!
In a nutshell: with Drupal 8 you can now respond to the challenge of the “developing for the mobile landscape” trend: quickly displaying AMP HTML pages on your website!
How Do You Install Drupal AMP?
Familiar with Composer Manager? For it's this module that will help you a great deal installing and therefore, boosting your website with all the “mobile optimization features” that AMP comes packed with!
So, here are first steps to take:
first, a composer.json file (in the Drupal AMP module) confirms the dependency on the AMP PHP library (which features its own dependencies)
other modules could state the same library dependencies
last, the Composer Manager module gathers all the info in the composer.json files of the modules (all those installed on your website) and puts them all together, thus avoiding the risk of ending up with several modules installing the same dependencies.
Now walk us through the installation process:
Keep in mind: We'll be enabling the Composer Manager module before we go on and install the Drupal AMP one!
enter this command (in your Drupal's website directory): drush dl amp, amptheme, composer_manager and get your AMP theme, AMP module and Composer Manager downloaded.
enable the first items needed for your installation: drush en composer_manager, amptheme, ampsubtheme_example. It's at this step that we're enabling the “ExAMPle subtheme". Take a look at its code, for it will reveal to you how you can, later on. customize your AMP pages.
use Drush for enabling your AMP module: drush en amp
Next, you'll be notified about dependencies being downloaded.
There you have them all enabled and ready to be used: the AMP theme, the AMP module, the AMP PHP library and the example subtheme, too.
Configure Your Site For The Drupal AMP Module
Go to /admin/config/content/amp, the AMP module's configuration page. There, pick the content types that you'd like this module to come up with AMP equivalents for!
Bravo! You're now closer than ever to show off your optimized website which loads its high-quality content faster than ever on mobile!
Adrian Ababei / Dec 01'2016
If you really want to evolve from a web developer skillful enough to put together a functional “puzzle” out of Drupal's core modules, to one custom-making his new modules, then you need to take a close look at the whole process behind this apparently simple sequence: “you hit an URL, then (as if by magic) the required page instantly gets loaded”.
So, ready to take a sneak peek “behind the curtains”? If yes, then allow us to be your guide!
1. Drupal Separates The Internal Path from the Domain Name
Once the server gets the message, once the URL is sent, Drupal focuses on the internal path and on it only. Therefore, it just “cuts it off” from the URL.
2. Then Drupal Calls Index.php
Take the index.php as some sort of a “control tower” (you can find it in the root directory of the Drupal install), the one that processes all the incoming requests.
Now, let's have a closer look! Index.php is made of 4 lines, each one of them performing a certain function:
define('DRUPAL_ROOT', getcwd(): the very first line that runs once Drupal gets a page request
require_once DRUPAL_ROOT . '/includes/bootstrap.inc': its role is that of loading bootstrap.inc in the includes/subdirectory.bootstrap.inc
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL): it loads pretty much everything: the modules and functions, the needed data into the memory...
menu_execute_active_handler(): as the name says it, it's the one actually handling the page request, delivering the final web page to the end user
3. Now Drupal Goes Through the Bootstrap Process
This is where the “major loading” happens: it is now that Drupal loads the libraries, initializes the database, sets the right sessions...
The bootstrap process a self-start one, requiring no input, no intervention from you, the website's “creator”, and yet... you can't possibly not know what happens during this whole process running on its own!
How about going rapidly through all the 8 phases of this highly complex bootstrapping process?
1. DRUPAL_BOOTSTRAP_CONFIGURATION: Drupal calls upon it wherever it encounters php errors or exceptions. If so, then an error handling code is prepared, settings.php gets loaded, configuration gets initialized...
2. DRUPAL_BOOTSTRAP_PAGE_CACHE: it checks whether the IP is blocked or not, whether the cache is enabled or not in order to serve the page from the cache
3. DRUPAL_BOOTSTRAP_DATABASE: it loads the database and checks whether any $databases array has been defined. If no, then it redirects to install.php
4. DRUPAL_BOOTSTRAP_VARIABLES: it loads the variables from the database variables table, then it overwrites the ones defined in settings.php, while loading all the other modules needed during this process
5. DRUPAL_BOOTSTRAP_SESSION: it initializes the session handlers. There are several custom session handlers in Drupal:
_drupal_session_open() and_drupal_session_close(): to open and close a connection
_drupal_session_read(): gets the session from the sessions table
_drupal_session_write(): checks whether the session has been updated and writes a new one to the databse
_drupal_session_destroy(): it deletes cookies and cleans up a specific session
_drupal_session_garbage_collection(): it deletes the outdated sessions
6. DRUPAL_BOOTSTRAP_PAGE_HEADER: it practically sets up the HTTP header
7. DRUPAL_BOOTSTRAP_LANGUAGE: called upon only for multilingual websites, it initializes the right language for the future web page
8. DRUPAL_BOOTSTRAP_FULL: the very final step, where all the modules are enabled and hook_init() is invoked
4. Drupal's Menu System Steps In
From all of Drupal's modules, it's the menu system that “guides” the internal path to a callback function.
PATH... MODULE... MENU SYSTEM... CALLBACK FUNCTION... LOAD CONTENT
5. Finally, It's the Theme System That Styles the Requested Page
Being more than just a theme (since it's a mix of theme functions and templates), the theme system is the one “dictating” the content/ the web page's final look.
CONTENT... THEME SYSTEM (CSS, HTML, JS etc.)... BROWSER
Of course that each process of this whole page request handling mechanism in Drupal requires a lot more in-depth knowledge, but this is pretty much the overall mental scheme that each developer should know for:
1. boosting his self-confidence with powerful knowledge
2. being able to come up with his own future custom modules
Adrian Ababei / Nov 11'2016
All you command-line addicts (and skeptics, too), mouse haters and... spare time-craving developers, crafting your Drupal websites, gather around! It's time you all learned about this "Swiss army knife"-like tool which will make your work life so much simpler, far more refined and... more rewarding from now on: DRUSH!
What is DRUSH?
There are plenty of related definitions out there, but we like these 2 ones best:
"Drush is a command-line shell for Drupal, and it enables you to perform many administrative and website maintenance tasks from the command line instead of having to use the Drupal administrative interface"
"Drush is an important tool for Drupal developers looking to speed up and simplify their workflows"
We envision DRUSH as a "way too valuable" tool to be overlooked if you're aiming at upgrading the old-schoolish, time-consuming (and therefore, less productive) way of managing your work to a:
quicker
simpler
more refined one
… as a DRUPAL web developer/administrator
Discover the most common DRUSH commands
Till you get to the point of actually setting up your own custom DRUSH commands, let us point out to you the main features that DRUSH can (easily) tempt you with:
Clear Cache (cc): it allows you to either choose a specific cache (drush cc) or to quickly clear them all (drush cc all)
Install Drupal: that's right, installing Drupal from scratch is quicker and easier (with just two basic commands) than ever.
Updatedb (updb): why should you "invest" valuable time in running updates using update.php, when you can... "claim" your spare time by simply running any available database updates using this magic formula: drush updatedb?
Feature-update (fu): do a comparison yourself and see how much time it would take you to update a feature in your Drupal website (after you've applied a certain change stored in that particular feature) the old-schoolish way (e.g. exporting the feature manually in the admin interface) compared to... typing this time-saving shortcut here: drush feature-update feature_name
Feature-revert (fr): you'll get even more eager to experiment, to... play with the features available in Drupal when you know that reverting your features to their code versions is as quick and simple as typing drush-feature-revert feature_name
Enable a module: type drush en name_of_module -y or drush -y en name_of_module
Pm-update (up): drush pm-update allows you to update Drupal themes, modules and core while you're saving priceless free time for your other... non-website development-related activities
Database tasks (sql-dump, sql-cli): save a considerable amount of time and back up your database (while giving your... mouse a rest), by simply using this shortcut in your command-line: sql-dump, then simply restore it using this magic combo: sql-cli.
.... and the list will get longer and longer as you get more and more eager to discover and to learn other productivity-boosting and time-saving shortcuts in DRUSH.
You're more likely to become a DRUSH “groupie” if:
1. You hate... mice
Could you deny that mastering command-line skills is already a far more... elegant way of working, as a developer, compared to “exploiting” your mouse for opening and closing lots and lots pages in Drupal's administrative interface?
Just imagine this highly suggestive scenario here:
You need to install and reinstall (and eventually administer) several Drupal websites. Therefore, you'll get (mentally) ready for the tedious and boringly repetitive steps to come:
Go to drupal.org.
Get Started
Download Drupal
Download the tar.gz.file
Install your new Drupal
Going back to drupal.org for installing your modules (unzip a bunch of files) etc.
A whole lot of clicking and wandering about Drupal's interface, isn't it?
Now consider work scenario no. 2:
type cd /var/ww...
run drush dl drupal-7.0...
cd /var/www/drupal-7.0 and install your new Drupal website: drush site-install –db-url=mysql://root:secret@localhost/drupal...
type "y" at the following prompt
… and voila: with a few clicks (relying exclusivity on your good old keyword), you've had your new Drupal site installed and you're ready to... install your second and your third one, too...
2. You work in a large environment where relying on FTP or carrying out tasks administratively is not an option
3. You want to sharpen your command-line skills
4. You're... open to new tools, constantly testing new technologies aimed at boosting your (and your team's) productivity
5. You just hate trading priceless personal life time for... more efficiency in your professional life
Is installing DRUSH a dread?
Actually, you can benefit from its time-saving features right after you've walked through 7 easy setting up steps:
Pick the directory to place your drush in: cd /usr/local/share
Get drush: [sudo] wget https://goo.gl/GwdpKe it: tar xvf drush-6.x-3.3.tar-gz
Remove the package: rm drush-6.x-3.3.tar.gz
Change permissions: chmod u+x drush
Create a link: In -s /usr/local/share/drush/drush /usr/local/bin/drush
Run drush: [sudo] drush
Still, probably one of the best Drush features is that... it's constantly evolving, constantly improving, so... sky is the limit when it comes to quickly installing/developing and efficiently managing all your Drupal websites (for this is, in fact, the true beauty of Drush: it allows you to manage several sites at once, helping you turn yourself into an... admin guru).
Give it a try, cure your command-line related “phobia” (if any) and unleash your full potential as a Drupal developer!
Adrian Ababei / Nov 07'2016
Drupal development is gaining more and more traction on the web development scene and for good reasons – Drupal is a highly robust yet flexible platform which makes it a great choice for web development projects, e commerce websites and other tech related needs. Drupal development requires lots of programming skills and attention to details so we’ve set out to find the best Drupal development tools for you to use and review.
Here is our list of 8 essential Drupal development tools:
Drush for Drupal development
Drush is one of the most sought after Drupal development tools – it’s considered the command line and scripting interface for Drupal.
While it may take some time to get used to it, Drush is an excellent multipurpose tool used to install, maintain and develop Drupal websites. That being said, Drush is a great time saver for Drupal developers and it also helps with building custom modules and themes.
Coder for Drupal development
With the Coder module Drupal developers can follow Drupal’s coding standards more closely. This module is composed of two sub-modules, Coder Review and Coder Upgrade.
Coder review allows Drupal developers to verify if a module or part of code is up to Drupal’s coding standards or not – it also allows users to know if anything needs changing. Coder upgrade helps Drupal developers upgrade modules or themes to a new version of Drupal. Coder is currently available for Drupal 6 and 7.
Backup and Migrate in Drupal
Backup and Migrate makes database backups much easier to create. Just click the admin interface or run the Drush command to order a backup. This module can be configured to send your backup to Dropbox or Amazon S3.
Masquerade for Drupal development
Sometimes Drupal development can be a hassle – you have to become a different user to test something in Drupal. The Masquerade module is the perfect solution for this purpose simply because it allows Drupal developers to switch between users easily. This module is perfect when a user reports a bug and another developer is supposed to replicate the same conditions and fix it.
Drupal Project Lookup
Drupal Project Lookup is a Chrome extension that’s very handy for Drupal development – the extension helps users save a lot of time when looking for project pages on drupal.org. All you need to do is type pml and the project name and you’re there!
Dreditor
Dreditor helps Drupal developers review patches and comment on different issues on drupal.org. Dreditor’s features include auto-completion when adding comments in drupal.org, templates for commit messages and the patch reviewer button.
Features
Turn on configuration in the modules in order to source control and deploy them properly. You shouldn’t make too many changes on the live website but instead you should try to make changes on your local server. But how can you deploy modules on a live website? Simply use Features – this is an incredibly useful module which will help you along with any Drupal development project.
Diff for Drupal development
Drupal developers who use Features are most likely using Diff as well. Sometimes features may get overridden and the information from the database may not match with the code – This is a perfect time to use Diff. With the Diff module Drupal developers will see any difference with ease – you’ll also be able to see changes between revisions of different nodes and modules, effectively saving you a lot of time. Considering these aspects, Diff is one of the most important Drupal development tools.
Conclusions
These are some of the best Drupal development tools available today – not only do these tools speed up your workflow but you’ll be able to achieve better and greater results as well.
Adrian Ababei / Sep 29'2016
Drupal recently released a new set of foundational modules which can improve Drupal development and Drupal’s workflow. The modules range from full-site preview, user experience improvements, auditability, multi site content staging, content staging and more. Here’s a few tips and examples on improving your overall drupal development workflow:
When to use these drupal modules
Here’s when and why you should use these modules for your drupal development projects.
Coss site content staging – You may want to synchronize content from one site to another. The first website can be a staging site where your content editors make certain changes and the second one can be the live production site. Content changes can be previewed on the stage site and then published on the second website.
Content branching – If you want to launch a new product you might want to create a new version of your site with a section dedicated to featuring your new product. With this new section you can introduce new menu items, upgrade pages and introduce new pages.
Previewing your website – When building a new section on your site, you’ll want to preview it before going live with it – this is content staging on a single site.
Offline browse and publish – Sites should be functional even in offline mode and record any forms or changes – when the connection is restored everything can be syncronized.
Content recovery – People often delete things they really didn’t want to delete, you should give users the ability to recover any content that has been deleted.
Audit logs – Certain companies or organisations may want to have all content revisions to be logged in order to be reviewed. Certain revisions or actions can be linked to specific users, thus making employees accountable for their actions within the content management system.
Drupal development technical details
The cases above have some similar traits:
Content needs to be synchronized between two spaces – from site to site or from backend to frontend
Revision history is kept for all changes
Content revision conflicts are tracked
These features started off as a single module called Deploy. Nowadays Drupal development makes use of a large number of different modules:
Deploy
Multiversion
Replication
Workspace
RELAXed Web Services
Trash
Multiversion for Drupal development
The Multiversion module keeps track of any conflicts in the revision tree, introduces the concept of parent revisions and adds revision support for all content entities built in Drupal, not just block content and nodes.
Replication module for drupal development
The replication module is built on top of the multiversion module – it will help users with revision informations in order to determine which revisions are missing for a certain location. This model also allows drupal developer to replicate content between a source and a target location.
Workspace for drupal development
This light module allows full site previews and single site content staging. The user interface allows your average drupal developer to create special workspaces and to switch between them as needed.
RELAXed Web Services
The RELAXed Web Services module allows cross-website content staging. This is a more extensive REST API for Drupal development with full support for UUIDs, parent revisions, file attachments and translations. These features are essential for content staging.
Deploy module for Drupal development
Before the release of Drupal 8, the Deploy module took care of everything related to content staging – top to bottom. After Drupal 8’s release, Deploy was rewritten to provide a user interface on top of the Workspace and Replication modules. This user interface allows your average drupal developer to manage content deployments between different workspaces on a single website or across multiple websites.
Trash module
The Trash module is used to restore content related entities marked as deleted. It basically works like a recycle bin, displaying all entities from all supported content types where the default revision is flagged as deleted.
Synchronizing your websites with an API
If a Drupal website has RELAXed Web Services installed and enabled, it will behave and look like the REST API from CouchDB. This allows a drupal developer to use CouchDB tools such as PouchDB.
Conclusions
All of these great improvements that can boost your drupal development workflow, effectively allowing you to create better products faster. Check them out!
Adrian Ababei / Apr 04'2016
Drupal is a popular open-source content management system written in PHP. Having been created in the early 2000s by a Belgian student, it now powers some of the most prominent websites on the web (WhiteHouse.gov, Weather.com, etc.). It is often regarded as a competitor of CMSs such as WordPress and Joomla. One of the most important components of the Drupal project is its community of supporters (contributors, developers, evangelists, business owners, etc.). Prominent within this community stands the Drupal Association, responsible for "fostering and supporting the Drupal software project, the community and its growth". A giant leap from its predecessor, the 8th major release of the Drupal project has just hit the shelves. It brought about a serious modernisation of its code, practices and mentality. Many regard this shift as a real move away from the traditional notion of a CMS to more of a Content Management Framework (CMF) that provides a great platform for building complex applications. In this article, I'm going to answer some of the more frequent questions people have about Drupal when starting up for the first time or considering doing so: • Is it right for me? Who is it aimed at? • How can it be installed, and where can I host it? • How can I start working with it as a developer? • What options do I have for extending functionality or styling it?
Who Is Drupal Aimed At?
Since the beginning of the project, Drupal has evolved from being mainly a tool for building smaller sites to one that can now power enterprise-level platforms. Especially with Drupal 8, site builders and developers can easily scale up from small websites to large platforms with many integrations. For example, the adoption of Composer allows you not only to bring external libraries into a Drupal project, but also to use Drupal as part of a bigger project of applications and libraries. It's safe to say that Drupal is flexible enough to meet the needs of a wide range of projects. When it comes to development, Drupal has always had a relatively closed community—not because people are unfriendly, quite the contrary, but mainly because of the code typically being written in a Drupal way (resulting in what sometimes is referred to as Drupalisms). This has meant a learning curve for any developer starting up, but also less interest from developers of other PHP projects to jump in and contribute. This is no longer the case. Especially with the release of Drupal 8, the community now promotes a new mentality of code reusability and best practice across different open-source projects. Active participation in the PHP Framework Interoperability Group is part of this effort, and using a number of popular Symfony components in Drupal 8 core is a testament to this commitment. With this move, the Drupal community has gotten richer by welcoming many developers from other communities and projects, and it is sure to grow even further. So if you are a Laravel developer, looking at Drupal code will no longer be so daunting.
How Can I Install Drupal, and Where Can I Host It?
Traditionally, Drupal has had a relatively easy installation process, particularly for people who at least knew their way around a Linux environment. The project simply needs to be dropped into a folder your web server can run (which needs to be using PHP and have a MySQL or MariaDB database). Then pointing your browser to the/install.php file and following the steps takes care of the rest. The most important screen you'll see is the one in which you select a specific database to use. In terms of requirements, the LAMP stack (Linux, Apache, MySQL and PHP) environment has always been a favourite for Drupal to run in. However, it is in no way restricted to it. Solutions exist for installing it straight on Windows or Mac (e.g. using the Acquia Dev Desktop) but also on a Linux system that runs other web servers. The easiest approach, if you go with your own setup, is to use a LAMP server for hosting. For a bit more performance you can replace Apache with Nginx, but you'll then have to take care of some specific configuration that otherwise is handled in the.htaccess file Drupal ships with. However, if you don't want the hassle of maintaining your own hosting server, there are three main providers of specialised Drupal managed hosting: Acquia, Pantheon, and Platform.sh. These also provide a workflow for easy updates and development flow. Past that, you are looking at fully managed hosting with a Drupal development company.
How Can I Get Started Developing for It?
Developing Drupal websites has typically been the kind of thing you either liked a lot or didn't like at all. This is because when you were first introduced to Drupal, you encountered very many specificities that you didn't see in other projects. So if those tickled your fancy, you loved it forever. With getting off this island in Drupal 8, this is no longer the case as much. You still have plenty of Drupalisms left that you can love or hate, but you now also have external components like Symfony or Guzzle and, most importantly, a more modern way of writing code in general (OOP, design patterns, reusable components, etc.). So your PHP skills from building websites with Zend will come in handy. A good way of getting into Drupal development is to follow some online video courses. There are a couple of resources that are excellent for this purpose, most notably Drupalize.me. If, however, video is not your favourite medium, there are also many written tutorials and guides available to get you started. Since Drupal 8 is brand new, you'll find significantly more learning content for Drupal 7. Nevertheless, the focus in the community has been shifting recently towards Drupal 8, so you can expect more and more of these resources to crop up. And if you have no experience with any version of Drupal, it's best to focus exclusively on Drupal 8 as the changes between the two are big and perhaps you'd be facing unnecessary challenges.
How Can I Extend Drupal?
The main extension point of a core Drupal installation is its module system. Modules are used to encapsulate bigger chunks of reusable functionality that can/should work on different sites. Aside from the core modules, there are a large number of contributed ones, available for installation. Granted, most are still only for Drupal 6 and 7, but the community is catching up also for the newest version. This problem is also mitigated by the incorporation in Drupal 8 of a few popular contributed modules as well as extending the scope of what core can do out of the box (compared to Drupal 7). Lastly, custom modules (the ones that you write yourself) are the primary way you can add any functionality that you want and that is not available via a contributed module. Installing modules can allow you to plug in various pieces of functionality, but you should not treat this as a green light for adding too many. It's always better to stick to the ones you actually need, and don't be afraid to be critical in this respect. You can also work on finding a good balance between contributed code and the custom oneyou write yourself. Additionally, since we are talking about open-source software, you should always evaluate the modules you install. The following indicators are good examples to pay attention to: number of downloads and usage, commit frequency, maintainer engagement, state of the issue queue. And do keep security in mind as well. It's highly recommended you keep both Drupal core and any contributed modules up to date as this will significantly help you keep your site and server secure (though it doesn't ensure it).
What About Styling?
The styling layer of a Drupal site is handled (in large part) by its theme. Themes are similar to modules in that they are an extension point, but they have different responsibilities. They contain the styles, front-end libraries and in most cases template files that are used to output data. There has been great progress in Drupal 8 compared to the previous version: the popular Twig engine has been adopted for templating, theming has been limited to Twig template files, debugging and overriding templates has been made much easier, etc. Similar to the advances in back-end development experience (DX), the theming layer has been made more appealing to the non-Drupal crowd. Front-end developers can now easily work with Drupal themes without having to understand the ins and outs of the back end. Drupal core comes with a number of themes that can provide you with examples but also which you can extend from. There are also contributed themes similar to how there are modules. Popular front-end frameworks such as Bootstrap or Zurb Foundation have mature Drupal theme implementations for Drupal 7, which are also readying for Drupal 8. These work very well as base themes but also for quickly scaffolding a website and making it look decent. Paid themes are also available to try out. Usually they are very cheap and quick to set up. The problem with them is that they are worth exactly as much as you pay for them and usually have gaping holes in their flexibility. As a beginner, these themes can seem like a great way to set up a site, and they very well may be. However, as you progress, you'll learn to avoid them and build your own, based on external designs or even plain HTML/CSS/JS templates.
Conclusion
Drupal is a powerful tool for building websites and platforms of any kind. With each new major release, Drupal has shown a commitment to better itself, become more robust and flexible, and embrace outside communities as well. Source: http://code.tutsplus.com
Adrian Ababei / Mar 31'2016
The concept of Modular CSS has been around for years. The basic idea is tackling your CSS code in a systematic way through class and file naming conventions. The main goal being improved workflow through organization, readability and reusability. Some of the more recent modular CSS architectures are Object Oriented CSS (OOCSS) and Scalable and Modular Architecture for CSS (SMACSS). I tend to prefer SMACCS as Jonathan Snook has presented it as a set of guidelines rather than rules. He leaves it open for individual style and interpretation as every developer and every project is different. If you want to see a great example of Modular CSS in action, go blow your mind looking at the Twitter Bootstrap Components Library. The creators have done an excellent job abstracting the components in a way that makes them easy to understand and flexible via classes and subclasses. The idea of Modular CSS really appeals to me, especially having worked on large complex sites with multiple front-end developers collaborating together. While Drupal is perfect for these large scale projects, adding your own CSS classes to a Drupal theme ( essential when working with modular CSS ) is often unintuitive, inconsistent and tiresome at best. To remedy this, I've been working on a systematic approach to adding classes to themes that has so far proved extremely useful. In this post we're going to see how we can easily manage classes on one of Drupal's most used components, Blocks, using a preprocess function. Preprocess Functions Preprocess ( and Process ) Functions are the key to taking control of your classes in Drupal. Preprocess functions are called before every theme hook is sent to a theme function and template file (.tpl). In my mind preprocess functions have 2 uses: Altering and adding variables that are available to theme functions and .tpl's. This is how we'll be adding our classes. Sending these variables to an alternate theme function or .tpl via theme hook suggestions. I prefer managing my classes via preprocess functions over template files because I find it way more flexible and concise. I no longer need duplicate template files just to add or remove a single class. Adding Classes to Blocks As is often the case with Drupal, there are a few options out there for adding classes to blocks, including Skinr, Fusion Accelerator and Block Class. All of these offer the power of adding classes through the admin UI which may be right for you and your site administrators. This hasn't been a requirement for most sites I've worked on. Your mileage may vary. I prefer to define my classes directly in the theme where I'm already writing my CSS, everything is already in code and there is no need to export settings from the database. So let's see how we can do this using default core functionality. Looking at the core block.tpl.php file, by default there are 3 elements to which we can add classes during preprocess: the block container itself ($classes), the block title ($title_attributes) and block content ($content_attributes). As of this writing, in order to preprocess the block content classes, you must remove the hard coded class attribute from the template yourself or apply a core patch.
Now let's create our preprocess function and start adding some classes.
This may look like a lot but it's actually pretty simple. Let's break it down. First off, we create some shortcut variables to save us some typing down the road and make our code more legible. The first variable we create is $block_id which is just a string combining the name of the module creating the block and the block's delta— separated by a dash. This gives us an easy way to target individual blocks when we start adding classes. One thing to note, some blocks, including core custom blocks, use an auto-incremented integer for their delta value. This can present issues if you are moving blocks from dev to staging to production and you're not careful. I recommend using the boxes module to help mitigate this. The next three variables, $classes, $title_classes and $content_classes are references to the arrays that will eventually be rendered into class attributes. To add classes to an element, we just need to add them to its corresponding array. After we have our shortcuts set, we can started adding classes to our blocks. We first start by adding some global classes, .block-title and .block-content, to all block titles and block content containers respectively. You may or may not find this helpful. If you're interested in stripping out all the classes that core and other modules have added to your blocks up to this point, this would be the place to do it. To remove those classes, just reset your variable to an empty array like so $classes = array(); Next, we can start adding our classes on a per block basis. I like to keep a simple print statement handy that prints out the $block_id for all blocks on the page. When styling a new block, I just uncomment this line and copy the id from the browser into my code editor. To target individual blocks, we create a simple switch statement based on the $block_id. For each block we need to style, we write a case and add the corresponding classes there. In the first case we are adding three classes to the System Navigation block, one to the block itself, one to its title element and one to its content wrapper. In the second instance we are actually grouping two cases together so we can add the same classes to multiple blocks. Here we are adding .element-invisible, Drupal's built in class for hiding content in an accessible manner, to the titles of the Main Menu and User Login Blocks. As we add blocks, we add more switch statements. That's all we really need to do to take over our block classes. I've found this alone can be a tremendous boost to productivity while styling a Drupal site. You can get pretty far with blocks alone. However, with modifications to core theme functions and templates, similar to what we did with block.tpl.php above, this technique can be adapted to manage classes on nodes, fields, menus and most other themeable output. I've submitted a session proposal to DrupalCon Munich on this topic called Stay Classy Drupal - Theming with Modular CSS. If you're interested in learning more about taking control of your classes or have run into trouble trying to do so, leave a comment to let the organizers know you're interested in the session.
Adrian Ababei / May 06'2015