Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 5 hours 28 min ago

Drupal Modules: The One Percent: Drupal Modules: The One Percent — W3C Validator (video tutorial)

5 September 2017 - 4:21am
Drupal Modules: The One Percent — W3C Validator (video tutorial) NonProfit Tue, 09/05/2017 - 06:21 Episode 34

Here is where we seek to bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate W3C Validator, a module which helps in maintaining a properly coded site.

Categories: Drupal

ADCI Solutions: Security for Drupal and related server software

5 September 2017 - 2:49am

It’s impossible to create a system which is absolutely safe but Drupal developers try. Thanks to the big community of developers there is a lot of documentation and useful examples of the proper configuration of Drupal website security and keeping this configuration up-to-date.

This article focuses on discussing common server settings, the configuration of a web server, PHP, and a database, and, of course, Drupal. It provides clues which should help the server and website administrators to audit the security of the entire system.


Read about security for Drupal and related server software


Categories: Drupal Blog: AGILEDROP: Our Drupal Blogs from August

5 September 2017 - 12:31am
It's the beginning of the month, so it is once again time to look at all our blog action from the previous month. Here are the blog topics we covered in August. We began the previous month with Developer Onboarding Tips from our Commercial Director Iztok Smolic. He has revealed an optimized onboarding process for developers who join new teams. Our second blog topic was Accepted Business Sessions for DrupalCon Vienna. Namely, our commercial director Iztok Smolic was invited to the Business track team. Together with Janne Kalliola (CEO of Exove) and Stella Power (CEO of Annertech) he prepared… READ MORE
Categories: Drupal

heykarthikwithu: Aegir on Docker - Develop, Test, With Easier Deployment.

3 September 2017 - 4:30am
Aegir on Docker - Develop, Test, With Easier Deployment.

Aegir with Docker would be one of the brilliant option for Better Drupal Development and Faster Deployments.
Docker, which solves the overhead of virtualization layer. And Aegir, which gives the best possible Drupal Multisite hosting.

heykarthikwithu Sunday, 03 September 2017 - 17:00:43 IST
Categories: Drupal

Drupal core announcements: Coding Standards Change Proposals 9/2

2 September 2017 - 5:17pm

The TWG coding standards committee is announcing two issues for final discussion. Feedback will be reviewed on 9/19/2017.

New issues for discussion: Interested in helping out?

You can get started quickly by helping us to update an issue summary or two or dive in and check out the full list of open proposals and see if there's anything you'd like to champion!

Categories: Drupal

OSTraining: How to Show Simple Timeline with Views

2 September 2017 - 2:46pm

With "A Simple Timeline" contribution module in conjunction with the Drupal core module "Views" you can present a nicely looking and well organized vertical timeline of Drupal entities. It could be, for example, teasers. This is exactly what you will learn in this post. 

For the purpose of this tutorial, I will use a sequence of the Summer Olympic Games of this century. Let's get started!

Categories: Drupal

Drupal core announcements: 8.4.0 release candidate phase begins week of September 4; no Drupal 8.3.x or 7.x patch release planned

1 September 2017 - 4:41pm
Drupal 8.4.0 release candidate phase

The release candidate phase for the 8.4.0 minor release begins the week of September 4. Starting that week, the 8.4.x branch will be subject to patch release restrictions. Closer to the 8.4.0 release on October 4, we will limit the changes to critical bugfixes and other high-priority changes. You can help by ensuring that the issue priority is set correctly for major-priority issues, and that the branch field is set to 8.5.x (for disruptive changes) or 8.4.x (for patch-release-safe bugfixes) as appropriate.

8.4.0 provides stable, production-ready releases for several modules that were previously experimental, including Workflows, Datetime Range, Layout Discovery, Media, and Inline Form Errors. The release also includes several critical bug fixes and many other improvements for REST, content moderation, authoring experience, performance, and automated testing. You can read a detailed list of improvements in the announcement of alpha1.

Minor versions may include changes to user interfaces, translatable strings, themes, internal APIs like render arrays and controllers, etc. (See the Drupal 8 backwards compatibility and internal API policy for details.) Developers and site owners should test the release candidate to prepare for these changes.

8.5.x will remain open for new development during the 8.4.x release candidate phase.
Drupal 8.4.0 will be released on October 4th, 2017.

No Drupal 8.3.x or 7.x releases planned

September 6 is also a monthly core patch (bug fix) release window for Drupal 8 and 7, but no patch release is planned. This is also the final bug fix release window for 8.3.x (meaning 8.3.x will not receive further development or support aside from its final security release window on September 20). Drupal 8 sites should plan to update to Drupal 8.4.0 on October 4.

For more information on Drupal core release windows, see the documentation on release timing and security releases, as well as the Drupal core release cycle overview.

Categories: Drupal

Glassdimly tech Blog: 8: Disable Caption on Specific Entity Embed Types in CkEditor

1 September 2017 - 12:07pm

I had a devil of a time figuring out where captioning was coming from on my entity embeds.

Another team member had set it up, and I was just kind of baffled as to why captions were being offered on my entity embed forms.

It turns out that if you turn on captioning, you just get it for free on all of your embeds, and it's not configurable.

But... I don't want it for free!

Bah. Humbug. This free software doesn't have the features I think it should.

Alright, so here's how you turn off captioning:

Categories: Drupal

Nextide Blog: Decoupled Drupal and Ember - Authentication

1 September 2017 - 12:00pm
Decoupled Drupal and Ember - Authentication blaine Fri, 09/01/2017 - 15:00

This is part 2 of our series on developing a Decoupled Drupal Client Application with Ember. If you haven't yet read Part 1, it would be best to review Part1 first, as this article continues on with adding authentication and login form to our application. Shortly, we will explore how to create a new article but for that we will need to have authentication working so that we can pass in our credentials when posting our new article.

Categories: Drupal

Agaric Collective: Learn with dinarcon in his upcoming Drupal tour

1 September 2017 - 6:58am

In the next few weeks, Mauricio Dinarte (dinarcon on will be traveling to deliver his expertise to multiple Drupal events in Europe and America. He is on a mission to continue sharing the knowledge gained from many years as an active member of the Drupal community. Over the last few years he has presented numerous sessions and full day trainings at more than 18 Drupal camp— so you may have been at one of his presentations about Drupal basic concepts, twig recipes, or D8 migrations!

In addition to touring, Mauricio is very active in both local and global communities. He serves as a lead organizer of the Nicaraguan Drupal community where he has trained dozens of people, some of whom have made Drupal their career. He is also a member of the Drupal Global Training - Community Working Group and was recently added to Drupal's MAINTENANERS.txt as part of the mentoring team.

Here is where Mauricio will be presenting next:

Driven by passion to teach others what he has learned, Mauricio's skills go way beyond coding and he has been on a mission to take part in as many International Drupal Cons and Camps as humanly possible. If you happen to be in any of the cities on Mauricio's itinerary, please say hello to him and shake his hand for me. He has touched the lives of many developers and would-be developers, and started some on a path to follow in his footsteps.

Categories: Drupal

Third & Grove: Using Autocomplete Exposed Filters with Views

1 September 2017 - 6:14am
Using Autocomplete Exposed Filters with Views curtis Fri, 09/01/2017 - 09:14
Categories: Drupal

Drupal core announcements: For review: *DRAFT* Proposed product goals for Drupal 8.5/8.6(+) core

31 August 2017 - 9:48am

After consultation with the various initiative teams + core committers, we have created a DRAFT of proposed product goals for Drupal 8.5 (feature freeze: January 29, 2018) and Drupal 8.6+ (date TBD; ~late summer 2018).

The overall goals are divided into the following priorities:

  1. Migrate
  2. Media
  3. API-First
  4. Layouts
  5. Workflow
  6. Outside-In
  7. Out-of-the-Box
  8. Community Initiatives

Please let us know your thoughts at by September 6,
so we can hit the ground running in DrupalCon Vienna!

Categories: Drupal

Drupal Association blog: Kickstarting the Drupal Community Spotlight

31 August 2017 - 8:23am

Let's face it, it's been a crappy year in many ways. Internally and externally there are pressures that have made all of us think "what's the point?"

Instead of a world where we build and move forward together there is conflict, uncertainty, and so many why moments. From the macro to the micro, communities and ecosystems are struggling. The ideals of open source software often feel exploited, and the feeling of wonderment and discovery as we build together has been cast aside to something that feels very much like... well, work.

Drupal has not been immune. Like I need to tell you that.

For those of us that are optimists, and change makers, and idealists, and believers, nothing hits home the impact of our work than stories about how we use this code called Drupal to create impact. I think the world needs a little of that right now.

So, we have a team, we have energy and we are ready to shine the crap out of the brilliance of the people behind, in front, and to the side of Drupal.

I for one am looking forward to us injecting so much positivity into this community that even the chronic eye rollers won’t be able to help but give a slight smile.

A highlight of DrupalCon: the live code commit! Photo by Michael Cannon

The first thing we are working on is getting a way to start collecting stories. We might use a form. Or we might build an entire website. Just coz we can. So how about y’all give me a *whoop* *whoop* and start thinking about helping the Drupal Spotlight Committee unlock stories of Drupal impact from across the globe. It’s going to be fun.

Categories: Drupal

Acquia Developer Center Blog: Building an Open Source Photo Gallery with Face and Object Recognition (Part 2)

31 August 2017 - 7:10am

In part one of this two-part series, I explained why my Hackathon team wanted to build an open source photo gallery in Drupal 8, and integrate it with Amazon S3, Rekognition, and Lambda for face and object recognition.

In this post, I'll detail how we built it, then how you can set it up, too!

Tags: acquia drupal planetawsrekognitionmedia entitymedia gallerylambda
Categories: Drupal

FFW Agency: What Is Decoupled Drupal and Why Is It Important?

31 August 2017 - 6:40am
What Is Decoupled Drupal and Why Is It Important? David Hernandez Thu, 08/31/2017 - 13:40

The web has no shortage of digital trends that will pop up on your radar, and one whose momentum has increased over the last couple years is decoupling. In simple terms, the concept of decoupling means separating the frontend of your website from the backend. This means the components of a site that a visitor sees and interacts with (menus, page content, widgets) are built and displayed by software running in the web browser. The backend software, running on the server, accepts requests from the frontend for these different page components and returns them as essentially raw data.

With this full separation of concerns, each half of the website can focus on what it does best; the backend focusing on business logic and retrieval of data, the frontend focusing on display and user experience.

How Do We Achieve This?

This is where JavaScript frontend frameworks come into play. Popular ones include Angular, which we at FFW have used quite successfully on projects, or React, Ember, and many others too numerous to count. These frameworks enable a skilled developer to build a complex and highly interactive frontend without constant page refreshes that require the full attention of the backend.

To do this, it helps to have a powerful and flexible content management system, which doesn’t require lots of custom programming and reinvention of the wheel. This is where Drupal comes in. We’ve done this quite successfully with Drupal due to its robust and flexible API. Drupal 8 pushes this even further with its API first approach, and superior set of APIs.

Things like the built-in RESTful web services and superior content modeling tools do most of the work of building that backend system. Eventually the backend will communicate effortlessly with frontend systems and other applications and third-party service. This makes Drupal an effective content hub for distributing your content to any application that needs it.

Pros and Cons

When introducing anything new there are various factors to consider. A decoupled fronted can improve perceived performance and enhance interactivity. It can also do something very difficult with a fully baked content management system, where all rendering is handled by the backend. It enables developers and development teams to design and build a frontend almost completely independently from how the backend is developed. Your templating system, how CSS is built and managed, preferred methods for design components, all this can be treated like a separate project. Your designers and frontend developers don’t even have to have skills specific to the CMS you are using.

Life, of course, is never perfect. The main drawbacks become apparent when really thinking about how all this affects the way your site is built and managed. When using a CMS like Drupal, you start losing a lot of the key features that make it the tool it is. Can you use Drupal’s site building tools to, for example, change the order of fields displayed on a page? Things like that are now being hard-coded into the frontend. We also start losing some of the multilingual features, it plays less nice with metatags and other SEO features, and potentially increases the amount of work and skills needed to build your website. Those aren’t all unsolvable problems, but you’ll need to consider them when deciding where you are willing to devote the development time to building a decoupled site.

Two Approaches

If you understand the concept of separating your frontend and backend, you’ll start seeing two approaches while doing your research. “Headless” Drupal, which just means a fully decoupled frontend. The other is “progressive” decoupling. “What the heck is that?” you might say. Progressive decoupling blurs the line between what the frontend and backend are doing, rather than fully decoupling the two.

Progressive decoupling starts with a traditional website approach, with no decoupling, and the backend doing most of the work to produce the web page. Then, individual components that are deemed more interactive or take longer to produce are handled by the frontend. This approach plays a little more nicely with tools already present in your CMS, and is easier to implement on any existing website.

New Hotness Can Burn

Decoupling a website is a great way to solve some problems of the traditional website module. We certainly advocate it for projects suffering from those problems. But, as with all technology, make sure your use case has the need before forcing technology onto it. The decoupling approach can revolutionize your site visitor’s experience, but if forced to fit it can create new problems, increase development time, and inflate your costs.

A simple site, with few frontend performance problems, largely static content, and little need for things like user- or region-specific content, is not likely to need something like a decoupled frontend. My advice: Let your requirements always inform your solution. Technology is great at solving problems, but don’t let it create them by misapplying it to your project. If you want to talk about whether decoupled Drupal might be right for you, please contact us.

Tagged with Comments
Categories: Drupal Blog: AGILEDROP: Drupal 8 Modules we use at Agiledrop

31 August 2017 - 3:53am
In July, we were quite active in the field of modules. We have looked at the most popular ones and the best for Drupal 8. But as promised that was not our last stop. Namely, this time we will explore Drupal 8 modules we use at Agiledrop.   Our company has completed more than 200 projects. After the release of Drupal 8, many projects were dealt with in the newest version of this open-source platform. Some modules from Drupal 7 were moved to the core in Drupal 8. Moreover, there were also modules that we not converted properly to the Drupal 8. That all resulted in a fact that from around 12… READ MORE
Categories: Drupal

Dries Buytaert: Entertainment Tonight using Drupal

30 August 2017 - 6:11pm

Entertainment Tonight is the number one entertainment news magazine in the world, and has been on the air for over 30 years. Fans around the world rely on Entertainment Tonight to receive news and updates on their favorite celebrities and stars. I recently discovered that the newest star featured on Entertainment Tonight was Drupal 8!

Entertainment Tonight's new Drupal 8 website,, receives 19 million monthly unique visitors, making it the second most visited entertainment news website. Check it out at!

Categories: Drupal

Drupal Association blog: DrupalCon Europe: Co-creating a sustainable and valuable event

30 August 2017 - 1:38pm

The Drupal Association is honored to be the stewards of DrupalCon - a program created by the community for the community. It serves many goals ranging from uniting, growing, and strengthening the community to leveling up Drupal skills to accelerating contribution.

This year the Drupal Association has been focusing on DrupalCon Europe, so we can better serve the European community. While we certainly hear good things about the event from attendees, we also hear many comments like “it is too much of a US event” or “content isn’t appealing enough” or ”it is too expensive” or “there isn’t enough business value for sponsors” or “it’s not rock and roll enough”.

We see this play out in the attendance numbers, which decreased 14% on average each year since DrupalCon Amsterdam in 2014. Sponsor revenue decreased as well. And thanks to a more accurate financial reporting approach launched last year, we can see that DrupalCon Europe lost over €200,000 per event for the last several events.

This isn’t a sign of Drupal’s health. It is simply a sign that this event is not meeting the community’s needs. We can tell because European Drupal events grew in number, attendance, and type over the last few years. The community clearly wants a different kind of experience.

Drupal Association staff like Amanda Gonser, Program Manager, and Rachel Friesen, Director of Events, come to work each day simply to serve the community and create a DrupalCon experience that delights and helps people feel empowered to move Drupal forward. It pains us knowing that DrupalCon is not hitting the mark for the European community. And, it also pains us that we aren’t able to host DrupalCon in other regions like Asia or South America because they’re not possible with our current operational model for hosting events.

For staff, producing  a special DrupalCon experience is more than a job, it’s a personal mission. So, we are putingt a lot of care into figuring out how to make DrupalCon Europe better.

To come up with an event concept that is sustainable and loved (or provides unique value in business speak), we met with many European community members over a period of 10 months and even put out a community survey to gather input. Together, we worked through a process to find a better path forward.

It’s time to open this discovery process up to the greater community so you can understand at a deeper level the problems we are trying to solve and the process we’re using to solve them. Then, we want to discuss the options that we have identified so we can find the best path forward for DrupalCon Europe. I know that together, we can create a sustainable event that strikes at the needs of the European community.

To share the information we’ve gathered and to foster discussion, I am launching a blog series. Starting with this post, it will cover the following topics:

  1. The problem we need to solve for financial sustainability

  2. The problem we need to solve to create unique value

  3. Results from a proposal based on community input

  4. A new path forward for DrupalCon Europe

I encourage discussion in the comment section during the blog series and I will host BOFs at DrupalCon Vienna so we can talk through a path forward. We encourage members to read this blog series so you have as much background information as possible to help inform these discussions.

Thank you for caring about this important community event and giving input into what it looks like in the future.

Categories: Drupal Set Required and Optional Address Inputs for Address Field in Drupal 8

30 August 2017 - 1:34pm

This one is dedicated to all my fellow Drupalers. There’s no better exercise for a brain than reading ancient chinese poetry taming Drupal 8. When I’m bored, I turn to Drupal!

Recently I got my Drupal 8 Address module updated and it turned out that from now on street address ...

Read now

Categories: Drupal

Aten Design Group: Drupal 8 Menu System: Generate previous & next links

30 August 2017 - 11:20am

A recent project involved a large number of nodes, each with a menu item. The menu was hierarchical with three levels. Each node page needed a link to the previous and next item.

To generate previous and next links for the current page, I had first looked at loading the menu and traversing it. However, these objects are not easy to navigate. Even the render array is not in order. One would have to resort it by weight. Instead most of what we need is in the database. And ultimately, any classes that load menu items get them from the database anyway. In the simplest case, the previous and next items are simply the previous and next sibling menu items. However, previous could be the parent of the current menu item. If the current menu item is a parent, the previous item could be the last child of the previous sibling. Similar situations exist for the next item. Finally, one also has to account for there not being either a previous or next item. The below image better illustrates this relationship.

The links are generated in a block defined in code. To do this we extend Drupal’s BlockBase in a php file of the same name as the class.

class BookNavigation extends BlockBase implements ContainerFactoryPluginInterface {  

This should go in a custom module’s src/Plugin/Block/ directory.

To get this data and be able to traverse it, we start with the MenuActiveTrail class. Remember to include the necessary use statement:

use Drupal\Core\Menu\MenuActiveTrailInterface; $active_trail_ids = $this->menuActiveTrail ->getActiveTrailIds('MENU-MACHINE-NAME');

This gives us an array of menu item UUIDs starting with the current page at the first item on through to the top level menu item.

We need to break this up into current item and any parents.

$current_menu_id = $this->getMenuId($current_menu_uuid);   $parent_menu_uuid = array_shift($active_trail_ids); if ($parent_menu_uuid != '') { $parent_menu_id = $this->getMenuId($parent_menu_uuid); }   $grandparent_menu_uuid = array_shift($active_trail_ids);

While a menu could have more layers, for this purpose we only ever need to consider two levels “up” from the current item.

Using these menu UUIDs we can load all the child items from the database.

$this->menuStorage = $this->entityTypeManager ->getStorage('menu_link_content');   $siblings = $this->menuStorage->getQuery() ->condition('menu_name', 'menu-table-of-contents'); if ($parent_menu_uuid == '') { $siblings->condition('parent', NULL, 'IS'); } else { $siblings->condition('parent', $parent_menu_uuid); } $siblings = $siblings->sort('weight', 'ASC')->sort('title', 'ASC') ->execute();

This query gets all sibling menu items. It returns entity ids, not UUIDs. However, the parent is identified as a UUID. An extra query gets the entity id for a given UUID:

protected function getMenuId($menu_uuid) { $parts = explode(':', $menu_uuid); $entity_id = $this->menuStorage->getQuery() ->condition('uuid', $parts[1]) ->execute(); return array_shift($entity_id); }

The query also has entity_ids as the array indexes. The following will simply things:

$siblings_ordered = array_values($siblings);

We’ll similarly need all parent menu items, where the grandparent is used in the query.

Then to find the previous and next items:

$sibling_index = array_search($current_menu_id, $siblings_ordered); if ($sibling_index !== FALSE) { $prev_index = $sibling_index - 1; $next_index = $sibling_index + 1; }

This is for that simplest case. It gets slightly more complicated when the previous or next item could be a parent or the sibling of the previous or next parent.

if ($has_children && $prev_index > -1) { $prev_sibling_entity = $this->menuStorage ->load($siblings_ordered[$prev_index]);

Once you’ve determined the previous and next URL, populate a renderable array.

if ($prev_url) { $prev_url->setOption('attributes', [ 'class' => [ 'pager__link', 'pager__link--prev', ], ]); $items['prev'] = Link::fromTextAndUrl($prev_title, $prev_url)->toRenderable(); } else { $items['prev']['#markup'] = $prev_title; }   // Generate next content. if ($next_url) { $next_url->setOption('attributes', [ 'class' => [ 'pager__link', 'pager__link--next', ], ]); $items['next'] = Link::fromTextAndUrl($next_title, $next_url)->toRenderable(); } else { $items['next']['#markup'] = $next_title; } $build['nav_links] = $items;

Finally, to make sure the block is cached properly and cleared when needed, a cache context of 'url' is needed. This ensures the block is cached separately for each page, or url. A cache tag that corresponds to the menu name will ensure these items are cleared from cache whenever the menu is updated. That tag would take the format of ''.

$build['#cache'] = ['max-age' => -1]; $build['#cache']['contexts'][] = 'url'; $build['#cache']['tags'][] = '';

While this is a small amount of code, it handles menu systems of varying complexity, and the code is only run once per url after the menu is saved or all cache is cleared.

Categories: Drupal