Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 15 hours 51 min ago

Last Call Media: Once around the Sun with Drupal 8

17 November 2016 - 7:13am
Once around the Sun with Drupal 8 Alan Thu, 11/17/2016 - 10:13

This Saturday, Last Call Media and the Drupal Community celebrate the one-year anniversary of the official release of Drupal 8.  It’s been an exciting, fast-paced year of applying this great tool to our client’s and our own business challenges.  We have been proud to participate in the community’s efforts to refine the platform, and we frequently find ourselves recommending Drupal 8 as the right tool for a large number of client needs.

Categories: Drupal

Unimity Solutions Drupal Blog: Global Opportunities - Drupal Today!

17 November 2016 - 4:04am

Global Opportunities with Drupal!
Drupal Today is a much Larger Community with a Growing ecosystem, Evolved to be a mature Open Source Solution. All through this journey Drupal has stayed relevant, flexible & innovative. It’s amazing to see Drupal’s increased adoption in the Enterprise space. Drupal in India is growing not only in no but also in terms of contributions!

Categories: Drupal

Wunderkraut Sweden Blog: Remove X-Frame options and set Content-Security-Policy

17 November 2016 - 2:43am
Out of the box Drupal 8 has the header of a page request set to X-Frame-Options: SAMEORIGIN, that means that many modern web browsers does not allow the site to be framed from another domain, mostly for security reasons. This is good in many cases, but some web browsers has problem with this, and  X-Frame-Options is deprecated in favor of using Content-Security-Policy.  So why do you need a header like that? It is mainly for protecting a site for what is called Clickjacking Also, for some cases you want you site to be framed into another, and doing that out of the box with Drupal 8 is not possible in most modern web browsers if you don't alter the sites header in apache, nginx, varnish or in some other way. We are now going to look into doing in “some other way”, in this case with Drupal. I prefer using Drupal to control site headers because of the sites header is a part of the application.  This solution is… Read More
Categories: Drupal Blog: AGILEDROP: Drupal Camps in North America

17 November 2016 - 12:27am
After political discussions about the elections in the United States are slowly cooling down and the jokes on Donald Trump getting elected circle around the web in a lesser extent, we decided that it is time to look at something else. It's time to present you Drupal Camps organized in North America. We already presented Drupal Camps, which took place in Africa and Asia and concluded that Drupal Camps and activities are far more spread in Asia than in Africa. However, we expected that North America can offer a little bit more. We were right again. After we discovered that so many websites run… READ MORE
Categories: Drupal

Four Kitchens: Migrating a Drupal 7 Site with "Migrate Drupal"

16 November 2016 - 2:51pm

One of the things that any Drupal developer does for just about every client is migration. Learn how to speed up migration development… […]

Categories: Drupal

Drupal Blog: Drupal 8.2.3 and 7.52 released

16 November 2016 - 10:11am

Drupal 8.2.3 and Drupal 7.52, maintenance releases which contain fixes for security vulnerabilities, are now available for download.

See the Drupal 8.2.3 and Drupal 7.52 release notes for further information.

Download Drupal 8.2.3
Download Drupal 7.52

Upgrading your existing Drupal 8 and 7 sites is strongly recommended. There are no new features nor non-security-related bug fixes in these releases. For more information about the Drupal 8.2.x release series, consult the Drupal 8 overview. More information on the Drupal 7.x release series can be found in the Drupal 7.0 release announcement.

Security information

We have a security announcement mailing list and a history of all security advisories, as well as an RSS feed with the most recent security advisories. We strongly advise Drupal administrators to sign up for the list.

Drupal 8 and 7 include the built-in Update Manager module, which informs you about important updates to your modules and themes.

Bug reports

Both Drupal 8.2.x and 7.x are being maintained, so given enough bug fixes (not just bug reports) more maintenance releases will be made available, according to our monthly release cycle.

Change log

Drupal 8.2.3 is a security release only. For more details, see the 8.2.3 release notes. A complete list of all changes in the stable 8.2.x branch can be found in the git commit log.

Drupal 7.52 is a security release only. For more details, see the 7.52 release notes. A complete list of all changes in the stable 7.x branch can be found in the git commit log.

Security vulnerabilities

Drupal 8.2.3 and 7.52 were released in response to the discovery of security vulnerabilities. Details can be found in the official security advisories:

To fix the security problem, please upgrade to either Drupal 8.2.3 or Drupal 7.52.

Update notes

See the 8.2.3 and 7.52 release notes for details on important changes in this release.

Known issues

See the 8.2.3 release notes or 7.52 release notes for a list of known issues affecting each release.

Categories: Drupal

Valuebound: Create Custom content type programmatically using Configuration API in Drupal 8

16 November 2016 - 9:08am

Drupal 8 has quality of utility tool could help anyone to develop custom module box. One of the tool is Drupal Console, where any developer can follow the Terminal Command and generate the boilerplate for source code. Which help us to reduce time to write chuck line of code. And also help us to overcome with error rate to produce zero marginal error. Kind of typo & syntax error ;) . if you haven’t aware of Drupal Console then just go through it by installing on your local Drupal 8 instance. For fresh code like creating block or user or view or node I will suggest you boilerplate code. But as a New learner my suggestion would be always to write line by line code.

Here is the command that you need to generate Custom Content type using Drupal Console  generate:…

Categories: Drupal

Redfin Solutions: Redfin's Front-End Shell: Bundler, Susy, Compass, Breakpoint, and more!

16 November 2016 - 7:51am
Chris November 16, 2016 Redfin's Front-End Shell: Bundler, Susy, Compass, Breakpoint, and more!

While we at Redfin don't really yet have a full on base theme for every project, one thing we do use is our "bundler shell." This forms the basis of any Drupal 7 or 8 theme we build, and in fact, is really just the framework for the front-end (that is, this shell is useful outside of the realm of Drupal, actually).

First things first - here's the code.

Let's go ahead and begin the dissection...

Categories: Drupal

OSTraining: Beginners Guide to Contributing to Drupal : Prerequisites

16 November 2016 - 6:23am

Welcome to the first part of our series on contributing to Drupal for beginners.

Categories: Drupal

Drupalize.Me: Drupal 8 is 1 Year Old

16 November 2016 - 5:31am

It’s hard to believe, but it has been 1 year since Drupal 8.0 was released to the world. We’re celebrating Drupal 8’s first birthday on November 19th by giving FREE access to our full [Drupal 8 Migration Guide]( over the celebration weekend! This Saturday, November 19th through Monday, November 21st you can learn how to use the new core migration system to upgrade your Drupal site or import content from external sources. It’s time to get using Drupal 8!

Categories: Drupal

Unimity Solutions Drupal Blog: Dwell in Drupal 8 - Launching Webinar Series to Celebrate Drupal 8's First Birthday

16 November 2016 - 4:25am

At Unimity, we are celebrating Drupal 8’s first birthday by launching a new webinar series “Dwell in Drupal 8”!!

Categories: Drupal

Valuebound: Why big government websites are switching over to Drupal

16 November 2016 - 4:14am

The open source Drupal CMS powers some of the biggest government websites. Now what do government websites and media & entertainment websites have in common? A lot of functionalities and end goals are similar. Media websites have subscription forms, personalized data delivery, large data warehouses, events and related forms, publishing tools, marketing tools, transactions etc.

The Georgia Technology Authority was running 65 state government websites on two different versions of proprietary software - Vignette 6 and Vignette 7, one of which is no longer supported. It had become cumbersome and expensive. Apart from that, moving all the 65 sites to Vignette 8 was too much of a hassle. CTO Steve Nichols says, “As we dug in, all the obvious best choices were open source,”. The…

Categories: Drupal Featured Case Studies: YHA Groups

15 November 2016 - 9:35am
Completed Drupal site or project URL:

YHA (Youth Hostels Association) is a charity which has provided Hostel accommodation to people of all ages and backgrounds for over 85 years. The majority of YHA's business is split between two sites; YHA which allows families and individuals to book accommodation, and YHA Groups which is aimed at groups and schools who are looking to book accommodation for groups of 16 or more people.

This project covered YHA Groups, a brand new Drupal 8 design and build to replace the existing site.

Key modules/theme/distribution used: BootstrapIMCEColorboxDraggableViewsgeolocationImage Widget CropSlickAdmin ToolbarContact BlockContact StorageContact Storage ExportStage File ProxyShieldPathologicOrganizations involved: MicroserveTeam members: rickdonohoemangy.foxAshley Georgetim.cliffordmarkpavlitskiSophie.SK
Categories: Drupal

J-P Stacey: A quick rundown of what using Drupal 6-to-8's migration UI feels like

15 November 2016 - 8:00am

Recently, I was asked to migrate a fairly straightforward website from Drupal 6 to 8: a blog; some feature articles; some static pages; a fair amount of uploaded images. I thought it would be a great candidate for reviewing what the Migrate UI bundled with core looks like, since its introduction in Drupal 8.1.0.

Although the Migrate framework more generally permits arbitrarily complex migrations, many people's first port of call will be the UI, so I thought it would be interesting to chart a user journey through its use: highlighting what went well, what went badly, and (most importantly) what looked problematic but turned out to be straightforward.

Read more of "A quick rundown of what using Drupal 6-to-8's migration UI feels like "

Categories: Drupal

Web Wash: Using Display Suite in Drupal 8: How to Use Switch View Mode Sub-module

15 November 2016 - 8:00am
In this tutorial series on using Display Suite, we've cover the two fundamental use-cases of the module: how to modify layouts and use Display Suite fields. Now we'll take a closer look at one of its sub-modules: "Display Suite Switch View Mode". The "Display Suite Switch View Mode" module allows an editor to switch which view mode is used on a content page. By default, Drupal will use the "Full content" view mode (if enabled) on content page, i.e., "node/1". But what if you want to choose between two different "Full content" view modes? Well this module has you covered. So instead of being stuck with a single view mode, you could have one for a layout with a sidebar and another for pages with go full width. In this tutorial, you'll learn how to configure and use the"Display Suite Switch View Mode sub-module.
Categories: Drupal

Zivtech: Use Gulp for Drupal 8 with Teams, Part 2: Creating tasks

15 November 2016 - 7:09am

This post is the second in a series covering Zivtech's usage of Gulp for front-end development in Drupal 8.

In the last post, I covered how to setup Gulp for teamwork on Drupal 8 projects. In this post, I'll go over how to get started with writing Gulp tasks. I'll also break down a specific task for Sass linting to ensure good code quality.

Maintainable and Readable Gulp tasks

With any mid-to-large sized Drupal 8 theme, it's really easy for the main Gulp file (gulpfile.js) become unwieldy and complex. With dozens of tasks doing all kinds of automated work, before too long, gulpfile.js becomes a soup of illegible code.

Additionally, members of your team might have different ways of naming Gulp tasks. One person might write a Sass building task called "buildSass" and another might create an identical task called "css."

It'd be nice to strip down gulpfile.js, make it readable, and somehow compartmentalize each task separately. Also, we want to cut down on task naming variations and create a unified system for structuring our tasks.

My current favorite way to handle these wishes is gulp-require-tasks. Basically, each task is written as an individual, CommonJS style module. Then, the tasks are arranged in directories, and that directory structure defines the task name. It is a very simple and predictable way to setup Gulp tasks.

Structuring Gulp tasks

Start off by creating the file tree structure below:

├── project/ │ ├── .gitignore (ignore node_modules, gulpfile.yml) │ ├── package.json │ ├── gulpfile.js │ ├── default.gulpfile.yml │ ├── sass │ │ ├── styles.scss │ ├── js │ │ ├── scripts.js │ ├── gulp-tasks │ │ ├── styles │ │ │ ├── lint.js │ │ │ ├── build.js │ │ ├── scripts │ │ │ ├── lint.js │ │ │ ├── build.js

The YAML settings file, default.gulpfile.yml, was discussed in the last post of this series, if you need a refresher.

gulp-require-tasks lets these tasks be accessible according to their structure. For example, to build the styles, you'll run "gulp styles:build" and to lint the JavaScript, you'll run "gulp scripts:lint." If you don't like the colon delimiter, you can change that too.

Update Gulp settings

In the last post we started the default.gulpfile.yml, and now we'll edit that same file to add in settings for the Gulp tasks we'll create in this project.

Open the file: it should look like this:

themeName: "myTheme" themeDescription: "myTheme description"

Expand on that by adding settings for source and destination paths of Sass and JS:

themeName: "myTheme" themeDescription: "myTheme description" styles: src: "sass//*.scss", dest: "css" lint: enabled: true failOnError: false scripts: src: "js//*.js", lint: enabled: true failOnError: false

Under the "styles" and "scripts" sections of the YAML, you can see I added some linting options too. From within the YAML settings, people can enable or disable linting, and also decide if they want the Gulp process to stop when linting errors are detected.

Pulling these settings out of the Gulp tasks themselves and into this YAML file means that developers don't have to search through the tasks looking for settings to change. Instead, they have every setting exposed to them in this one, concise file.

Importing tasks for Gulp

We haven't written any Gulp tasks yet, but we can go ahead and setup importing them so they can be used.

Open up the gulpfile.js we started in the last post. It should look like this:

(function () { 'use strict'; var gulp = require('gulp'); var yaml = require('js-yaml'); var fs = require('fs'); var assign = require('lodash.assign'); // read default config settings var config = yaml.safeLoad(fs.readFileSync('default.gulpfile.yml', 'utf8'), {json: true}); try { // override default config settings var customConfig = yaml.safeLoad(fs.readFileSync('gulpfile.yml', 'utf8'), {json: true}); config = assign(config, customConfig); } catch (e) { console.log('No custom config found! Proceeding with default config only.'); } })();

If you recall, we loaded the default.gulpfile.yml and overrode that with any settings from gulpfile.yml if it exists. The gulpfile.yml file has the exact same structure has default.gulpfile.yml, but settings can have different values. This lets other developers on the team override some settings if needed.

At this point in gulpfile.js, the config is loaded and ready to be used. Next, we integrate gulp-require-tasks.

(function () { 'use strict'; var gulp = require('gulp'); var yaml = require('js-yaml'); var fs = require('fs'); var assign = require('lodash.assign'); var gulpRequireTasks = require('gulp-require-tasks'); // read default config settings var config = yaml.safeLoad(fs.readFileSync('default.gulpfile.yml', 'utf8'), {json: true}); try { // override default config settings var customConfig = yaml.safeLoad(fs.readFileSync('gulpfile.yml', 'utf8'), {json: true}); config = assign(config, customConfig); } catch (e) { console.log('No custom config found! Proceeding with default config only.'); } gulpRequireTasks({ path: process.cwd() + '/gulp-tasks', arguments: [config] }); })();

Setting up gulp-require-tasks is super easy. We tell it where our gulp tasks are located, in the "gulp-tasks" directory.

Then, to each module (i.e. 1 module will be 1 Gulp task) in the directory, gulp-require-tasks passes arguments to each task. The first argument is always gulp itself. The "arguments" setting for gulp-require-tasks is an array of other things you want to pass to each module. I've opted to pass in "config," which is the object representing the settings merge in the YAML files.

This is essentially all you need in gulpfile.yml. However, I also like to add shortcut tasks too, that combine other tasks for quicker use. For example, general "build" and "lint" tasks might be like this:

gulp.task('build', ['styles:build', 'scripts:build']); gulp.task('lint', ['styles:lint', 'scripts:lint']);

Modular Gulp tasks

Let's start off creating the Sass linting task. To help with this, I recommend using gulp-sass-lint. You'll want to read over how to setup sass-lint, which I won't cover in detail here. Essentially, you create a .sass-lint.yml file in the root of the project. That file contains all the rules you want to validate; for example, should developers avoid styling with IDs or should they use RGB rather than HEX values for colors.

After sass-lint rules are in place, open up the styles linting file. Here you'll see the guts of the linting task:

'use strict'; var cached = require('gulp-cached'); var sassLint = require('gulp-sass-lint'); var gulpif = require('gulp-if'); module.exports = function (gulp, options) { if (options.styles.lint.enabled) { return gulp.src(options.styles.src) .pipe(cached('styles:lint')) .pipe(sassLint()) .pipe(sassLint.format()) .pipe(gulpif(options.styles.lint.failOnError, sassLint.failOnError())); } else { return console.log('css linting not enabled'); } };

For the three required packages, you'll want to "npm install" them of course. Don't forget the "--save-dev" flag to get those packages stored in package.json!

The bulk of the code exists within the standard, CommonJS "module.exports" directive. A Gulp process is passed into the task as well as the set of options from default.gulpfile.yml.

We start off by running a quick if/else check so that we short-circuit out of this task if the user disabled Sass linting. Then, we pipe in the files that we selected in the Gulp settings' "styles.src" section. Files are then piped through gulp-cached, which keeps a list of the source files (and contents!) in memory. This makes the task faster.

Next, the styles are linted and the results are formatted and reported out to the console. Finally, we use gulp-if to determine if the Gulp process gets terminated now should there be linting errors.

The sky's the limit

I leave it as an exercise for the reader to go about developing the other Gulp tasks. In the next post, I'll go over some other, more complicated Gulp tasks to show more advanced usage. Until then, you're more than welcome to look over and reference our own Gulp tasks we publish for Bear Skin.

Posts in this series

  1. Use Gulp for Drupal 8 with Teams, Part 1: Gulp Setup
  2. Use Gulp for Drupal 8 with Teams, Part 2: Creating tasks
Categories: Drupal

Savas Labs: Using MailChimp API v3.0 to subscribe users to email lists in Drupal custom modules

14 November 2016 - 4:00pm

A tutorial that shows you how to use Composer and ThinkShout's new PHP library for MailChimp API v3.0 to easily subscribe users to mailing lists in Drupal custom modules without using the MailChimp contributed module. This is a follow-up to a previous post that used the old API, and also includes some new Drupal 8 specifics. Continue reading…

Categories: Drupal

Mediacurrent: Good Form: 5 Tips for a Smooth Sign-up Process

14 November 2016 - 11:10am

A lot of effort goes into engaging your visitors to ‘Sign-up’ or ‘Contact’ you. You send them a warm and fuzzy invitation to complete the form, tell them all the great reasons why they should complete the form… but who likes to complete a form? You can help guarantee a smooth sign-up process and increase the completion rate of your web forms with these five tips.

#1 Make it Flow

Before you begin designing that web form, it is always good to create a User Flowchart. Working to establish the form completion process from start to finish, a flowchart will help you:

Categories: Drupal

Chromatic: Introducing ""

14 November 2016 - 10:06am

We find that there's still uncertainty out there around upgrading to Drupal 8. The natural answer in the Drupal community is, "Yes, of course go with Drupal 8!", but in the world of tight deadlines and tighter budgets, the answer isn't so clear. Enter, an interactive tool we built to help the community answer that very question.

Categories: Drupal

Acquia Developer Center Blog: Contribution Stories: Preston So, Decoupled Drupal with Ember

14 November 2016 - 9:49am

Drupal gets better when companies, organizations, and individuals build or fix something they need and then share it with the rest of us. Our community becomes better, stronger, and smarter when others take it upon themselves to make a positive difference contributing their knowledge, time, and energy to Drupal. Acquia is proud to play a part, alongside thousands of others, in some of the stories making tomorrow’s Drupal better than today’s. One of them Preston So’s.

Tags: acquia drupal planetemberjavascriptfront enddrupalconDublin
Categories: Drupal