LATEST FROM OUR BLOG

Take your daily dose of (only) relevant news, useful tips and tricks and valuable how to's on using the latest web technologies shaping the digital landscape. We're here to do all the necessary information sifting for you, so you don't have to, to provide you with content that will help you anticipate the emerging trends about to influence the web.

The YAML Content Module: A Handy Tool to Outline the Content to Import!
Consider these 3 real-life scenarios: you need to “populate” a newly developed Drupal website with content you need to migrate content from one Drupal website to its freshly redesigned version you need to quickly “animate” a website wireframe with some demo content for one of your Toronto digital agency's clients The YAML Content module is: a handy tool ensuring a streamlined import/update process a flexible way for you to manage the content that you need to migrate / update … in each one of the 3 above-mentioned use cases! Basically: it helps you outline (mind you don't connect it to the module Outline) it the content to import by leveraging a YAML format it streamlines the whole process helping you define a set of content which can be found in multiple content files on your site it turns content updating/re-importing into a highly flexible, highly dynamic process thanks to the hierarchical way in which you get to visualize it and scan it through (notice the resemblance with the module Outline, which enables you to organize your entities in a hierarchical structure) In other words: the YAML Content module turns the entire defining, structuring and dynamic updating of the content to be imported into an ideally streamlined process! Now let's see why such a module was needed in the first place. What sets it apart from other Drupal tools alike:   The Interrelation of Content: Now a Problem Solved With an entire “ecosystem” of Drupal modules ready to take on the role of importing and migrating content, a valid question might be: “Why the YAML Content module?” What obstacle does it help you overcome? What added value does it provide? Now if you've already dealt with content import scenarios, you must have surely “bumped” into the interrelation of content issue, right? It's precisely this “sore point” that this content utility module comes to “heal”! Practically you're enabled to define processing callbacks across the content to be imported and thus to easily insert new data/modify the existing one during the import process itself! And here are some examples of tasks that you get to carry out precisely at the time of import: import/reference managed data files import image files query existing entities There's more! Besides “dynamic processing”, you're granted with almost unlimited flexibility in terms of the type of entities that you get to define during this process. It's thanks to your content's YAML format, which closely parallels the entity and field API architecture, enabling you to apply it to almost any entity type and to support multiple field types: menu links nodes media entities file entities taxonomy terms block content But There's no UI: How Can I Use the YAML Content Module? It's true: the module doesn't provide a user interface! It's been built with back-end utility in mind. In other words: you're triggering and managing the entire content importing process exclusively via some simple Drush commands! Just run this command in Drush: drush –filter=yaml_content … and you'll get the whole list of commands available to you for interacting with the YAML Content module. It will present you both with the commands that you need to use for importing your content files and the ones that you'll need for a “developer usage” of the module (meaning: if you need to delve deeper into the import services). Leverage This Particular Directory Structure to Find The Content to Import And this assumed file structure looks likes this (whether we're talking about a module, a profile or a sub-directory): /content: all.content.yml files that contain the content data to be imported /images: all images referenced /data_files: all file assets using a file callback for loading and which are referenced Wrapping Up Things will never be the same again whenever you need to import content in a Drupal site! enhanced user-friendliness for tracking down the content you wish to import more “order” (thanks to the YAML format) in structuring your target content to be imported, which implicitly leads to a more streamlined import process much more flexibility in managing your content … the YAML Content module provides it with all and thus manages to stand out from the crowd of modules tackling the same content import “issue”. Feel free to take it for a spin next time you need to import/migrate content to a Drupal site! ... Read more
Adrian Ababei / Aug 21'2017
3 Ways to Translate Language Strings in Drupal 
Does anyone of the following scenarios sound familiar to you?   you need to translate a few language strings on your Drupal site due to a certain dialect that the great majority of your site visitors use       you simply prefer to see certain messages or labels on your website written slightly differently (let's assume that you prefer the “Add new content” textline to the “Add Content now” default one)   you need to go multilingual (on your Drupal site at least) and you have a whole heavy load of language strings to be translated into those target languages   What do you do? Which are your options? Which one guarantees you a streamlined translation process? And most importantly: which one makes the perfect fit for your own site-specific scenario? Let us try and answer all your questions by presenting you 3 approaches to language string translation in Drupal:   1. Use the String Override Module Now before we go on with our short step-by-step guide on how to install and to turn this module into your handy translation tool, we feel like pointing out its “limitation”. It makes a more than handy tool mostly for all those small changes that you need to apply to just a few strings on your Drupal site. Therefore, using it for a full-site translation “marathon” is probably not the most inspired choice. This being said, let's break down further with our step-by-step installation and configuration guide: Step 1: Download and Install Your Module You'll find it here: https://goo.gl/aCJGyy you've successfully downloaded it, go to “Modules” > “Add New” > use your “Browse” and search for the file you need to upload > “Install” Next just briefly “scan” the enabled boxes corresponding to your two String Overrides fields there and, if everything looks OK to you, hit the “Save configuration” button!   Step 2: Trigger Your Module from the Configuration Menu Now navigate to “Configuration” (you'll find it “neighboring” the “People” and the “Modules” tabs on top of the page) and, unfolding its menu, go to “Translate Interface”. It's the last option listed there (after the “Regional and Language” one). Next just give it a click! Step 3: Now Go Ahead and Replace Your Language String Just enter the exact string that you want to replace/translate on the left side of your screen (in the “Original” section) and its replacement string/its translated version on the right side (in the “Replacement” section). Easy peasy! And where do you add that the module even enables you to streamline things even more: you even get to replace multiple language strings simultaneously just by adding some extra rows.  Wrap Up: as already mentioned, the String Overrides module makes a great choice for “small-scale” string translations only. It enables you to track down the strings you need to change and to replace them with the new ones in no time. Yet, when it comes to translating an entire Drupal site, manually overriding every single language string using this module is hardly an effective solution. Such a “challenge” to respond to calls for a more powerful module such as the Locale module. 2. Use the String Translation Module for Handling User-Defined Strings Also known as the i18n_string module (falling under the Internationalization project's “umbrella). Now if the just mentioned Locale module (along with the .po files) enables you to translate hard-coded language strings, the String Translation module empowers you to translate the user-defined ones, too. And here we're referring to taxonomy terms, menu items, field names, which are a bit “trickier” when it comes to translating them, since you can't just rely on Drupal 7 core for that. Also, another important specification that we need to make is that this is an API module! Therefore, it doesn't work as a standalone solution, but rather “supports” other modules from the Internationalization group. And when it comes to the UI that you get to use to translate language strings in Drupal using this particular module, you should know that it's incorporated in the localization system: go to Administer > Site building > Translate interface for translating your user-defined language strings. "And how does it work exactly?" you might legitimately ask yourself. Here's how: it uses the Locale's module standard translation page (the above mentioned UI) for enabling you to translate the user-defined strings that it will have collected    but not before you haven't defined your site's default language (and it's not always English)   and it does this by grouping strings into “text groups” (you can find these groups of user-defined strings named “Profile”, "Menus” or “Taxonomy”, at admin/build/translate/search, under the "Limit search to:")   Notes:   do keep in mind that whenever you're translating your user-defined strings, the source strings that will get stored will be displayed in your default language    in case the default language on your website is not English, you still get to import/export English translations relying on your localization UI   a sort of “warning”: whenever you change the default language on your website you'll need to remember to redefine all your source language strings, too (the user-defined ones, of course)   in short: get yourself informed of all the implications deriving from changing your default language, since this goes hand it hand with a never-ending string editing “ordeal”, too   all the other translations on your website will be kept “unharmed”   yet, as a rule of thumb, you should be changing (if it's necessary) the default language on your site at the very beginning of its development process; later on, once you have your site up and running, changing it back and forth and in several different languages will only lead to... “language string chaos”   3. Use the Strings Overrides in Settings.php to Translate Language Strings in Drupal You'll get to carry out the entire process in the settings.php file and where do you add that you don't even need to download, install and configure any extra module: it all happens in Drupal core. Yet, you should be fully aware that it's not a method for the inexperienced either. We're not going to hide it from you: it does require a certain level of coding “expertise”. Moreover, the same specification that we've made for the String Override module applies to this method, too: it's a tool to be used for small-scale string translations. Not the best choice when you're faced with much larger-scale translations! And now, shall we proceed with our explanations on “how it's done”? 1. Edit your settings.php file and go right up to line 430 (or somewhere 'around” it) 2. Next, uncomment this code (so that you can later on enter your translated strings)   434 # $conf['locale_custom_strings_en'][''] = array( 435 #   'forum'      => 'Discussion board', 436 #   '@count min' => '@count minutes', 437 # );   Note: in case the default language on your Drupal site is not English, remember to make the due modifications in the array key locale locale_custom_string_en so that it should reflect the actual language on your website! Now let's assume that you're being “dared” to translate a whole lot of language strings on your website.Then you sure need to streamline things a bit, right? For this you can rely on the i18n_string module, the API String Translation Module that we've just put into the spotlight.  Just edit your settings.php file by entering this new line of code: $conf['i18n_string_translate_langcode_en'] = TRUE; Or, if you're not that much into “tweaking” code in settings.php you can always rely on the variable_admin module (part of the Variable module). Here's how you get to leverage its functionality to translate language strings in Drupal:   first you navigate to admin/config/system/variable   next you click on the "Multilingual settings" tab   then on the "Enable translation for language" tab   set your default language   hit the “Save” button   And voila! Now you get to translate your language strings! How about you? Have you, by any chance, discovered other more effective ways to translate language strings in Drupal?     ... Read more
Adrian Ababei / Jul 07'2017
7 Anti-Spam Drupal Modules to Spam-Proof Your Website With
When you say “SPAM” you say “facts of life”! The life of any Drupal site/app/blog owner or administrator out there! And aiming for a 100% spam-proofed website is as realistic as toiling hard to eradicate... social inequity for good. And yet, you can still cut it down to the very minimum thanks to this heavy weighting “offer” of anti-spam Drupal modules available to you! Depending on the spam prevention Drupal approach that you'll supercharge your website with you'll be fighting spam via:   challenge-response interaction real-time filtering a “deadly” combo of the two approaches more or less user intrusive methods (meaning featuring CAPTCHA or not)   And if the Mollom module for Drupal still is you site's old and familiar “shield” against spambots, you should know that the popular, non user-intrusive  spam filtering service will cease to exist as of 2 April 2018.  Since no one knows how it's going to get configured after this date, whether it will continue to safeguard all sites or none, you'd better be open to alternatives. Now to spare you of a time-consuming research, here are 7 anti-spam Drupal modules that our Toronto web development team has already hand picked for you! Scan them through, compare them and go for the one that best suits your site's anti-spam needs:   1. Honeypot Honeypot is, by far, THE anti-spam module! Basically, when they say or think of “spam prevention”, 99% of “Drupalists” out there say/think of the Honeypot module, of the Honeypot method (for yes, there's even an anti-spam “method” named after it). So, you get the idea: in Drupal world spam-filtering means “honey-potting” in 9 out of ten cases! “How does it work?”, you say? It fights back spambots on two fronts:   It uses a simple, yet surprisingly effective little “trick”: it adds a hidden field precisely to those forms on your Drupal site that it spam-proofs. An easily configurable “bait field” named something like “website” or “URL”. Once that hidden field gets filled in, it's a sign that a spambot has taken the bait. Sneakily-clever and effective! It uses a timestamp (which, again, you get to configure to your liking, the default time being of 5 seconds). If a web form on your Drupal site gets filled in quicker than that specific timeframe that you've set, Honeypot will instantly block its submission. It will identify the “submitter” behind it as being a... spambot.   So simple, so effective and where do you add that Honeypot falls into that category of anti-spam Drupal modules that are 100% non intrusive. The ones that don't keep “bugging” your site's visitors with captcha tests to be solved in order to prove their humanity! There's no user interaction involved, since Honeypot runs its “spambot-detecting” tests on the web forms directly! Note: a con of this module is that those particular web forms on your Drupal site placed under Honeypot's anti-spam protection can't get cached! The module disables caching for these particular web forms.   2. http:BL Now here's another spam blocking Drupal module worth your full attention! Compared to Honeypot's own methods, the HTTP:BL's one is completely different: it blocks any requests coming from Ips included on a DNS blacklist! A blacklist put together by all the Drupal sites using this module for spam protection. A sort of collective fight against spam, one that your own site will be involved in and “reap” the benefits of! Note: the http:BL module can be installed on Drupal 7 websites only for the time being.   3. Captcha, One of The Reference Anti-Spam Drupal Modules How could we have left out, from our list, precisely the module leveraging the “reference anti-spam method” itself: the CAPTCHA method? It does precisely what its name says: it integrates CAPTCHA into your web forms! A challenge-response system meant to block any attempt of automated spam posting, based on “inconveniencing” the user to pass a given test (answering a question, solving a math problem etc.) The module comes with its own default challenge-response tests, so it can be used as a standalone spam-blocking solution, and it can also be used as a base API for other anti-spam Drupal modules. Notes:   our Toronto digital agency's team strongly recommends you to go for the second scenario, to make it just part of an entire “ecosystem” of anti-spam solutions on your Drupal site. There have been quite a few cases when spambots did manage to solve these challenge-response tests.   do keep in mind that captchas are always a deterrent for your users and can easily turn into a factor responsible for the low conversion rate on your Drupal site   4. reCaptcha Take the CAPTCHA and the Re-Captcha modules as a “check and double check” spam-preventing method! The ReCaptcha module goes even tougher on bots as it leverages the “squiggly words” method for blocking spam. Basically, words difficult to read by spambots get taken from old books and turned into captchas. Note: a potential disadvantage of using this anti-spam Drupal module is that some users, too, might find it hard to recognize these “hard nut to crack”, less common words!   5. Antibot, One of the Anti-Spam Drupal Modules to Supercharge Your Site With Here's another representative of the group of anti-spam Drupal modules that are totally unintrusive! It uses its spam-preventing “superpower” like this: it practically assumes that bots are discouraged to spam pages using Javascript, therefore users enabling JavaScript in their browsers are, implicitly, spam-proofed by default. For those cases where spambots do attempt to render precisely these “safe” JavascripT-based pages, the module will inspect your visitors' mouse movements and keyboard key presses in order to identify them as “humans” and to allow them to submit their filled in forms. A pretty clever check-up if you come to think of it! Note: one of the Antibot module's notable features is that, unlike other anti-spam Drupal modules, it doesn't disable cache on the web forms that it protects. A performance-enhancer you just can't overlook!   6. Botcha Take the Botcha module as an all-in-one spam-blocking solution for websites running on Drupal! And where do you add that it doesn't involve any user interaction (and therefore “user bugging”) either! There are 3 methods that this module uses for detecting and blocking spammy form submissions:   the honeypot method: it adds that hidden, “spambots luring” field to the protected web forms on your website the source calculation-based method the time-based method   And there's more! Once enabled, this module will also prevent any attempts of resubmitting the same form by using its own “NoResubmit” formula. Note: the only downside is that there's no Drupal 8 version of the module. Not just yet!   7. Simple Anti-Spam         This module's main “role”, in its mission to prevent spam posting processes, is to block automatic spam coming from anonymous users. And its name says it all; it's a simple “two-ingredient recipe” that it relies on for blocking spam:   there's an “I'm not a spammer” checkbox and there's an “I'm a spammer” hidden checkbox   Once the later gets checked or the former is left unchecked, it will just “warn” the module of a “suspicions activity” on your Drupal site. It's then that Simple Anti-Spam displays a warning message or simply blocks that specific form from being submitted to your Drupal site. Moreover, from:   blocking web forms by maximum text length blocking them by stop words to blocking form by number of links and the list can go on   ...the Simple Anti-Spam module is one of those anti-spam Drupal modules that can report a form as being “suspicious” (automatically blocking it, too) based on a whole array of criteria. Note: there's yet no Drupal 8 version!   Your turn now! What other approaches have you adopted on your Drupal site for... pulling the plug on any type of spam activity?  ... Read more
Adrian Ababei / Jul 04'2017
How The Drupal CDN Module Can Speed Up Your Site
It's speed that excites them all, with no exception! While some of the users prefer a minimalist web design, others might go for a maximalist design instead. Some have a weakness for content infused with storytelling, while others prefer just simple, “raw” data... And still: online users ALL have a thing for high page loading speed. And the Drupal CDN module makes such a powerful tool for you to supercharge your site within the name of top speed!   “Why should I even integrate a CDN when I can as well continue to use web hosting? What difference would it make?”   2 more than legitimate questions that we'll try to answer as we'll do our best to point out to you how precisely a CDN can boost your Drupal site's performance and why you should add it to your whole “arsenal” of speed-boosting tactics (moving CSS and JavaScript in the footer, perfecting the caching on your site, compressing your heavy load of images, etc.). So, let's dig in, shall we?   How Precisely Can a CDN Guarantee You a Lightning Fast Website? A short version of the answer to your valid dilemma would be: “compared to a shared web hosting, a CDN is built with speed in mind; it's equipped with the capacity to withstand huge fluxes of visitors”. In other words: while shared hosting is simply geared towards delivering you a stable environment for your website, a CDN's infrastructure setup is developed precisely to ensure high page loading speed, irrespective of the influxes of traffic on your site. And this is no news that we're sharing with you here: just consider with how many other websites your own Drupal site is sharing its hosting sever with and... you do the math! Try to imagine how many times its performance would get boosted if it had a server all by itself. Dedicated exclusively to its own needs for speed and to answering its particular traffic challenges.   1. It Will Lighten That Heavy Load of Plugins On Your Site Plugins! Who can resist them?  Once installed on your Drupal site, they just unleash their “encapsulated” functionalities. And each one of them comes with its own too-cool-to-resist-to functionality! Piling them up, adding more and more, eager to impress your visitors, does have the “taste” of a “guilty pleasure” doesn't it? “Guilty” because with each new plugin, with each new load of JavaScript and CSS files that you add on, your Drupal site gets even more bogged down. And how can a CDN, via a dedicated tool such as the Drupal CDN module, help you out here? For it certainly cannot point out to you which plugins to keep and which ones to disable! Well, what it CAN do, instead, is compress and minify their scrips! Therefore your site's heavy load of content will get considerably lighter and its performance dramatically improved!   2. It Will Speed Up Content Delivery Anywhere on The Globe Basically a CDN infrastructure's built to serve content worldwide, irrespective of the website's own location on the globe. In short: users located far away from your site's location, shouldn't be disadvantaged, in any way, in terms of content delivery speed. And how does a CDN manage to deliver content, at high speed, to an international audience? It relies on its entire “ecosystem” of proxy servers, located in various locations worldwide. It's them that catch and then replicates content (images, CSS, JavaScript files) precisely from those locations which are geographically closest to your users. Wrapping up: if your Drupal site's located in Asia and a visitor from Europe makes a content request, that particular user will get its content delivered as quickly as a visitor from Asia would. Thanks to that network of servers, placed all over the globe, that your CDN will leverage.   The Drupal CDN Module: A Handy Tool for Integrating CDN on Your Website Now, where do you add that you even have a dedicated module for it?  Once you've convinced yourself of the CDN's key advantages and once it's more than clear to you how its integration can benefit your own website, just go ahead and... enable it! Practically what this module will do is change your files' URLs so that they should no longer load from your current shared web server, but from your CDN instead!   A Step-by-Step Guide to Installing and Configuring Your Drupal CDN Module Now let's point out to you all the steps you need to take, along with some useful tips and tricks, so that you can use your CDN at its full potential on your website:   You install and enable your Drupal CDN module on your website   You navigate to its configuration page    See the “General Settings” tab? It's there that you can set the module's status (enabled, disabled or on testing mode)   Next, click on the “Details” tab and wisely scan through the whole set of options that you have there: pick “Origin Pull”, select the “CDN mapping” setting, and so on. It's the latter that enables you to specify which files on your website should get loaded via your CDN from now on   Select the “Far Future Expiration” setting and this way you will ensure that files delivered via CDN will “expire” in the future to come (enhanced cacheability on your client's side). Also, since these two settings go hand in hand: keep in mind to enable your “Aggregate and Compress CSS files” option in your Performance settings   Select “CDN supports HTTPS” (you'll find this setting in your “Other” tab) if it's the case, meaning if your Drupal website does use HTTPS   And that's it! Your site's all set for reaching... high page loading speed now! ... Read more
Adrian Ababei / Jun 29'2017
Speed It Up: Use the Image Lazyloader Module on Your Drupal Site!
Lazy loading (images, in this case) leads to energy preserving, which leads to a significantly improved site performance! Pretty ironic, isn't it? Well, this is precisely the logic on which the Image Lazyloader module in Drupal has been developed! Saving your website's energy goes hand in hand with increasing its page loading times. It goes hand in hand with “sparing” HTTP round-trips and taking some heavy load off the browser's “shoulders”, which otherwise would be “pressured” to relentlessly load thousands of images, even before they would be visible in his/her window browser. Basically what this module does is both unexpectedly simple and impressively smart : it loads images on your Drupal site only when they're in visitors' viewports.  In other words: when there's no one opening them up in his/her browser, why bother loading an entire “cargo” of images? Why put an unnecessary pressure onto your site and the browser? And now let us detail to you this “energy-saving” tool that Drupal puts at your disposal and which we encourage you to leverage in the name of a... faster loading website:   The Image Lazyloader Module: How Does It Work Exactly? What Makes it a Speed Booster? The whole “mechanism” behind this Drupal module is surprisingly simple, if we come to think of it: it loads images (lots and lots of them) only when they're displayed in a site visitor's browser window. Not before! And this is a “dream come true” especially for web designers, who're constantly dealing with the challenge of optimizing heavy loads of images. As you can surely guess it yourself, the module's an incredibly useful tool precisely for those Drupal website carrying heavy “cargos” of images. For no matter how many they might, how heavy the load is, the Image Lazyloader module's capable to... lazy load them all and therefore to keep your site's performance at optimum parameters.   How Do You Use It? How Do You “Exploit” Its Full Potential on Your Drupal Site? Now allow us to give you a few tips and tricks or, better said, a step-by-step guide on how to fully leverage this module on your Drupal site:   Step 1: you download (and install, obviously) the module itself along with the Libraries module in the sites/all/modules/contrib; the latter is, in fact, a dependency for 2.x branch  Step 2: next you download your echo library and place it in sites/all/libraries Step 3: it's time to enable your Image Lazyloader module now Step 4: don't forget to clear your cache   Essentially all these preliminary setups will actually grant you the much-needed freedom to quickly enable and to disable your Lazyloading module any time you want to. Which turns it into such a powerful convenience when you just need to run some tests on your website, for instance. And speaking of “empowerment”, there's an entire array of options to choose from and setups to enable, depending on your site's needs and on your purposes:   you have the loader icon letting you know if the images are not (yet) fully loaded   you get to set the distance from the viewable screen part and to go for a placeholder image of your choice   you're even enabled to select those particular web pages on your Drupal site where there's no need for an image lazy loading process to be performed   And voila! These are the answers to your “why” and “how" to use the Image Lazyloader module! Questions deriving, of course, from the main one: “how can I boost my Drupal site's performance?” Feel free to test its image optimization power and to determine how much faster your web pages will then load.  ... Read more
Adrian Ababei / Jun 27'2017
5 Modules for Building Popups in Drupal
You know what they say: “there's always a module in Drupal for... pretty much any type of functionality you might need!”. And pop-up messages are no exception! You have a whole “arsenal” of modules for building popups in Drupal, each one of them “specialized” in providing you with a certain type of “refinement” or  set of particularities that you might need to leverage on your site. You might want to trigger a pop-up taking the form of:   an announcement displayed in an overlay   a redirect pop up message   or maybe you simply need a pop-up opening up a form   There's a dedicated module to suit any type of site-specific expectation you might have. And now, without further ado, let us “unfold” before you eyes the list of 5 useful modules for building popups in Drupal:   Popup It's not without premeditation that we've put this particular module on top of our list. In terms of pop-up building “tools” in Drupal the Popup module can easily get perceived as an entire “toolkit” at your disposal! Therefore, it's much more than just a stand-alone module, but rather a “cluster” of sub-modules, each one of them adding its own functionality to the whole suite.  As a whole, it helps you (your team of Drupal site builders) trigger menus, nodes, blocks, forms, php-generated content and views as pop-ups. Taken individually, these sub-modules are:   Popup descriptions: turns item descriptions into popups   Popup filter: puts an input filter at your disposal, one turning popup tags into popups in filterable content   Popup: delivers a couple of basic popup styles and the basic popup framework, as well   Popup block: the one “responsible” for the block configuration options (the ones that make every turning of a block into a popup possible)    Popup menu: which, as you surely can already guess, provides the needed blocks of popup menus corresponding to each menu within your system    Popup UI: “dealing with” all the display formats, integrating node-reference fields and handling cck, as well    Take the Popup module as some sort of “Swiss army knife” standing out from the group of modules for building popups in Drupal. Just name a pop up-related functionality that you need to leverage on your site and this suite of sub-modules is ready to provide you with!      Popup Message It's the answer to your “How can I display a pop-up messages, one per each browser session, to my Drupal site visitors?”. And here's how you configure it so you can “harness” its functionality:   you navigate to admin/settings/popup_message where you define your message's body and title   next you navigate to admin/user/permissions in order to set your permissions    Note: if it's a Drupal 8-powered site that you own/administer, then you should know that the team of developers behind this module is working hard on its migration to Drupal 8 as we speak. In short: is patience one of your virtues?   Pop-Up Question Redirect  Here's another module that shouldn't miss from your “toolbox” when you need to display a pop-up window to your Drupal site's visitors! You get to leverage its functionality for:   informing them about a certain promotion running on your website   getting them to complete a survey   putting a certain (new) page or section on your site into the spotlight!   The moment the user clicks on the “Yes” button included in your pop-up window, he/she will get automatically redirected to that specific page that you're trying to draw his/her attention to! And speaking of them, your visitors, here are the 3 user-oriented functionalities that this module provides:   The “Yes” function, which guides your visitors to the page that your pop-up is targeting   The “No, remind me later” function, which will trigger the pop-up window, once again, after a certain amount of time   The “No, don't show this again” function, which blocks the pop-up   As for all the needed configuration “backstage hocus pocus” that you need to make in order to fully “exploit” this module's functionality, it's actually just a 3-step procedure:   Just define your popup title and message   A textfield where you need to enter a redirect link   Set the time for the “remind me later” functionality   Note: you even get “spoiled” with a more-than-useful “extra” functionality, that of being able to exclude certain user ip's; this way you decide which ones of your visitors shouldn't be “bugged” with your pop-up message.   Popup Forms, One of the Key Modules for Building Popups in Drupal  First things first: you should know that this module doesn't “trigger” any pop-ups itself, instead what it DOES do is provide API for themes or/and modules! So, it displays any given type of Drupal form as a popup, via an jQuery UI dialog. Compared to other “kindred“ modules, the Popup Forms module does not display any type of popping-up content except FORMS. This being said, let's see which are the key features that you'll want to use:   It can easily integrate multi-step forms   It enables you to set up various parameters to your form callback   It can pop up https forms from non-secure pages, too   As aforementioned: it uses a jQurery UI dialog for displaying your pop-up forms   Once your forms are successfully submitted, you gain unlimited access to the $form_state from Javascript   Note: you'll need the jquery.postmessage plugin for “harnessing” this module's power on your Drupal site!   Pop-Up Announcement It's the handy tool to rely on whenever you have an announcement to make; whenever you need to establish this type of interaction with your website visitors. Basically it enables you to communicate with them via pop-up announcements displayed in overlays. And it's you who'll determine on which ones of their visits on your site these pop-ups should appear (on their first visits, their third, their fifth; it's you who'll define this parameter). Moreover, you even get to determine which is that specific page on your site that your announcement should pop-up on, as well! In short: when you say Pop-Up Announcement you say “utter flexibility”! Basically you get to customize your pop-up interaction with your users the way you like it! And now, just a quick overview of its most “tempting” functionalities:   The pop-up announcement shows up in an overlay   You'll get your own admin page, your own “control tower” where you get to manage all your announcements   Your announcement pop-ups can be written in html, too   As already mentioned here: you get to define on which ones of your users' visits your announcements should get triggered; and it's on your dedicated configure page that you get to make all these key set ups.   And speaking of functionalities and parameters that you're empowered to define yourself: you even get to set up a specific visibility for each one of your announcement messages; for instance you can have different degrees of visibility on different sections of your site   Note: OK, so you're granted tones of flexibility and power of customization, but there still are some limits, as well. 2 actually: you can't set more than one announcement pop up per page or more than one pop-up per user visit! As for the configuration part, just navigate to admin/config/popup_announcement/list and make all the right selections and set ups for tailoring your announcement pop-ups to your site's needs! It looks like our list of useful modules for building popups in Drupal ends here! Do you happen to have other “favorites” that haven't made it to our list? Which one of the 5 modules mentioned here do you find most effective, most feature-rich and helpful for your own team's pop-up building “tasks”? ... Read more
Adrian Ababei / Jun 23'2017
How to Create Role-Specific User Registration Forms in Drupal
More functionality, more possibilities, right? Yet it can also lead to more complexities and more challenges that you need to face as you start harnessing it (the enhanced functionality!). For instance: Drupal's entire ecosystem of user roles and, implicitly, of permissions! On one hand it streamlines your efforts to put together an organizational infrastructure and a solid security policy within your enterprise, on the other hand: what do you do when you need to create role-specific user registration forms?  Well, then you start your research work and dig into Drupal's heavy load of modules! Or you aim for efficiency instead! You “reap” the benefits of our own experience as a digital agency in Toronto and simply run through our here below selection of 3 modules that are up for the job. And here are these Drupal modules which, once combined into a powerful trio, will help you solve your “how to build a custom user registration page” puzzle:   1. Build Your Role-Specific User Registration Forms with Multiple Registration It's not for no reason that we've put this Drupal module on top of our list of “tools” that will help you build your role-specific user registration forms. This is the module that will be playing the leading role in your little “orchestra” of 3 modules fit for this “job”. Now let's find out what it does precisely:   it enables you to create your custom user registration forms, adapted to the particularities of each one of the user roles currently existing on your Drupal site    it allows you to add specific fields, fields that you don't want to enable for the “standard” or “general” registration forms, as well    moreover, its functionality extends beyond the registration form: it empowers you to add fields to your “target” users' (having “special” user roles) edit pages, too; fields that you don't want to get displayed on their registration pages, as well. You can do that, too, once you start running this module at its full potential.   How to install it:   you install it (obviously) and once the installation's compete, you access your Roles page (admin/people/permissions/roles)   once on your Roles page, you'll see that you're enabled to add a custom user registration form to each one of the user roles listed there; in other words: to create your role-specific user registration pages   for “assigning” your registration pages to your “target” user roles, simply enter the pages' paths there   Note: needless to mention that before you rush in to add your custom registration forms to specific user roles... you should first of all put together the hierarchy of user roles on your Drupal site. You should have your roles created BEFORE you start “attaching” them custom registration pages! If everything went well, it's here that you should be able to see all your role-specific user registration forms: admin/config/people/multiple_registration! Last but definitely not least: access the needed field settings form and “assign” it to your recently created custom registration page. 2. Registration Role With Approval  You most definitely need to trigger this module's functionality if you (and we're pretty sure you do) need a “tool” helping you to determine which user roles needs your approval, as your Drupal site's admin. How does it work precisely? It's pretty straightforward: the user gets all the available user roles listed on his own registration form and gets to select the role he/she'd like to “play” on your site.  If the selected role is listed as “needs admin's approval”, his account gets blocked until you, the admin, has checked his request and assigned him that specific user role.  Maybe, let's say, you don't want any user, having any type of user role on your website, to instantly gain access to all information stored on your website. Therefore, being able to approve, beforehand, the requests for some of the “critical” roles, is a huge “empowerment”. A much needed tool to help you organize your whole “infrastructure” of user roles on your Drupal site, don't you think? How to install it:   Start by copying the module folder to your Sites/All/Modules directory   Next, enable it at Admin/Build/Modules   Then navigate to Site Configuration -> Registration Role With Approval   There you get to determine which user roles will get displayed on the users' registration forms and also (most importantly) you get to specify which ones of them need admin's approval before users can use them   Save   Once you log out and navigate to user/register, if your module installation process has run smoothly you should be able to see your Role checkbox list    So, it looks like you've just added one more useful Drupal module to your list of “3 tools” that will help you build your role-specific user registration forms. 3. Profile2 Registration Path Why would you need a third module, as well, for the job? Well, because you don't want the same user registration form to be presented to two different user profile types from, from two different audiences (let's say that you have the “doctors” and “the visitors/patients” audiences, if it's a Drupal-powered health portal that you own). The solution to this “problem” is the Profile2 Registration Path module itself, which enables you to set unique registration paths for each Profile2 profile type. And it's these unique paths that make sure that the users registering via them will get precisely the fields corresponding to their own profile types. How to install it:   Enable your module   Navigate to Admin/Structure/Profiles for editing a profile type   Once there, check the “Enable unique registration path” option   Type an URL path for this profile type   Save and log out and next check your [your-path]/register   Key Features:   You get automatically generated registration blocks for each profile type on your Drupal site   Custom confirmation message once the user registration has been successfully completed    You're enabled to either: build a distinct registration environment for each profile, with forgot password pages and separate login   simply add a new registration tab to the already existing user path    And there you have it: your “emergency kit” of Drupal modules to use when you need to create some role-specific user registration forms! Not only that you'll get to build the needed custom forms, themselves, but to add all kinds of “refinements”, as well, such as admin approval functionality and unique paths. You have "problems", we have solutions! ... Read more
Adrian Ababei / May 19'2017
Decoupled Drupal: What Does This Mean for Your Own Site?
Should you decouple? When? How? What are the risks that a decoupled Drupal site involve? What are the undeniable, hard-to-resist-to advantages of “teaming up” your Drupal site/mobile/native app with a fast, cool JavaScript framework and of using Drupal as a back-end content repository “only”? And, most importantly: is a “headless” build suitable for your own web project?  Our web development team here, in Toronto, comes with its very first piece of advice for you now, when you're facing all these crucial questions: always use the context of your very own web project to filter all the “trends” seeming to dominate the digital landscape at some point or another! Before deciding to go for a decoupled implementation, make sure that all the members of the team involved (Drupal developers, project managers, content editors) clearly understand what a decoupled Drupal architecture is. And whether the technical risk involved is worth the effort. Whether this approach is exactly what your web project needs. Now, let us help you find the answer to your legitimate decoupling-related questions: 1. “But What Is a Decoupled Drupal Architecture, After All?” To put it simply: decoupling Drupal means separating the back-end of your website/app from its front-end (either partially or totally). Now if we are to detail a bit, we would have to add that:   in a decoupled Drupal context we would have Drupal playing its role in the back-end, that of storing and sending forward pure data   the front-end (aka, the “responsible” of everything related to the user experience) role will be played by a JavaScript framework (e.g. Backbone.js, Angular.js)   the presentation layer can range from Alexa to Raspberry PI, to pretty much anything that can consume the data sent over by the Drupal-powered back-end   Drupal's “role” can easily resume to what the content producers...produce, while the coupled front-end framework will be “responsible” for what the users see on your site/app. Responsible for creating a faster and richer user experience. In other words: Drupal will be handling the editorial, content creation and administrative tasks, while the coupled framework will be handling the front-end, communicating with the Drupal back-end via API. The obvious “points of attraction” of such an API-only approach are the unlimited freedom and flexibility granted to front-end developers.  Unchained from the “need” to know how to write or to decipher Drupal-specific code each time they need to improve the look and feel of a website, front-end developers get to choose from different approaches of building a website. They're free from the monolithic Drupal architecture with the presentation layer backed in through the Drupal theme itself. Free from the tightly interconnected back-end and front end. 2. “Why Should I Decouple? What's In It for My Own Site/App?” Now this is a more than legitimate question that you should be asking yourself once you've fully understood what a decoupled Drupal build is. Here are some key advantages if you decide to go for a “headless” Drupal site/app:   it allows you to create some truly interactive user experiences (it's the browser who'll take over the user experience responsibility and so all the back-and-forth interaction will be a real-time one; a key aspect to consider when developing in-browser apps)   it grants your team of front-end developers almost unlimited creative power; no more restrictions coming from the back-end + total freedom for front-end developers to use their native tools and to craft the user experience while they still get to harness Drupal's power via APIs   it enables you, as a decoupled Drupal site owner, to future-proof your website; once you decide to redesign it, you can do that without having to re-implement your whole  back-end, too. And vice versa. Flexibility and convenience!   it enables you, the site owner, to hire non-Drupal specialists, too, since front-end developers won't need to be Drupal experts, as well. You will no longer be limited to collaborating exclusively with developers having a deep understanding on the Drupal back-end architecture, of the Drual-specific code. Even more flexibility for you! 3. “What Type Web Projects Would Benefit Most from Decoupling Drupal?” And this might just be the best headless Drupal-related question you've asked yourself so far! It's definitely a matter of: “Is this solution a perfect fit for my own site/app, too?” See if you can identify your own type of Drupal web project in the examples here below and you'll have the answer to your question. So, decoupled Drupal is best used for:   Native mobile apps, especially now, that you're “spoiled” with RESTful services in Drupal 8 core, creating clean APIs is easier than ever. Your mobile apps users won't even need to interact directly with your Drupal site when accessing your native app. Your website's front-end will be using the same APIs as your native mobile app! Also, you get to build new and new mobile apps without the need to access the data that your back-end stores.    Web projects involving front-end developers with no Drupal expertise   Web projects that include multiple development teams   Web projects with front-end teams depending on unlimited freedom for structuring and displaying the content   Web projects where the presentation layer combines data coming from several API sources: social media, CMSs, video management systems   Web projects with multiple content consumers that are live simultaneously (e.g. a Drupal site plus several mobile apps, as well) 4. “Which Are The Main Drawbacks of a Decoupled Drupal Site?” “So, do you suggest that I should just go... headless, that Drupal 8's new them layer is just something I can easily do without?”  This might just be the question bumping into your head right now, isn't it?  Well, it's true that going headless comes with its drawbacks. You risk to throw away some of Drupal 8s' “goodies”:   permissions a well-enhanced, seamless admin experience in Drupal 8 user authentication   The best approach is the “moderate decoupling” or, if you prefer, the “progressively decoupled Drupal”. This means that instead of going reckless and losing all of Drupal 8's out-of-the box flexibility and power as you go for a fully decoupled Drupal site, you should:   Still leverage Drupal's theme layer's power, using it to render most of a given web page   Decouple only SOME of the web page's components, mostly those that require a faster and richer user experience    In a nutshell: moderation is key! No need to waste time, energy and a good “load” of incredibly powerful Drupal elements and... reinvent the wheel! And now, to support our pledge for the progressive approach to decoupling, let us back it up with one single example: NBA.com! This site's using Angular 2 for rendering only certain parts of its web pages, while their static components are rendered by Drupal! And speaking of this site using the “hybrid” approach, here's a Drupalcon Baltimore 2017 session filled with all the details and “enlightening” infos that you might find useful:   https://goo.gl/4jEhhu In Conclusion: It's not for no reason that decoupled Drupal makes such a tempting type of CMS architecture, but you should first of all:   not take API-fist Drupal 8 for an API- only CMS   give it a very deep thought, lest you should decouple too much of your site and lose some of the already-built, powerful Drupal tools.          ... Read more
Adrian Ababei / May 18'2017
Develop Your Website With a Leading Drupal Agency In Toronto
Despite it being a relatively new CSM system, Drupal has gained on and overtook major players in the field, such as Wordpress and Joomla. It has a number of advantages the veteran platforms just can't match. Until and unless they gain on, your business website is certainly better off developed by a Toronto Drupal agency. Especially now that Drupal 8 has come out and gave us all the amazing functionality it has to offer. But let’s be more specific and give our readers the four main reasons Drupal is your best choice. Not from a Drupal developer’s perspective, but from the point of view of a business person aiming at a powerful yet easy to use system that will get your business firmly planted on the digital map. We give you the four reasons you should choose a Toronto Drupal agency. Functional Benefits Drupal is more complex than Wordpress but it’s exactly this complexity which packs all the additional functionality and power it has to offer. It has more features, more content types, more views and metrics. Developing your SEO and content strategy on Drupal gives you more options for fine control and greater reach. Greater Flexibility Unlike other CMS platforms, Drupal themes are considerably more varied. What’s more important, they are also considerably more customizable. There are many more free modules too. Yes, you will still need a Drupal company to handle and install them for you, but their variety and power definitely make it worthwhile. It’s also more robust and has better capabilities when it comes to eCommerce and handling huge amounts of content. Improved Usability While it has a learning curve somewhat steeper than other CMS platforms and requires more technical skills to learn, Drupal is amazingly easy to use once you know how to do it. It can produce sites that are more advanced, powerful and varied, in a streamlined workflow that Wordpress developers can only envy. And moreover, Drupal 8 is made easier for non-developers to work with, so once your Toronto Drupal agency completes the job, you can take over from there. Superior Security Security is a big factor for most businesses and Drupal is definitely displaying top performance in this area. There are government sites, including the official White House website that prefer Drupal for its enhanced security and monitoring features. While other CMS platforms are notoriously vulnerable to hacking, Drupal gives your business a safe space for confidential information and client transactions. Want to know more about Toronto Drupal web design? Let’s talk! ... Read more
Adrian Ababei / Apr 20'2017