Planet Drupal

Subscribe to Planet Drupal feed - aggregated feeds in category Planet Drupal
Updated: 14 hours 13 min ago

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

Aegir Dispatch: Helmo's year of Aegir 2017

29 December 2017 - 4:00pm
What have I done? It turns out a lot of Aegir. Anarcat inspired be to write about the time I’ve spent. And now that the Aegir project has a proper blog … why not. 190+ hours of community Aegir time (23 full 8 hour days) as per my hamster. According to “Credited on 61 issues fixed in the past 1 year” Within Aegir I worked all over the place:
Categories: Drupal

Freelock : Getting hands on with Drupal Commerce 2 - Onsite payments and Sales Tax

29 December 2017 - 2:29pm

We're nearing launch of two new Drupal Commerce sites, one of them being this one. It turns out has some relatively sophisticated commerce needs: some taxable products, some non-taxable products. Recurring subscriptions. Arbitrary invoice payments.

We previously blogged about Commerce 2 Price Resolvers. Now, let's get into some of the details of payment gateways and taxes.

Drupal 8Drupal CommerceDrupal PlanettaxCustom Development
Categories: Drupal Blog: AGILEDROP: This is Boštjan, our Development director

28 December 2017 - 5:17pm
Today we will present Boštjan, Development director of AGILEDROP. Let's see what he said in the interview.   When did you start working at AGILEDROP and what were your initial responsibilities? I’m at AGILEDROP almost from the beginning when Iztok and Marko invited me to join the newly established company. At the beginning, there was just a couple of us, so we were all working on the projects. I was doing development, mainly back-end but some front-end work was also needed.   What are your responsibilities as Development director? My responsibilities can mainly be described as being a… READ MORE
Categories: Drupal Backup and Forget

28 December 2017 - 12:59pm
Backup and Forget Crell Thu, 12/28/2017 - 20:59 Blog allows users to create a byte-for-byte snapshot of any running environment, production or otherwise, at any time with a single button click or command line directive. That's great for one off use, like preparing to deploy a new version or run some large batch process, but what about for routine disaster recovery backups? Can we do those?

Believe it or, not, it's possible to automate yourself! And it's only a 3 step process.

The basic idea is that the CLI can be triggered from any automation tool you'd like... including cron from within the application container. It just needs an authentication token available in the environment.

Step 1: Get a token

Create an authentication token for your user or a dedicated automation user. That's easily done through the UI.

Set that token as a variable on your project, like so:

platform project:variable:set env:PLATFORMSH_CLI_TOKEN <value> Step 2: Install the CLI

The CLI can be installed as part of a build hook within your project. Simply add the following line to your build hook:

curl -sS | php

Now the CLI will be available in cron hooks, the deploy hook, or when logging in via SSH. It will use the token you provided a moment ago, and will automatically pick up the project and environment name from the existing environment variables.

Step 3: Snapshot on cron

You can now add a new cron entry to your file, like so:

        spec: '0 5 * * *'
        cmd: |
            if [ "$PLATFORM_BRANCH" = master ]; then
                platform snapshot:create --yes --no-wait

That will run the cmd once a day at 5 am UTC. (Adjust for whenever low-traffic time is for your site.) Then if and only if it's running on the master environment (production), the platform snapshot:create command will run and trigger a snapshot, just as if you'd run the command yourself. Poof, done.

Of note, though, are the --yes --no-wait flags. The first skips any user-interaction, since the command is running from cron. The second is extra important, as it tells cron to not block on the snapshot being created. If you forget that, cron will block on the snapshot which means so will any deploy you happen to try and trigger. That can result in extra-long deploys and site downtime. You don't want that, we don't want that, so make sure not include --no-wait.

That's it that's all, you're done! Rejoice in daily automated backups of your production environment.

Larry Garfield 3 Jan, 2018
Categories: Drupal Blog: AGILEDROP: Why you should exceed your users expectations

28 December 2017 - 3:27am
We covered three aspects of what is to be considered as ambitious digital experiences. The first blog post of the series focused on defining the integral parts of such experiences, the second post dug a little deeper into interaction channels of digital experiences and the third post dealt with integrations and Drupal. The fourth post in the series will refer to how important is to also address the challenge of user experience in the process of delivering an ambitious digital experience. UX should definitely cover more than just branding and design. In my opinion, the engines which are… READ MORE
Categories: Drupal

Hook 42: Field Notes: UI Patterns Module

27 December 2017 - 6:44am

When it comes to Atomic Design systems in Drupal 8, there’s hardly a shortage of solutions to choose from. Pattern Lab and KSS Node are certainly among the most popular and the recently released Mannequin looks incredibly exciting. However, in all these aforementioned solutions, exposing that component data to Drupal has never been particularly straightforward.

Here at Hook 42, we’ve just finished developing a brand-new Drupal 8 site for a client that utilizes UI Patterns, Paragraphs, and Display Suite to allow content users to construct complex but consistent user interfaces. What follows is our “field notes” from implementing UI Patterns in a production site.

Categories: Drupal

Tandem's Drupal Blog: How To Stop An Intelligent Spambot

26 December 2017 - 4:00pm
December 27, 2017 Most sites are susceptible to spam bot attacks regardless of what you may have installed. This little trick will aid in preventing bots from swarming your site. This article focuses primarily on stopping spammers via PHP and Drupal. However, the same principle can be applied to any language and CMS. What are Bots Spambots are...
Categories: Drupal

WeKnow: A first taste of Drupal theming using Pattern Lab

26 December 2017 - 2:37pm
A first taste of Drupal theming using Pattern Lab

A few months ago I had the pleasure of starting a new journey in my professional career, joining the weKnow family. This was a natural step after collaborating in the last couple of years with Jesús and Enzo in open source projects like DrupalConsole. Right from the start, working to reach our projects’ milestones has been a really fun adventure, with lots of new knowledge and lessons learned along the way.

One of my first projects was leading the effort to rebuild weKnow’s new site. Most of you can probably relate to the fact that 'you are your toughest client', which is why we needed to strategize intensely before deciding on what approach to use, we treated this project as a functional prototype for the implementation of our new workflows in future projects with our clients and partners.

omers Tue, 12/26/2017 - 22:37
Categories: Drupal

DrupalEasy: Drupal Career Online, Fall 2017 Graduates!

26 December 2017 - 7:39am

We'd like to introduce the Fall, 2107 graduates of Drupal Career Online (DCO), DrupalEasy's exclusive 12-week, live online Drupal training program. This is our 11th graduating class and the first of our recently updated all Drupal 8 curriculum.

Class members include (from top, left):

  • Michael Anello (instructor)
  • Adrian Nolt
  • Lisa Streeter
  • Jared Nolt
  • John MacDonald
  • Steve Versteeg
  • Alona Kotliar
  • Evrim Campbell
  • Donald Sangster
  • Madeeha Kahn (not pictured)

While many of this semester's graduates have pre-existing full-time jobs, several are aspiring Drupal contractors and consultants, so if you're looking for a junior level Drupal developer or intern, don't hesitate to let us know

This semester's class included Drupal 7 site builders looking to learn Drupal 8 workflows and module development, a WordPress developer and a self-taught Drupal 8 developer looking to learn best practices, as well as several Drupal hobbyists looking to learn professional development techniques.

Our always-being-updated curriculum dropped support for Drupal 7 with this most recent class. The curriculum now teaches Drupal 8 best practices around using Composer to manage site codebases, Drupal Console for module development, and proper use of Drupal's settings.php and settings.local.php files. 

The next semester of Drupal Career Online begins March 26 - learn more about it.  

We're also offering our Mastering Professional Drupal Developer Workflows with Pantheon class starting February 27. This 6-week, 3 half-day per week, live online class is for those with previous Drupal development experience who are looking to learn professional Drupal 8 workflows focusing on Composer and Pantheon. In addition, there are dedicated lessons about Drupal information architecture, using Search API and Solr, and utilizing advanced Pantheon hosting features. 

Categories: Drupal

Acro Media: How To: Add a Solr Datasource Field for Product Searching in Drupal Commerce 2

26 December 2017 - 7:00am

Apache Solr is a powerful search engine used by many of the largest websites on the planet. It's highly customizable, alowing you to configure content catalogs and search results by any content datasource (such as title, brand, colour, price, keyword, taxonomy, etc.). You can also assign priority levels to each datasource so that your users are more likely to find the content that they're looking for right away.

Our Urban Hipster Drupal Commerce 2 demo site uses Solr for product catalog functionality and as a product search. In this Acro Media Tech Talk video, we'll show you how you can make a new datasources searchable to your users. 

We've built this demo site to show the adaptability of the Drupal Commerce platform. Most of what you see is out-of-the-box functionality combined with expert configuratoin and theming.

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 used in this video Additional resources

Categories: Drupal

DrupalBASE: Communicate with your audience, make your content visual and interactive

25 December 2017 - 2:29pm

For content managers as well as developers Drupal provides a lot of tools and approaches to create content of different types and flavours, from simple text to structured layouts with much of graphics and media. Though still there is enough uncertainty and complexities with authoring experience. Some tasks are even hardly accomplishable without coding or require a sensible effort to. Here to the rescue comes VisualN. The VisualN module brings a generic approach to carry out many of those "painful" and daunting tasks with ease and fun. What is important, it hides the complexities from user to make interaction intuitive and joyful.

The drawing above as any other drawing in the article is fully created and configured via UI with no single line of code or extra modules. To embed drawings into content VisualN provides a rich set of approaches and their combinations so that user wouldn't be limited in his content structuring strategies and could stick to the preferred ones. For the examples in the article we've chosen to use visualn token functionality to embed drawings via simple tokens of [visualn:embed:drawing:id] format. Though you can choose to use Paragraphs or even embed drawings via iframes (which generally is more suitable to embed drawings into third-party sites content).

So what is a drawing and how it works

There is practically no limit on what a drawing can be. For purposes of the article though we can say that a drawing is basically a piece of content or markup with styles, scripts and settings attached generated by a drawer plugin or fetched by a fetcher plugin (which commonly relies on a drawer). Drawer may also need some data to generate drawings, e.g. maps need a list of points with geodata, charts may need some kind of statistics in which case data can be provided for it. Data can be provided as files or retrieved from many other types of sources, even generated on the fly - VisualN provides all required tooling and infrastructure.

Categories: Drupal

erdfisch: Drupalcon mentored core sprint - get that Friday feeling!

25 December 2017 - 10:00am
Drupalcon mentored core sprint - get that Friday feeling! 25.12.2017 Michael Lenahan Body:  Drupalcon mentored core sprint - get that Friday feeling!

This is the first in a series of blog posts on a subject I'm very passionate about. So much so, that it's actually quite hard to put down in words the way I feel about it. That subject is the Friday Mentored Core Sprint at Drupalcon.

Call to action: If you are planning to go to Drupalcon Nashville, please be sure to extend your stay to cover the Sprint Day on Friday, April 13. You will not regret it!

TL;DR: participating at a large-scale mentoring event like this is an incredible experience. In fact, it is one of the most valuable learning opportunities you will have in your career.

Take advantage of this opportunity. Come along, first as a participant - and then, in future, once you have seen how it works, you can join this team of mentors:

The Drupalcon mentored core sprint is not just for developers.

I think that is worth repeating:

The Drupalcon mentored core sprint is not just for developers. It's for sales people, project managers, freelancers, site builders - in fact anybody in the Drupal world who wants to learn about contributing.

If you are a sales person or a project manager or a site builder - the Friday at Drupalcon is meant exactly for you, and you are welcome to come along and join in. Whatever your skill set is, Drupal needs you!

The Friday sprint at Drupalcon is brought to you by an amazing team of volunteers. Everything they do is centered around creating a friendly, non-intimidating atmosphere, so that everyone feels welcomed and productive.

So here it is. Your chance to make your first contribution to Drupal.

And - if that's not enough - you will simply meet great people, make new friends, and work together on Drupal Core with them. Friendships are made on this day which last for years.

So, what actually happens on Friday at Drupalcon?

I've been lucky enough in the past few years to have been supported by employer erdfisch so that I could go to Drupalcon.

If I didn't have a ticket for Drupalcon, I would travel there anyway, just to take part on the Friday, because it is the highlight of my professional year.

Three quick notes here:

  • You do not need a Drupalcon ticket to go to the Friday mentored core sprints.
  • If you are reading this and planning to be at Drupal Nashville then make sure you stay for the Friday!
  • Drupalcon Europe will, we hope, be replaced by a Drupal Europe event in 2018. We are certainly hoping that this will include a core mentored sprint as well.

So, what makes this day so special?

Well, here's what the Mentored Core Sprint Room looks like at 08:30 in the morning. If you look very closely you can see Sutharsan setting up his table.

After an hour or two, that very same room looks like this:

These photos make me feel hopeful and proud. They sum up for me what the Drupal community is about: people working together and helping each other to be successful.

I'd like you to take a moment and really look at these pictures for a while. The people you see in these photos have had a very long week, they are sleep deprived and very, very tired. (Last night was Trivia Night).

So what's going on? What's making them so engaged?

This is my favourite photo, because it describes perfectly the beautiful chaos of the sprint room on Friday.

Here's another thing: most of the people sitting next to each other did not even know each other a few hours before. That is beautiful. In my humble opinion, if you come to Drupalcon and miss out on this, you're missing out on something important, something potentially life-changing.

What are these people working on? How is this whole thing organized?

I'm glad you asked, because those will be the topics of the follow-up blog posts!

A final word in memory of J-P Stacey

While preparing this post, I saw this tweet.

Last year at Drupalcon Dublin, I asked J-P to be my "mentor mentor" because
I was so impressed by his gentle and unruffled style. He organized the team
at his table with exemplary grace and good humour. I was particularly struck
by how quickly he gathered a group of enthusiastic people around him. Bye J-P,
it was a true honour to have known you, if only once a year, in this particular

Credit to Amazee Labs and Roy Segall for use of photos from the Drupalcon Vienna flickr stream, made available under the CC BY-NC-SA 2.0 licence.

Schlagworte/Tags:  planet drupal-planet drupalcon mentoring code sprint Ihr Name Kommentar/Comment Kommentar hinzufügen/Add comment Leave this field blank
Categories: Drupal Selling an Item for $1.6M with Elm and Headless Drupal

24 December 2017 - 2:00pm

If you happen to know Brice - my colleague and Gizra’s CEO - you probably have picked up that he doesn’t get rattled too easily. While I find myself developing extremely annoying ticks during stressful situations, Brice is a role model for stoicism.

Combine that with the fact that he knows I dislike speaking on the phone, let alone at 6:53pm, almost two hours after my work day is over, you’d probably understand why I was surprised to get a call from him. “Surprised” as in, immediately getting a stomach ache.

The day I got that call from him was a Sale day. You see, we have this product we’ve developed called ״Circuit Auction״, which allows auction houses to manage their catalog and run live, real-time, auction sales - the “Going once, Going twice” type.

- “Listen Bruce,” (that’s how I call him) “I’m on my way to working out. Did something crash?” I don’t always think that the worst has happened, but you did just read the background.
- “No.”

I was expecting a long pause. In a way, I think he kind of enjoys those moments, where he knows I don’t know if it’s good or bad news. In a way, I think I actually do somehow enjoy them myself. But instead he said, “Are you next to a computer?”

- “No. I’m in the car. Should I turn back? What happened?”

I really hate to do this, but in order for his next sentence to make sense I have to go back exactly 95 years, to 1922 Tokyo, Japan.

Continue reading…

Categories: Drupal

Agaric Collective: PHP and Symfony tracks merged for DrupalCon Nashville 2018

23 December 2017 - 12:51pm

The program for DrupalCon is evolving constantly. Among the changes for Nashville 2018 new tracks have been added and some have been merged. That is the case for the Symfony and PHP tracks.

Many topics clearly belong to a single track, but others could fit in more than one. When we had a dedicated Symfony track a session about Twig could be submitted to the Symfony or front end tracks. A session about Drupal Console could be submitted to the Symfony, the PHP, or back end tracks. In an effort to reduce confusion in the call for proposal process, the track team has agreed on the following:

  • The back end development track is for sessions focused on Drupal coding and development practices.
  • The PHP track is for sessions that cover the broader PHP ecosystem. These sessions can be related to Drupal, but focused on an external project/library like composer, or PHPUnit, Symfony components.
  • The Symfony track merged with the PHP track.

Undoubtedly Symfony plays a key role in Drupal. Symfony 4 has just been released and it would be great to learn about what the future looks like. We want to learn about what is new in the latest version and what benefits adopting it would bring. We are also interested in sessions that would allow developers to learn from each other. What does a Symfony developer need to know to write Drupal code? What does a Drupal developer needs to know about Symfony to become a better developer? In other words - how to make proper use of Symfony components and related best practices.

Other session ideas include best practices on using Composer, PHPUnit, and third party libraries; new features in PHP 7; functional, asynchronous, and reactive programming; machine learning; micro services; etc.

If you want to attend DrupalCon Nashville, but the cost of attending is too high there are some ways to reduce the expenses:

  • Getting a session selected gives you a DrupalCon ticket.
  • You can get a $350 stipend to help cover expenses if your session is selected and you identify yourself within at least one of the "Big Eight" Social Identifiers. This is part of an effort to increase diversity at DrupalCon.
  • If you volunteer as a mentor, you can get a free ticket. No need to be a speaker for this one.
  • There are grants and scholarships that can provide a ticket and/or money to cover expenses. No need to be a speaker for this one.

The track team for DrupalCon Nashville 2018 is here to help you during the session submission process. We can help review proposals, suggest topics, and clear any doubt you might have. For the PHP track, Chad Hester, Tim Millwood, and myself are ready to help.

For people who have not presented before and for those of underrepresented groups, the Drupal Diversity and Inclusion Initiative has created a channel in Slack to help them with the proposal project. Mentoring is available at in the #ddi-session-help channel.

The call for proposals closes in less than a month on January 17. Do no leave things until the last minute. We look forward to your session submissions!

Categories: Drupal

MidCamp - Midwest Drupal Camp: Buy a ticket, submit a session and sponsor MidCamp 2018!

23 December 2017 - 9:45am
Buy a ticket, submit a session and sponsor MidCamp 2018! Session Submissions are now open

MidCamp is looking for folks just like you to speak to our Drupal audience! Experienced speakers are always welcome, but our camp is also a great place to start for first-time speakers.

MidCamp is soliciting sessions geared toward beginner through advanced Drupal users. Know someone who might be a new voice, but has something to say? Please suggest they submit a session.

Find out more at: Buy a Ticket

Tickets and Individual Sponsorships are available on the site for MidCamp 2018. Click here to get yours!

Schedule of Events
  • Thursday, March 8th, 2018 - Training and Sprints
  • Friday, March 9th, 2018 - Sessions and Social
  • Saturday, March 10th, 2018 - Sessions and Social
  • Sunday, March 11th, 2018 - Sprints
Sponsor MidCamp 2018!

Are you or your company interested in becoming a sponsor for the 2018 event? Sponsoring MidCamp is a great way to promote your company, organization, or product and to show your support for Drupal and the Midwest Drupal community. It also is a great opportunity to connect with potential customers and recruit talent.

Find out more at:

Thanks for reading this far!  We hope to see you at the camp!

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

21 December 2017 - 11:49am
Integrating a Simple Drupal Text Paragraph Bundle with Patternlab

This is the first post in a series about how to integrate Drupal with PatternLab. In this first blog post, we'll look at a simple text paragraph bundle, which just has one field: text (formatted, long).

markconroy Thu, 12/21/2017 - 19:49

I see a lot of blog posts and talks around about the benefits of using component-based design, about how we should use design in the browser principles to present designs to our clients, about how styleguides are the best way to have sustainable frontends. I've even written some and given many presentations about it myself. What I don't see a lot of is blog posts about how to actually do it.

So, here's how to (or at least how I) integrate my PatternLab theme (it's based on the Phase 2 PatternLab Drupal theme) with a simple paragraph type.


Create a pattern - you can put it wherever your setup says it should go. Paragraph bundles are probably molecules, but I'm not sure how you set up yours. In my case, I have hacked PatternLab and created a folder called "Building Blocks" - this is where all my paragraph bundles go (and then I also have a "Building Blocks" field in each content type - more about my set up in another blog post.

Call the pattern something meaningful - in this case, I call mine "Text". Next, we write the Twig for the text pattern. This can be as simple as this:

set classes = [

    {{ content }}

Then in my corresponding text.yml or text.json file, I put in some sample content, like so (I like yml):

content: 'This is a Level 2 Heading

This is a paragraph of text followed by a list. Sed posuere consectetur est at lobortis. This is strong while this is emphasised Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Aenean lacinia bibendum nulla sed consectetur. Curabitur blandit tempus porttitor. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper.

  • A text item in a list
  • Another text item
    • A sub-item
    • Another sub-item
  • A third item in a list
This is a Level 3 Heading

Followed by some more text. This is a link sed posuere consectetur est at lobortis. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Aenean lacinia bibendum nulla sed consectetur. Curabitur blandit tempus porttitor. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Vestibulum id ligula porta felis euismod semper.



Finally, in my Drupal paragraph--text.html.twig file, I extend the above PatternLab file, like so:

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

Yes, there is only one line of code in that file.

Some Explanation

Why do I call my variable {{ content }}? Simple, I know that the default variable in Drupal's paragraph module to print the contents of the paragraph is {{ content }}, so if I give my pattern in PatternLab the same variable name, I won't have to worry about matching any variables. I do not need to do something like this:

{% include '@building-blocks/text/text.twig' with {
  content: text

This will become much clearer when we work with more complex paragraph types in later blog posts.

You can see an example of this pattern in PatternLab here, and the text you are currently reading is an example of it in use in a Drupal template. Simple, eh?

Categories: Drupal

Zivtech: 5 Drupal Modules for Content Editors

21 December 2017 - 10:01am

As a content management system, Drupal is designed to simplify the process for adding, modifying, and removing content, even for users without much technical expertise. 

Beyond its core functionality, Drupal has a number of modules that make life even easier for content writers and editors. Some of these modules, like Views and CKEditor, were added to core when Drupal 8 was released. 

These are some of our other favorite modules that can further simplify workflows for content editors. 

Real-time SEO for Drupal

Content writers always need to strike the right balance between user friendliness and search engine optimization in their work. Content should incorporate SEO strategies in order to appear in relevant searches while also remaining relevant and appealing to site users. 

Real-time SEO for Drupal promises to help “optimize content around keywords in a fast, natural, non-spam way.” The module analyzes elements of your content like page length, meta descriptions, keywords, and subheadings. This helps boost SEO without sacrificing readability, striking that careful balance. This module also requires the metatag module.


Drupal identifies every piece of content with a node ID, which is displayed in the URL. The Pathauto module uses tokens to automatically create URL aliases based on a specific patterned system that you establish. 

Read more
Categories: Drupal