Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 2 hours 12 min ago

Jacob Rockowitz: Webform, Drupal, and Open Source...Where are we going?

4 January 2018 - 11:12am

Tagged the first release candidate on Christmas Day

On the one year anniversary of the first beta release of the Webform module for Drupal 8, I tagged the first release candidate. The most significant aspect of moving the Webform module into the release candidate phase is the stabilization of key APIs and plugins. Moving forward, most new features that are not tightly coupled to the Webform module's core functionality will be developed in dedicated experimental or contrib modules.

What’s next?

My first goal is to start focusing on the recording of Webform-related training materials and my upcoming presentations at Drupal Camps and conferences. I also want to encourage and help more people get involved and contribute to the Webform module and Drupal.

Contributing to the Webform module and Drupal

People are continually commenting on my dedication to the Webform module. As such, I think it’s important to explain why I am so committed to the success of the Webform module and Drupal. The two most important factors that have allowed me to contribute so much time to the Webform module are as follows: I have the time available and I have a desire to improve my professional profile. I’m fortunate to have steady and reliable consulting income. For many years, I was a passive member of the Drupal community. But then my schedule freed up a bit, and I found that I had some extra time on my hands, so I decided to experiment and see what would happen if I fully committed myself to an open source project.

What I learned about maintaining an open source project

The role of being an open source project maintainer is daunting. I was surprised to learn that I am doing 95% of the...Read More

Categories: Drupal

OSTraining: Select Embeddable Media Assets in Drupal 8 with Entity Browser

4 January 2018 - 6:25am

If you already learned how to embed a media asset into CKEditor in this tutorial, you’d probably noticed that the media asset selection occurs through an autocomplete field.

This is not really a good experience for an editor. Nobody remembers every single name of every single asset to embed. There are quite a few modules in Drupal 8, which can help you enjoy your browsing task. 

In this tutorial, you’re going to learn how to configure the Entity Browser Module, in order to select Media assets and embed them in your text editor.

Categories: Drupal

Evolving Web: Sidr Module for Drupal: Responsive Menus and Regions

4 January 2018 - 6:19am

In the last few projects I've worked on at Evolving Web, we've come across a common requirement: having a collapsible section of the site on mobile devices containing the site's logo, a menu and other Drupal blocks. The Responsive Menus module is quite popular, but it only works with menu blocks - no logo, no custom text. Since we couldn't find any contrib module to solve the problem, we wrote some custom JavaScript to integrate a JavaScript plugin called Sidr, which inspired me to write a Sidr integration module for Drupal. In this article, we will discuss how the module works and how you can get it working in your next project.

Here's a screenshot from a quick demo site I prepared. You click on the hamburger menu, and the black sidr region appears on the left. You click it again and the region slides back out.

A quick demo with a Sidr panel in Drupal with the Dark theme

Installing the Sidr module and libraries

To install the module, we must install the module files and then the Sidr libraries.

  • Download the Sidr module into the modules or modules/contrib directory in your Drupal project and install the module
  • Install the Sidr libraries
    • Download the version of Sidr recommended in the module's README file, which at the time of writing this article is Sidr 2.2.1
    • Once downloaded, copy the dist directory in the Sidr project to the libraries directory in your Drupal project and rename it to sidr
    • At this point, there should be valid JavaScript file at DRUPAL/libraries/sidr/jquery.sidr.js and the Drupal status report page should show the Sidr libraries as Installed

Sidr library status

  • Configure the Sidr theme from the admin/config/media/sidr page. Here's some quick info about the themes:
    • The dark (default) and the light themes are provided by Sidr.
    • Typically, for a project with a custom look and feel, you'll use the bare theme. This provides minimal CSS, allowing you to style the .sidr element and its children in your theme. Yeah!

Sidr global settings

Congratulations! You now have the module installed. All that's left now is a bit of configuration.

Configure collapsible content

Depending on the project requirements, you might have one or more sidr instances. For this article, let's say you want a sliding panel on the left with the following contents:

  • Site logo (the site branding block).
  • The main menu (the main menu block).

We can achieve this using two different approaches:

With a custom region (recommended)

Create a custom region named, say, Drawer (Left) in your theme where you can place whatever blocks you want to show in your Sidr. We will then configure the Sidr plugin to use the contents of this region to populate the collapsible panel (discussed below).

Note: Make sure you hide this region using CSS because Sidr will copy the contents of the region in to a div.sidr element during its initialization.

Without a custom region

If all your blocks are already present on your page, you can use multiple jQuery selectors in the Source configuration for the Sidr trigger block (discussed below) and the Sidr plugin will copy the contents of those elements and put them in the Sidr. Sidr will not copy the elements for the jQuery selector, but all of their children. This is the reason why I prefer to use a custom region. Using the above-mentioned custom region approach, you can preserve wrapper elements which give you nice CSS selectors for theming your Sidr.

Configure a trigger button

Now that we have set up the contents for the collapsible region, we are ready to create a Sidr trigger block. This trigger block will provide a button to open and close the Sidr panel. To do this,

  • Go to the Block management admin/structure/block page.
  • Click the Place block button for the region where you want to place the trigger button (usually somewhere in the header).
  • Choose the Sidr trigger block, configure it and save it. Some of the configuration options have been discussed below.

Sidr trigger settings

Trigger text and icon

The trigger text is the text which is displayed on the Sidr trigger button. You can also enter some custom HTML in the Advanced settings > Trigger icon field to configure an icon, say, a hamburger icon or an .

Note: It is compulsory to have either a trigger text or a trigger icon. You can also have both if you want.


The source is from where the Sidr panel will be populated. It can be one of the following:

  • A jQuery selector: If you provide a jQuery selector, the inner HTML of the selected elements will be copied into the relevant Sidr panel. You might be interested in the renaming option which makes Sidr rename the ID attributes of the copied elements to avoid getting repeated DOM IDs. Here are some examples:
    • Using a custom region, source should look like .region-drawer-left or .region-drawer-right or whatever you name your custom region.
    • Without a custom region, you will have to refer to various blocks like #block-site-branding, #block-main-menu, #block-copyright-notice.
  • A URL: If source is a URL, the content on the URL will be fetched via AJAX and displayed in the Sidr panel.
  • A callback: You can even provide a JavaScript function as the source, in which case, the contents returned by the callable will be used to populate the Sidr panel. If you do not like the idea of copied elements provided by the jQuery selector option above, a callback might give you more flexibility.

Most of the Advanced settings are optional and you can learn about them by reading the Sidr documentation. Once you have configured everything, all you'll be missing is some custom styling to bring your Sidr to life.

Feel free to leave comments about problems you face and any suggestions you might have. You might want to read the Sidr module's project page and issue queue for the latest updates.

+ more awesome articles by Evolving Web
Categories: Drupal

Appnovation Technologies: Dans la Rue and Appnovation: Helping the Homeless

4 January 2018 - 12:00am
Dans la Rue and Appnovation: Helping the Homeless Dans la rue is a Montreal-based organization dedicated to helping homeless and at-risk youth. Dans la rue cares for the immediate needs of youth and helps equip them with the skills and resources they need to lead more autonomous and rewarding lives. Appnovation worked with Dans la rue to build a French and English Volunteer Appli...
Categories: Drupal

LevelTen Interactive: Managing your DrupalVM Environment: Vagrant Plugins and SED Scripts

3 January 2018 - 10:00pm


In our last post, we talked about how great DrupalVM is by providing Drupal developers a robust development environment that can be used with multiple types of applications. And while the installation process is fairly straightforward, it can take some trial and error in updating your config.yml file for the perfect hosting environment. Are you managing multiple virtual machines for multiple client projects? This can take up a significant amount of space on your computer’s resources (RAM and hard drive space). This post will walk you through how we addressed some of these...Read more
Categories: Drupal

Drupal Association blog: A new tab on user profiles

3 January 2018 - 1:42pm

Drupal Association programs and staff are sustained by you through memberships, partnerships, and donations. After 10 years, our system to collect funds for memberships and donations is changing. You'll now see a new tab on your user profile to access membership and donation giving history. This change will make managing donations more transparent and more cost-effective through decreasing some time spent on operations. We're also making some changes on the back-end to reduce the Drupal Association's PCI scope and to make membership easier to maintain.

What's changing

Payments will continued to be processed via (USD) and PayPal (EUR) and the PCI compliant forms will be hosted by Chargify. We chose Chargify in an effort to cut down on the amount of staff time needed to manage memberships. We're using Drupal's ability to integrate with third party tech to integrate with a payment processor solution. We'll be building the membership management tools right into your profiles.

Screenshot of Drupal Association Membership tab on user profile shows donation button on the page

We're rolling the new system out first with the Drupal Association Donation page and the membership pages will follow. If you are in the holiday spirit and you want to make a donation, do it from the new tab in your your user profile. Thanks for your support.

Changing the signup experience for the better

The experience signing up for membership through Chargify will be very similar to the current one, but now when you are invited to renew membership, you'll be able to manage your type of renewal— including starting or stopping auto-renewal, changing amount of payment, or canceling membership. Before this system, you'd have to contact us for help or wait for annual renewal emails to guide you to make changes.

Screenshot of user profile that will show Individual Membership details

After we've migrated member and donor giving history into the new system, you'll see more information on your user profile in the Drupal Association Member tab, including past gift dates and amounts. You'll be able to begin managing your membership renewals as soon as the migration is done. We hope these changes make your membership renewal experience better.

If you are interested in helping us test before the final updates are made, contact me and we'll walk through a test together. To provide feedback on the changes, please leave your thoughts on #2934492: Implement Chargify for memberships.

Thanks to Neil Drumm and Tim Lehnen for helping to get this work done, and thank you to everyone who continues funding our work through membership and donations.

Categories: Drupal

Tandem's Drupal Blog: Lando Share ~ Sharing is Caring

2 January 2018 - 4:00pm
January 03, 2018 Use the `lando share` command to expose a URL of your local Lando site. For example to view it on actual mobile devices for browser testing before you release it to the world! Why? We all know the amount of work it takes to get a site working and looking great across all browsers and screen sizes. The struggle is real. Pushing t...
Categories: Drupal

Roy Scholten: One to many or one to one, an example of a Drupal UX design decision

2 January 2018 - 2:57pm
02 Jan 2018 One to many or one to one, an example of a Drupal UX design decision

Short recap of an interesting discussion during today’s UX meeting.

About inserting media items from within the WYSIWYG editor. These could be different types of media files, like images, video and audio. You could even have different flavours for the same file type. For example with images, you might want to store different information and metadata on product images than on images used in press releases or for the company blog posts.

The question was how to provide the starting point(s) for this. Of course the goal would be to make this as transparent as possible, reducing the amount of administrative busy work to the required minimum. But, structured content does not yet create itself automatically, we do have to provide forms that present the required fields to fill out when adding a media item.

We discussed two basic approaches

There are likely more and there’s room for subtle variations inside these two as well.

Option 1: start with a single button to add media

  1. Click 1 generic “add media” button in the WYSIWYG editor that launches a media upload form
  2. Upload the media (image, video, audio, …) you want and save
  3. Figure out the media file type and present the corresponding form with the required (meta)data fields in a second step
  4. Save and return to the editor
Option 2: choose from multiple buttons to add a specific media item

  1. Find and click the add button for the media you want to create. There would be separate buttons for inserting an image, a video, an audio item
  2. Because the type is known we can directly show the form for the required (meta)data.
  3. Save and return to the editor.

(Although this list only goes to 3 instead of 4, there is a bit more work for the user to do in step 1: finding the right media button to click)

After a bit of back and forth we chose option 2, because:

  • A one-on-one relationship between WYSIWYG button and media type to create is easier to understand
  • The upload process can be contained within 1 step because the system knows upfront which form to show for the required info.
  • With this one-to-one relationship, per media type permissions can be handled more elegantly (you either have a audio upload button or you don’t)

The trade-offs are:

  • it’s not super elegant to require the user to do the upfront work of explicitly choosing the type of media to create.
  • With multiple types of media available we’ll have to see how to expose all those different options in the WYSIWYG editor toolbar.
Tags drupal drupalplanet
Categories: Drupal

Matt Glaman: Goodbye 2017, Hi 2018

2 January 2018 - 1:51pm
Goodbye 2017, Hi 2018 mglaman Tue, 01/02/2018 - 15:51

I spent the last 8 days of 2017 not touching my computer. Except for one night, after a few old fashions in, I decided to upgrade my MacBook to High Sierra "for the hell of it." Then New Years came, and we are riding into 2018. I'm going to also try to focus more on blogging. This was my goal for the end of 2017, but I did not stick to it. However, a tweet sent out by Dries resonated that goal and is something I plan to work more on.

Categories: Drupal

Acro Media: How To: Add a Product Taxonomy Category in Drupal Commerce 2

2 January 2018 - 8:00am

In the Urban Hipster Drupal Commerce 2 demo site, the catalog is made of up of a number of products grouped by taxonomy terms. These terms (Women, Men, Hats, Special, Clearance etc.) are grouped into Vocabularies (Category, Brand, Artist, Special, etc.), which can be referenced within a product in order to categorize it. A product can be assigned to multiple terms in multiple vocabularies, which allows us to create a variety of cataloging options.

We already have the catelog functionality configured using Apache Solr. So, in this Acro Media Tech Talk video, we quickly cover how to add new taxonomy terms and then add a product to the new term. It's easy!

Also, it's important to not that ANY content can be organized in this way, not just products. News, blogs, resources, videos, images, you name it! If it's content, it can be organized and filtered with taxonomy and Solr.

Urban Hipster Commerce 2 Demo site

This video was created using the Urban Hipster Commerce 2 demo site. We've built this site to show the adaptability of the Drupal 8, Commerce 2 platform. Most of what you see is out-of-the-box functionality combined with expert configuratoin and theming.

More from Acro Media Drupal modules in this demo

Categories: Drupal

LevelTen Interactive: Using DrupalVM for Drupal Development

1 January 2018 - 10:00pm

Over the past couple years, there has been a lot of improvements in developer tools and workflows for building new Drupal projects. As Drupal has grown over the past few years, we have seen added frameworks such as Twig and Symfony, workflow related tools like Composer and Drupal Console, and even new virtual environments. With added tools came increased complexity in development environments, and sometimes, even more issues if you’re building on more than on type of framework for client projects.

  In the past, we as developers were...Read more
Categories: Drupal Have Your Cake and Eat it Too: Elm Apps in Drupal Panels

1 January 2018 - 10:00pm

I tell my kids all the time that they can’t have both - whether it’s ice cream and cake or pizza and donuts - and they don’t like it. It’s because kids are uncorrupted, and their view of the world is pretty straightforward - usually characterized by a simple question: why not?

And so it goes with web projects:

Stakeholder: I want it to be like [insert billion dollar company]’s site where the options refresh as the user makes choices.

Me: [Thinks to self, “Do you know how many millions of dollars went into that?”] Hmm, well, it’s complicated…

Stakeholder: What do you mean? I’ve seen it in a few places [names other billion dollar companies].

Me: [Gosh, you know, you’re right] Well, I mean, that’s a pretty sophisticated application, and well, your current site is Drupal, and well, Drupal is in fact really great for decoupled solutions, but generally we’d want to redo the whole architecture… and that’s kind of a total rebuild…

Stakeholder: [eyes glazed over] Yeah, we don’t want to do that.

But there’s is a way.

Continue reading…

Categories: Drupal

Doug Vann: Easily Install Drupal 8 on Pantheon for FREE

1 January 2018 - 4:24pm
It's been 19 months since my last blog!What better way to break the silence than with a new blog post with a video!?!?! My goal for 2018 is to create a couple Drupal 8 videos a week and announce them with a blog post here at Module reiews, How-tos, Demos, & MORE. I'm also taking REQUESTS! What do you want to see? Be sure to let me know!


I still run into A LOT of people who could use assistance creating there 1st Drupal site. So, for them I am starting my 2018 series with a short and sweet video on launching a FREE Drupal 8 site on Pantheon. It is free, It is easy. And it is my primary preference for all of my Drupal clients. Follow along and see how easy it is to get a Fully Functional Drupal 8 site up and running.

Future topics will range from more Beginner topics as well as Intermediate and Advanced. So don't worry if this first offering doesn't apply to you.

YouTube Link -->

Or enjoy this embedded video player:

If you're not new, then share this with someone who is. And stay tuned for more videos!


VideosDrupal Planet

View the discussion thread.

Categories: Drupal

Enzolutions: My 2017 Recap

30 December 2017 - 4:00pm

It’s been awhile since I wrote a blog post. Actually, this is only the third one in 2017; a bit of a change from 2016 when I wrote almost 200 posts. If you are wondering why, let me explain with a quick recap of my milestones for this year.

Is there anybody else who has never seen snow before?

This is something difficult to understand or believe for some people, but after 40 years I had never seen snow before. This is the price that comes with living in tropical countries like Colombia and Costa Rica, but hey, even paradise has a downside!

I decided that I needed to check off this item from my bucket list, and in a big way. Fortunately, the Drupal community always helps me in my crazy travel adventures, and in this case the community of Iceland stepped up to the challenge.

To accomplish this goal and at the same time contribute to the local Drupal community, I attended the first Drupal Northern Lights at Reykjavik, Iceland, which by the way is a remarkable event organized by Baddy Breidert, Hilmar Hallbjörnsson, and the rest of the amazing open source community in Iceland.

Back to the snow, I tried to prepare as much as possible for this visit, but it seems you can never be ready enough for snow in Iceland. In the second day of my visit, we got the biggest snowfall since 1952, 51 cm in just a few hours.

After having experienced that, anything less than 51 cm of snow doesn’t feel like a proper snowfall to me :P. I guess that’s the problem when you set high standards!

In 2017 I also visited these places:

  • Metz, France
  • Ghent, Belgium
  • Brussels, Belgium
  • Berlin, Germany
  • Copenhagen, Denmark
  • Malmo, Sweden
  • Rome, Italy
  • Camberra, Australia
  • Sunshine Coast, Australia
Down Under

During my tour in Europe, I was notified that my family and I qualified to emigrate to Australia. So from Italy, I flew to Australia to arrange all the details for the arrival of my family, typical things like finding a place, buying some furniture, setting up the school for the kids, and a long etcetera.

But why move so far away? This is a recurrent question, since the common impression for most people is that Australia lays at the end of the world (well maybe not for people in New Zealand, Indonesia, and Papua New Guinea, our closest neighbors).

The answer is simple. My wife and I wanted our kids to pick up a close-to-native command of the English language, while at the same time have access to a better education system. Australia offers both, and although the immigration process is tough, it is also clearly stated, and if you read the fine print carefully it can actually be a straightforward process.

Is the *AMP stack dead?

I have been a Drupal Developer for many years, but before that, I was a straight-up PHP developer, Sysadmin, and even an Oracle Developer, among others in a long list of technologies that I’ve used in my professional career.

In addition, as CTO of Anexus (now weKnow), my role includes to constantly evaluate new technologies in order to improve the approach and solutions we offer to our partners. As a result, this year I decided to push myself to learn something new and far away from Drupal.

For years in our company we’ve had a gap between what the market offers and our requirements related to time tracking, HR, accounting, and capabilities. We tried many tools and SaaS platforms, but none of them truly fulfilled our needs.

After playing around with NodeJs and ReactJs, I decided to build a professional application, something that could fill this gap and finally resolve our problems.

After some analysis I decided to build this platform leveraging the following technologies:

Although the learning curve was a bit steep, we were able to release our first version after two and a half months of development.

We are still in the process of improving the tool, but so far we have exceed our initial needs. Right now we are at the stage of innovating and adding new functionality to extend the platform’s abilities.

A by-product of this project - at least 15% of our developers have become proficient in the technologies we used to build this tool, and are prepared to tackle any project that uses this stack. Our goal for 2018 is to increase that number to at least 50% of our company.

A sabbatical year? Maybe...

A sabbatical year is generally understood as a period for relaxing, pursuing academical or spiritual interests, and often traveling. In my case it is a bit of the opposite, as I’ve decided to avoid traveling outside Australia for a year to stay with my family a much as possible, starting in August 2017.

Why this harsh move? Well, for the last nine years I’ve been traveling almost non-stop, especially in the last couple of years. It definitely feels like I could use some “detox” from traveling, which while always interesting, is also extremely energy-consuming. That said, after two months without any traveling I started to feel a little anxious about not having a next trip to prepare. Talk about first-world problems!

At this point I’m completing four and a half months of staying put in Australia, and I don’t have plans to travel abroad in the first quarter of 2018, so I may be able to complete my goal after all... Or not. We’ll see!

This Time Next Year

This might sound geeky, but I think it would be interesting to use a Radar chart to graph the main aspects of our lives, where each variable could be an element such as love, professional life, family, financial wellbeing, health, and so on.

Maybe all is related with each one personality factors, below my personality factors described using a Radar Chart created using

The reality is that maintaining a balance with all these elements is really difficult, and each one constantly pulls from the other to gain more relevance. In my personal analysis, Health has been the aspect that has been neglected the most in the last decade. Fortunately I do not suffer from any condition, but I can definitely feel how my health has started to slowly decline. Nothing major, but it’s time to take precautions.

In order to incorporate some healthy changes, I made a challenge with Jesús and Omar, to see who can lose more weight in approximately a year, starting in August 2017. The end date is not set in stone because we live in different cities and countries, so the winner will be confirmed when we see each other again…. and in front of a neutral scale.

Let me share a baseline for reference. At the start of the challenge my weight was 102.8 kg (226 lbs), which equals to Grade II Obesity, definitely not very healthy. Back home I set up a diet plan and enrolled in a gym with the goal to attend at least six days/week.

After four months and two weeks I’ve lost 17.2 (37.91 lbs) kg and my new weight is 85.6 Kg (188.7 lbs), and I’ve finally started to feel more healthy. Though I’m still about 6 kg from my personal goal, I’m happy with the results so far and am confident I’ll be cashing that prize, so watch out Omar & Jesús!

Have a happy 2018!

Categories: Drupal

Entity Pilot: A new year brings a free tier!

30 December 2017 - 2:48pm

In response to regular requests for trial accounts, we've added a free trial tier.

Categories: Drupal Integrating a Drupal Text with Image Paragraph Bundle with Patternlab

30 December 2017 - 6:25am
Integrating a Drupal Text with Image Paragraph Bundle with Patternlab

Let's get to grips with having a text with image paragraph bundle set up with PatternLab, including having options for left/right for the image/text.

markconroy Sat, 12/30/2017 - 14:25

It's a fairly common design pattern for clients to request - upload an image, place text beside it, and choose whether we have the image on the left with the text on the right or vice versa. You can see my PatternLab version of it here (I also have an added option to set a dark theme for the background).

This is an example of the pattern with the image on the left and the text on the right.

Okay, first off, in my twig file, I have the following:

set classes = [


      {{ content.field_p_it_image }}

      {{ content.field_p_it_text }}


The only thing that is anyway special here is the paragraph.* variables. I have named them like so because this is what Drupal is going to give me back (since the machine name of those fields is p_it_alignment (I namespace all my entity fields with the first letter of the entity type - in this case the name stands for Paragraph Image (with) Text Alignment). This then allows me to have options in PatternLab for alignment and background style (light/dark). To achieve this, I have the following in my pattern's .yml file:

    value: left
    value: light

And in my image-with-text~right.yml file, I just need to override those variables like so:

    value: right

Following that, I have variables named content.field_p_it_image and content.field_p_it_text. Again, these are deliberately named like so, because this is what Drupal will give us back after I create a field with those machine names. Again and again, I try to keep my pattern variables in PatternLab the same as what I will get back from Drupal so when I come to adding the Drupal template, it's just one line of code to say "Hi Drupal template, you'll find the code for this file over here!". So, you can decide in PatternLab what the machine name for the Drupal fields is going to be and then get your site-builders to create fields with matching names, or you can ask your site-builders what machine names are being used in Drupal and then use those in PatternLab.

In my pattern's .yml file, I then set those variables like this:

  field_p_it_text: 'A Short Heading

Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

  field_p_it_image: ''

Finally, in our paragraph--image-with-text.html.twig file we have just one line of code:

{% extends "@building-blocks/image-with-text/image-with-text.twig" %}

You can probably guess what the sass looks like:

.image-with-text {
    display: flex;
    &.left {
      flex-direction: row;
    &.right {
      flex-direction: row-reverse;

The images with text above and below this post are examples of this pattern in use on a Drupal website.

This is an example of the pattern with the image on the right and the text on the left.

Categories: Drupal