Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 19 min 9 sec ago

NEWMEDIA: <p><a href="

Tue, 26/01/2016 - 01:26

Mailchimp, Recurly, Mollom, Stripe, and on and on—It's easy to get spoiled by

Categories: Elsewhere Featured Case Studies: EIT Avionics

Mon, 25/01/2016 - 21:11
Completed Drupal site or project URL:

EIT Avionics produces devices for aircraft to increase safety and situational awareness. They needed a new site to showcase their products and introduce their company, and they wanted to be able to edit the site themselves. We built the site with Drupal 8 and a custom responsive Drupal theme.

Key modules/theme/distribution used: ViewsOrganizations involved: PlethoraTeam members: caspervoogtjesse.voogt
Categories: Elsewhere

Drupal Camp NJ 2015: Mentoring & Collaboration day - Sunday, January 31

Mon, 25/01/2016 - 19:06

We are hosting a free Mentoring & Collaboration day, Sunday at the FFW office.

Categories: Elsewhere

Mediacurrent: Drupalcamp Atlanta 2015: Decoupled Drupal 8

Mon, 25/01/2016 - 17:14
Trending Toward “Headless”

Lately, there has been an increased interest in decoupled Drupal (a.k.a. headless Drupal). Lullabot and are two organizations that have recently announced new sites that feature decoupled Drupal.

Categories: Elsewhere

Mediacurrent: Drupalcamp Atlanta 2015: Using Data-Driven Documents (D3) with Drupal

Mon, 25/01/2016 - 16:57

At DrupalCamp Atlanta 2015, I led a discussion on the d3.js library for an audience of site builders, themers and developers.

Data-Driven Documents or D3 refers to a javascript library combining html, css and sag to build graphic visualizations for data. The d3.js library uses scalable vector graphics to generate charts, graphs and maps that are scalable and interactive.

Check out my session recording below. It covers: 

Categories: Elsewhere

Microserve: Optimising your Drupal CKEditor

Mon, 25/01/2016 - 15:13
Optimising your Drupal CKEditorJan 25th 2016 Configuring CKEditor

First rule to configure your WYSIWYG's:  Only give your users what they need.

When you install CKEditor it gives you almost every option in the toolbar. This is fine for an admin who knows what they do and how to use them, but for most users they are going to be overwhelmed or they can go too over the top with the formatting options, which can result in some ugly looking content on the website. 

Below is a configured CKEditor for a full profile using the full html text format. (…/admin/config/content/ckeditor/edit/Full). This would generally be used for site admins and editors. You can setup different CKEditor profiles and text formats for different users according to what you need. 

Here's a couple of useful buttons to use:

  • Format: I don’t know why you wouldn’t have this set! It gives the option to have headings or paragraphs etc. What you should always do is change the font formats under ‘CLEANUP AND OUTPUT’ and take out H1. It is a nightmare if the client gets a hold of that! You only want one H1 tag on your page and that tends to be the node title. Any more than this is bad for SEO.
  • Remove Format: This removes inline styling which usually happens when pasting text into the editor. They're are ways to add paste filters to strip out html you do and don't want.
  • Full page/Maximize: I just prefer this for myself really. I find the text area constraining and I like seeing the bigger picture without extending the box or scrolling a lot. There is an auto grow plugin or you can manually set the editors height in the settings config file.
  • Link: I use a plugin module to easily link to internal paths called CKEditor link.
  • Div: To add a div wrapper. This is handy because it keeps div classes/ids when saved as full html, also when using templates and custom styles.
  • Show blocks: Adds an outline to each element with their tag displayed next to them.
  • Templates: Gives the ability to add custom code into your editor. For example: If you want to add a two column layout with images you can write a template file for this and select it here. 
  • Styles: Gives the ability to create custom styles for your text editor. Such as, give a p tag a certain class to style differently.
Advanced content filter -

I would recommend enabling the Advanced content filter (ACF). This cleans up and strips out unwanted html such as inline styling, font styles, scripts or risky code and converts b tags to strong tags etc. However, if you did want something like text colors on all elements or the use of spans. Add this code :

config.extraAllowedContent = 'span;*{color}';

to 'Custom JavaScript configuration' under 'Advanced options' at the bottom of settings page. Alternatively, you can load CKEditor.config.js from your theme directory (remember to clear the browsers cache when using this file).

The above option is per CKE profile. See here about ACF and other samples.

If you have any examples or other ways you filter HTML I would be interested to hear them - simply leave a comment at the end of the post!

Theming CKE contents

As an option you can load your theme's CSS into the CKE body. This helps your users see how it will look on without having to preview the page. 

This is quite simple:

Under CSS in the profile settings, there are three options - 'CKEditor default', 'Use theme CSS' or 'Define CSS'. You can only use the theme CSS if you are using plain CSS for your site, as this doesn't work with SASS/LESS etc. The other option is to define the CSS and write some custom CSS for the editor itself. So, if I have a CSS file in my theme directory under - /sites/all/themes/custom_theme/css/editor.css then the path to the CSS file would be - %h%tcss/editor.css .

NOTE: The styles you write in this CSS file will not apply to the rest of the site unless it's added in the themes .info file.

Finally, images! Using the Picture module you can ask users to set an image style when inserting a new image into the editor. This will mean the content editor can't insert images that are just too big for what they need to be.

Written by: Kirsty Bewley, Front-end Developer

Microserve is a Drupal Agency based in Bristol, UK. We specialise in Drupal Development, Drupal Site Audits and Health Checks, and Drupal Support and Maintenance. Contact us for for further information.

Categories: Elsewhere

Code Enigma: Drupal Views: Combined fields filter

Mon, 25/01/2016 - 11:32
Drupal Views: Combined fields filter Language English Drupal Views: combined filters

How to search content across multiple content types, without limiting your data model.

Mon, 2016-01-25 10:32By salva

When building a Drupal site, it's very easy to be tempted to build the data model based on the features and options that one can get out of the box in other contributed modules (and I had my rant about it). And that's fine. Sometimes. For small sites, taking this path can pay off in development speed, since it will reduce the number of steps needed to accomplish something, as well as offer more reusability of components, and simplify overall configuration of the site. For large scale sites, this might become a performance problem as the software (and the content grows).

An example of simplicity in the short term vs performance in the long run is often easily explained with the Views module. A few years ago, it was "too easy" to decide to share plenty of fields between different Content Types, because of all the speed gained in development. In a recent project, we chose not to do this, and keep things as split as possible. However, we still needed to search content across different content types, using a single textbox. Well, it turns out this is very easy to achieve in Views too.

Entering Views combined fields filter

Since a few years ago, the Views module includes a Global filter that allows a site builder to add filtering options based on the value of multiple fields. Our use case was as follows:

  • Two ContentTypes with a "Full Description" field (textarea), called field_{type}_description.
  • A site section that should allow searching by the contents of both of those content types.

That might seem a case where one would jump into code and implement a hook_views_query_alter() to amend configuration as needed. However, it turns out this can be easily done in config with the mentioned filter. First things first, we add all the fields that we want to include in the combined fields filter. We needed the content title, plus the Full Description of the contents (which appears twice because the label of the fields is the same, even though the fields are completely different.

Finally, all we have to do is add the filter, which is in the "Filters" section of the View configuration, as any other filter (see first picture of this post). After adding it, we'll be presented with the standard settings popup for the filter. From there, we select all the fields that will be considered part of the filter, click "Apply", and then save the view. The other options are the standard ones provided by other Views filters (e.g: operator, label, description, etc).

Now we're ready to embed the view in a page and use it. This is just a suitable solution for many use cases, but not for all of them. While in our case we kept the goodness of the Views module and a sane data model, the combined fields filter wouldn't be suitable in a case where we had several more fields to filter by, as it would just add more overhead to the underlying database query. However, it proves to be an useful tool to have in your kit!

WordPress ServicesPage Drupal Help Haiti: Day 3Blog Drupal Distributions - Getting Going FasterBlog Views DependenciesBlog
Categories: Elsewhere

Drop Guard: Drop Guard celebrates full Drupal 8 support

Mon, 25/01/2016 - 09:00
Drop Guard celebrates full Drupal 8 support Manuel Pistner Mon, 01/25/2016 - 08:00

Drop Guard - your service for automated Drupal updates, just announced its full support of Drupal 8. This includes the Drop Guard service, client module and our friendly support, of course!

In case you’re up and running with latest and greatest Drupal release (or if you're just a Drupal and Drop Guard enthusiast), you'll enjoy this update support for your D8 projects.

You'll find a very short survey below. Your participation will help us to keep on rocking our Drop Guard optimization, so thank you very much in advance!

Show me this awesome survey

Also we want to figure out how D8 affects Drupal users thoughts and feelings about the new release and its security. Feel free to exchange your thoughts on Drupal 8 and its security, especially if you felt more safe with Drupal 7 than with D8.

Give feedback to our CEO Manuel ( or in our slack channel dropguard slack (join it at the bottom of the formular). We welcome any type of feedback; so feel free to contact us any time you have questions, we look forward to your response! 


Thank you for considering Drop Guard as your Drupal update automation service.

Drupal Drop Guard Drupal Planet Drupal 8
Categories: Elsewhere

Dave Hall Consulting: Per Environment Config in Drupal 8

Mon, 25/01/2016 - 08:55

One of the biggest improvements in Drupal 8 is the new configuration management system. Config is now decoupled from code and the database. Unlike Drupal 6 and 7, developers no longer have to rely on the features module for moving configuration around.

Most large Drupal sites, and some smaller ones, require per environment configuration. Prior to Drupal 8 this was usually achieved using a combination of hard coding config variables and features. Drupal 8 still allows users to put config variables in the settings.php file, but putting config in code feels like a backward step given D8 emphasis on separating concerns.

For example we may have a custom module which calls a RESTful API of a backend service. There are dev, stage and production endpoints that we need to configure. We also keep our config out of docroot and use drush to import the config at deployment time. We have the following structure in our git repo:

/ +- .git/ | +- .gitignore | +- | +- config/ | | | +- | | | +- base/ | | | +- dev/ | | | +- prod/ | | | +- stage/ | +- docroot/ | +- scripts/ | +- and-so-on/

When a developer needs to export the config for the site they run drush config-export --destination=/path/to/project/config/base. This exports all of the configuration to the specified path. To override the API endpoint for the dev environment, the developer would make the config change and then export just that piece of configuration. That can be done by runing drush config-get mymodule.endpoint > /path/to/project/config/dev/mymodule.endpoint.yml.

Drupal 8 and drush don't allow you to import the 2 config sets at the same time, so we need to run 2 drush commands to import our config. drush config-import --partial --source=/path/to/project/config/base && drush config-import --partial --source=/path/to/project/config/dev. The first command imports the base config and the second applies any per environment overrides. The --partial flag prevents drush deleting any missing config. In most cases this is ok, but watch out if you delete a view or block placement.

Best practices are still emerging for managing configuration in Drupal 8. While I have this method working, I'm sure others have different approaches. Please leave a comment if you have an alternative method.

Categories: Elsewhere

Savas Labs: It actually is 2016, your site is running on Drupal 6, now what? Part 3: the options.

Mon, 25/01/2016 - 01:00

Part 3 of a series investigating what options you have with your Drupal 6 site as EOL approaches. We discuss what your options really are given the many difficult decisions you are likely faced given your organization's budget, level of risk and tolerance for it, and other business priorities. Continue reading…

Categories: Elsewhere

Web Wash: How to Create Powerful Container Paragraphs in Drupal 8

Sun, 24/01/2016 - 20:56

In the last Paragraphs tutorial, you were introduced to the module and we created a basic paragraph type called Content. We only skimmed the surface of what the module can really do. To utilize Paragraphs to its full potential you need to learn how to create a container paragraph type and nest paragraph items.

The concept of a container is fairly simple. It's a paragraph type that has its own paragraph field on it and allows a user to nest paragraph items.

In this tutorial, we'll create a container paragraph called Banner, it'll have two fields: image and paragraphs.

When a banner paragraph is created and an image is uploaded, the image will be displayed as a background style. Now, I do understand there're multiple ways of doing this, but for simplicity we'll set it using a background style on the paragraph element.

All nested paragraphs will be rendered inside the container and displayed with the background. If you want to add any other settings, i.e., parallax configuration, you would place it on the container paragraph.

Categories: Elsewhere

Akshay Kalose: Drupal Console: Generate Module & Theme Code

Sun, 24/01/2016 - 16:11

Drupal Console is software which allows you to alter your Drupal installation through the command line. According to the official website, “The Drupal Console is a CLI tool to generate boilerplate code, interact and debug Drupal 8.” Unlike Drush, Drupal Console is specifically for Drupal 8, the latest major release. Although Drupal Console and Drush … Continue reading "Drupal Console: Generate Module & Theme Code"

The post Drupal Console: Generate Module & Theme Code appeared first on Akshay Kalose.

Categories: Elsewhere

Modules Unraveled: Install Drush 7 and 8 Side-by-Side and Automatically Switch Versions Based on Each Project

Sun, 24/01/2016 - 13:48

Have you started working with Drupal 8 yet? If so, you might have noticed that Drush 7 doesn't play nice with Drupal 8. And if you install Drush 8, that won't work with your Drupal 7 sites. Yikes!

Have no fear!

Here's how to install BOTH Drush 7 and Drush 8 AND have each project automatically use the version that corresponds to that install. It's stinkin' awesome!

Uninstall existing Drush instances

Okay, the first thing you'll want to do is uninstall every version of Drush that you already have installed. This process varies depending on how you installed it, but for example, if you installed with homebrew, the command would be something like brew remove --force drush.

Install Composer

We're going to install multiple versions of Drush using Composer, so we need to make sure you have that installed first. Detailed instructions on how to install Composer globally are on their website, but here's the gist.

curl -sS | php
mv composer.phar /usr/local/bin/composer

Note: If this fails due to permissions, run the mv line again with sudo. You may also have to create the /usr/local/bin directory first, depending on your existing system.

  • To confirm composer was successfully installed, type composer --version and you should see something like "Composer version 1.0-dev (...) 2016-01-20 11:17:40"
Install Drush 8

Okay, let's install Drush 8!

cd /usr/local/bin
mkdir drush-8
cd drush-8
composer require drush/drush:8.0.x-dev
ln -s /usr/local/bin/drush-8/vendor/bin/drush /usr/local/bin/drush8
  • The "composer require..." line will download the latest dev release, you could replace "8.0.x-dev" with "8.0.2", for example, to download that specific version.
  • The "ln -s..." line creates a "symbolic link" called "drush8" in the /usr/local/bin directory to the location where Drush 8 is installed. This means that we can call it from anywhere on the system by typing "drush8 --version", for example.


Install Drush 7

Now, we'll install Drush 7!

cd /usr/local/bin
mkdir drush-7
cd drush-7
composer require drush/drush:7.x-dev
ln -s /usr/local/bin/drush-7/vendor/bin/drush /usr/local/bin/drush7
  • The "composer require..." line will download the latest dev release, you could replace "7.x-dev" with "7.1.0", for example, to download that specific version.
  • The "ln -s..." line creates a "symbolic link" called "drush7" in the /usr/local/bin directory to the location where Drush 7 is installed. This means that we can call it from anywhere on the system by typing "drush7 --version", for example.
Create Shell Script to Automatically Select Version Based on Git Config

Now, if you're already used to typing something like "drush --version" (without the specific version number), remembering to use it can be a little cumbersome, so now, we're going to create a little shell script that will automatically use the correct one for each project based on a git config variable that we set.

cd /usr/local/bin
vi drush
  • Press the "i" key to enter "insert" mode
  • Paste the following
version=$(git config --get drush.version)
if [ "$version" = '7' ];
drush7 "$@"
drush8 "$@"
  • Press "esc", then type ":wq" and press "enter" to save and quit this file
  • Type chmod +x drush (This makes the "drush" script we just created executable.)

Now, when we type a command like "drush --version" it will use Drush 8 by default. In order to use Drush 7, we need to set a configuration variable in the git repo of the project that should use it.

Set Drush 7 as the Required Version for a Project cd /path/to/project
drush --version
git config drush.version 7
drush --version
  • The first time you run "drush --version" it should return something like "Drush Version : 8.0.0-rc3" showing that you're using Drush 8
  • The "git config..." line declares that you want to use Drush 7 for this project
  • The second time you run "drush --version" It should show somethign like "Drush Version : 7.1.0". If so, you're all set!

You might want/need to close and re-open all terminal windows to make sure it takes effect.

If you have any questions about, or issues with, this setup, let me know in the comments!

Tags: DrushDrupal 7Drupal 8Command Lineplanet-drupal
Categories: Elsewhere

ARREA-Systems: Create list view in custom module (part 2)

Sun, 24/01/2016 - 03:15
Create list view in custom module (part 2) JK Sun, 01/24/2016 - 10:15

In previous article we have seen how to declare the data accessible in a custom view in MyModule.

Now that the data from our tables mymodule_tb (and mymodule_tb_2) are available, let's create the list view.

First navigate to "/admin/structure/views/add" and create the view by entering basic information as per the example below.



After "save" you are redirected to "Edit" form where further settings will be set.

1) Add fields from you source table



From this form, select the fields to display. We will select 2 here "name" and "type" (refer to the table structure declared in MyModule_views_data())

Categories: Elsewhere

Larry Garfield: Giving Back in 2016

Sun, 24/01/2016 - 00:18

Three years ago, I ended 2012 with a call to the Drupal community to Get Off the Island. Mainly I wanted to encourage Drupal developers to prepare themselves for the major changes coming in Drupal 8 by connecting with other PHP projects and with the broader community, and called on people to attend non-Drupal conferences in order to visit and learn from other communities.

read more

Categories: Elsewhere Entity Relationships Graph

Sat, 23/01/2016 - 23:00

We are often challenged with the maintenance of existing projects that were developed by other agencies, or a new developer arrives and we need to quickly bring them on board. The complexity of legacy projects can be very high and the risk of breaking existing logic is something we want to avoid.

One way we like to look at a project before diving into the code is through its data structure. The different entities and their relations can tell us a lot about the business logic of the site and its internal logic. We assumed that if we could easily generate a graph with all the bundles, entities, and their relations this complex task would be easier.

Having done this for a while now, I believe our assumption was right. Taking our open-source Productivity project (Gizra's internal ERP/Project management system) as an example, it's much easier to look at the following graph and understand that Work session, Time tracking, Payment, and Github Issue bundles are pointing at a Project, which in turn points to an Account bundle. Github Issue can also reference itself.

Continue reading…

Categories: Elsewhere

Paul Rowell: Why your company should get involved in the Drupal community

Sat, 23/01/2016 - 20:00

If you use Drupal either in house or as part of a service to clients you're already aware of how versatile and useful it can be if utilised well. One of the benefits of using Drupal is that it's free, but there are other benefits available to you if you decide to join in with the community.

Categories: Elsewhere

Drupal governance announcements: Coding standards proposals for final discussion

Fri, 22/01/2016 - 22:20

The TWG coding standards committee is announcing two coding standards changes for final discussion. These appear to have reached a point close enough to consensus for final completion. The new process for proposing and ratifying changes is documented on the coding standards project page.

The two issues being proposed are:

These proposals will be re-evaluated during the next coding standards meeting currently scheduled for February 5th. At that point the discussion may be extended, or the policy may be dismissed or ratified and moved to the ‘update documentation’ step.

Categories: Elsewhere Building a JIRA team planning app with BAT for Drupal

Fri, 22/01/2016 - 18:19
Last week we released BAT - our Bookings and Availability Management toolkit as well as a Drupal module for BAT.  We are using BAT to build the new version of our Rooms module as well as other products. However, BAT is much more than an engine for nightly bookings. It also allows us to build any sort of booking / resource management tool. So we asked: "What would it take to build a resource management tool to manage ourselves?". We have previously used a tool called ResourceGuru, and while it is a wonderful tool, we wanted to build something that integrated tightly with our project planning and issue tracking tool, Jira. The result actually impressed us. We thought it would be a useful exercise, but we didn't anticipate getting a tool that we could use daily this early in the game. Read on for some of the details of what we did.
Categories: Elsewhere

Acquia Developer Center Blog: Acquia U: "Jump in and own it. Kickstart your career." - meet Amy Parker

Fri, 22/01/2016 - 18:05
Image: Body: 

Amy Parker, the Director of Acquia University--aka Acquia U--and I sat down in Acquia's downtown Boston headquarters to talk about Acquia's technology boot camp. The course covers much more than Drupal; the curriculum is designed to produce people able to work in tech companies: Besides a whole lot of Drupal and related technologies, it includes agile methodologies, project management tools, troubleshooting tickets, presentation skills, and more. Listen to our whole conversation to learn more.

"If you think about it, the very senior-level, highly skilled Drupalists are already employed and there isn't a succession plan and there isn't a talent pipeline. This program is really not just about Acquia's ability to hire internally; it's about partnering with our community to be able to offer an opportunity to ramp up their teams."

What is Acquia U?

Amy: "Acquia U is a 14-week, hands-on, intensive, technical boot camp to take people who have a strong interest in web technology and bring them into the world of Drupal. [At the end of the course], depending on their skills coming in, they're prepared to become people who can build websites using Drupal and integrate it into a larger digital platform and a digital strategy ... Entry level Drupalists!"

"Drupal is unknown to people entering into the career market in web technologies. The problem that we find from an education perspective is that it's not taught in a lot of high schools or universities," even among computer science majors.

Interview video - 25 min.

Origin story

A need arose in 2011--Amy mistakenly says 2001 in the recording--to hire more people faster and Acquia U was launched as an internal initiative, taught by Acquians. "It was very successful. They had nine people in the program. Eight completed the program. Eight were hired here at Acquia." And many are still at Acquia, while others have moved on to careers outside the company. "I don't consider that a loss, because those are Drupal evangelists out in other technology fields."


Acquia U's mission is to help make Drupal better known overall, help create more interest and Drupalists, and connect people with careers in Drupal. It also has the ambition to try to fill the gap Amy describes thus: "There's no way that we can't not give back talent into the organisation. Acquia is struggling to hire. All Drupal companies are struggling to hire. If you think about it, the very senior-level, highly skilled Drupalists are already employed and there isn't a succession plan and there isn't a talent pipeline. This program is really not just about Acquia's ability to hire internally; it's about partnering with our community to be able to offer an opportunity to ramp up their teams."

"In the next year to two years, I would like to see this program filling the void of junior-level talent in a lot of different spaces: whether it's in a non-profit, at a partner company, a client company, at another digital, Drupal shop."

The ideal candidate

"For me, it's about finding people who might not otherwise get a job here ... so I look in other places. If I think about it, somebody who's looking for a position at Acquia U may not know how to navigate a Drupal career path, so I go to places they may not have looked before. Going to the places where you might not think to traditionally find Drupalists is the place to go to find new Drupalists."

"I have a strong interest, as does Acquia, in hiring people in underserved populations: women ... veterans ... different age groups. My vision of the ideal candidate has nothing to do with age or background. The foundation of being successful here is potential. I define potential on:

  • What's motivating them: "If I'm motivated by giving to the community or participating in something larger than myself, that's awesome."
  • Curiosity: "One of my favorite questions [to ask] is 'What's the last creative thing that you did? What's the last thing that you did that was really interesting?'"
  • "We look for people that are motivated by their sense of integrity and wanting to learn.""

"A good candidate, the people that are successful and come through the program ... are the people that demonstrate strong interest in something innovative, creative, fast-paced. They're looking for not just a job."

More Amy and Acquia U on the web!
  1. Acquia Podcast with Keith Donaldson, Acquia U graduate, 2015: Drupal, the fastest way from idea to MVP
  2. Amy spoke with Brian Lewis in 2015 on Modules Unravelled Podcast 132, AcquiaU (here's the video of their conversation).
  3. Amy was a guest on DrupalEasy podcast 141 in 2014.
Guest dossier Workflow: PendingNode rate: 0Make this a featured podcast: Author Logo: 
Categories: Elsewhere