Maybe you have seen Dries Buytaert's DrupalCon keynote and are looking forward to all the goodies coming in future Drupal 8 versions. The truth is none of those things will happen without people who want to make them happen to solve their own challenges with implementing and showcasing Drupal solutions. Are you implementing decoupled solutions and have issues you are working on? In the middle of building up a suite of integrated media solutions? These core team meetings are ideal to bring in these issues and discuss solutions and to be part of shaping up where Drupal 8 is heading. Read on for details.

There is a weekly meeting on all API first work (REST, Waterwheel, JSON API, GraphQL) every Monday 2pm UTC on Google Hangouts. A link to the current hangout is posted 5 minutes before the meeting in the #drupal-wscci IRC channel.

Wanna help with migrate? The team either meets in Google Hangouts or the #drupal-migrate IRC channel. (Discussed at the start of the meeting based on lead availability in IRC). Meetings are on Thursdays 9pm UTC and 2pm UTC on a weekly alternating basis.

Ted Bowman and Mike Anello, both back from DrupalCon Nashville, spend some quality time together to catch up on all the latest happenings involving local development environments. Ted hosted some BoFs about the topic, and Mike posted a comparison of some of the more popular Docker-based, Drupal-focused local development tools, so we figured it was a good time to devote an entire podcast on the topic. In addition, Mike and Ted name their "favorite thing" from DrupalCon Nashville.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

We all use searches multiple times a day without ever giving them a second thought. Browsing a webshop to find that one particular product, searching through forums to find a solution to your specific problem, or filtering stores based on your location to find the closest one, etc.

All of these examples require the same thing: content that is indexed in such a way that it can be filtered. In general, this is quite easy to set up: all you need is a database and a query to get you started.

However, what should you do if your visitors are more demanding and expect to be fed the right content when searching for plurals or a combination of words or synonyms? In the majority of cases, such complex queries fall beyond the reach of default search solutions, leading to dreaded messages like ‘Your search yielded no results’. This very quickly leads to user frustration and, subsequently, fewer conversions on your website. And this is only the start of it… What if your website also serves Germanic languages other than English? Suddenly, you are confronted with concatenations of words such as the infamous ‘Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz’ or ‘Chronischevermoeidheidssyndroom’.

In this blogpost, we explain how you can configure Apache Solr to improve your multilingual content indexing and querying. We will shed some light on the ways indexing and querying is configured and can be tested, so you can make sure that Solr can understand your content and return a better result when users are searching through it. We will be using Dutch as an example, because of its compound word complexity. The underlying principles, however, are valid in plenty of use cases for other languages and search-related problems.

What are compound words?

First things first: let’s analyze our definitions. If we stick with the example of ‘chronischevermoeidheidssyndroom’. This word consists of multiple building blocks: the adjectives ‘Chronische’ and ‘vermoeidheid’ and the noun ‘syndroom’. In Dutch, it is perfectly acceptable to combine these elements into one long noun - and the exact same principle applies to German. In English, the direct translation looks very similar: ‘Chronic Fatigue Syndrome’. The only difference, of course, is those handy spaces in between the individual components! Most language processing tools split words by spaces, which makes it easy to search for parts of a search term, as they already appear split up in the text. In the case of the German and Dutch examples above, this isn’t so easy to do. Because of this added complexity, we will need to configure our language processing tool to understand what the possible compound words are and how they are combined. Luckily, there are certain grammar tools around that make it possible to tackle this added complexity through handy algorithms!

The Search API acts as a bridge between different search servers and the Search API Solr allows to communicate with a Solr server.
Once those modules have been installed, the most important one for multilingual sites is the Search API Solr Multilingual module. This module allows to connect with a Solr server with better support for non-English languages.

If you are using the 8.2.x branch of Search API Solr, you won’t have to download the multilingual module, as it is merged into the Search API Solr module.
Once these modules have been installed, you will be able to set up a connection to a Solr server using the Multilingual backend connector. We will not go any deeper into the whole installation process, as the modules all come with their own detailed installation instructions.

Configuring your Solr server for multilingual content

The multilingual Solr module also provides a download mechanism that generates the Solr configuration files that are needed to support multilingual content indexation.
One of the most important files in this configuration is the schema_extra_types.xml file.

This file declares a field type called text_nl, which has some filters declared when indexing the content and some when performing a query on the index. Some names speak for themselves, for example:

MappingCharFilterFactory: this uses the accents_nl.txt file to map a certain character to another. Using this, we can filter out special characters. This means that the search mechanism can still understand what you’re looking for if you search without using this special character.

CharacterWhitespaceTokenizerFactory: this tokenizer splits words based on whitespace characters - this way each word get indexed.

LengthFilterFactory: Filters out words based on the max and min values. Example: min=2, max=100 will filter out words that are less than 2 characters and longer than 100 characters.

LowerCaseFilterFactory: makes the token lower case.

StopFilterFactory: Filters out words which are mentioned in the stopwords.txt file attached to this filter. This list contains words with no added value, like eg. but, for, such, this or with.

SnowballPorterFilterFactory: The most important argument for this factory is the language argument, as this will define how the stem of a certain word is defined. As you can see in the example, we are using Kp and not NL for Dutch stemming. This is because the Kp stemmer better stems Dutch words. Want to know more about this algorithm? You can find all the details via this link.
In short, this filter will result in plural words being indexed together with the stem of the word. E.g. 'modules' → 'modules', 'module'

RemoveDuplicatesTokenFilterFactory: removes any duplicate token.

Some filters are more complex, so let’s explain them more in-depth:

WordDelimiterFilterFactory: this filter will split words based on the arguments.

CatenateNumbers: If non-zero number parts will be joined: '2018-04' →'201804'.

Protected: the path to a file that contains a list of words that are protected from splitting.

DictionaryCompoundWordTokenFilterFactory: this filter splits up concatenated words into separate words based on the list of words given as dictionary argument. Example: 'flagpole' → 'flag', 'pole'

SynonymFilterFactory: This filter allows to define words as synonyms by passing along a list of synonyms as synonyms argument. This list is a comma separated list of words which are synonyms. This can also be used to solve spelling mistakes.

Example: drupal, durpal - Will make sure that when a user searches for durpal, results with drupal indexed will be returned as possible matches.

With this setup, you should be able to make your search indexing and querying a lot smarter. You can find different synonyms.txt, nouns.txt and accent.txt files if you search the web for your language.

Where can I find these txt files?

Remember the section about the compound words? This is where this knowledge comes in handy. We spent a long time browsing the web to find a good list of compound words and stop words. To make your life easier, we’ve attached them to this blog post as GitLab links for you to see, edit and collaborate on. These files are for Solr version 5 and above and are for the Dutch, English & French language.

Pay attention, however! When adding these files to an existing index, you will need to use a multilingual server connection and then reindex your data. If you don’t do this, your index and query will no longer be in sync and this might even have a negative impact on your environment.

Testing indexed and query results

When you have installed a Solr server and core, you can visit the Solr dashboard. By default, this can be reached on localhost:8983/
If you select your core, you will be able to go to the Analysis tab.

This screen allows to perform a search and see how the index (left input) or the query (right input) will handle your value. It’s important to select the field type, so the analysis knows what filters it needs to use on your value.

Things to avoid

Let’s stick with our example of the Dutch word ‘Chronischevermoeidheidssyndroom’ and see how the index will handle this word. If you don’t configure Apache Solr with support for Dutch, it will only store ‘chronischevermoeidheidssyndroom’ in the index. If someone were to look for all kinds of ‘syndromes’, this item wouldn’t show up in the website’s results. Perhaps you would expect otherwise, but Apache Solr isn’t that smart.

What you do want to happen

However, if the index is configured correctly with support for Dutch words, it will return the following results:

The word ‘Chronischevermoeidheidssyndroom’ will eventually be indexed with the following result: ‘chronischevermoeidheidssyndroom’, ‘chronisch’, ‘scheve’, ‘vermoeid’, “‘syndroom’, ‘droom’, ‘room’. If somebody searches for any of these words, this item will be marked as a possible result.

If, for example, we run a search for ‘Vermoeidheid’, we should expect that our beloved ‘Chronischevermoeidheidssyndroom’ pops up as a result. Let’s try this out with the Solr analysis tool:

MappingCharFilterFactory

V|e|r|m|o|e|i|d|h|e|i|d

WhitespaceTokenizerFactory

Vermoeidheid

WordDelimiterFilterFactory

Vermoeidheid

LengthFilterFactory

Vermoeidheid

LowerCaseFilterFactory

vermoeidheid

SynonymFilterFactory

vermoeidheid

StopFilterFactory

vermoeid

SnowballPortretFilterFactory

vermoeid

RemoveDuplicatesTokenFilterFactory

vermoeid

Eventually, our query will search for items indexed with the word ‘vermoeid’, which is also a token index when indexing the word 'Chronischevermoeidheidssyndroom'.

In short

When up a Solr core for multilingual content, it’s important that we provide extra field types that handle the text in the correct language. This way, Solr can index the word in such a way that plurals and concatenations of words are understood. This, in turn, provides a better experience to the user who is looking for a certain piece of content. With everything configured correctly, a user running a search for ‘syndroom’ will be served all compound words as a possible result, providing the user a better overview of your site’s content.

I was also looking for any updates about the status of Drupal.org or the 7.58 update on various Slacks, Twitter and Reddit. While there were a lot of jokes like asking everyone else to stop refreshing, there was also a lot of discussion about deployments and security. In the Slack for people working with Drupal in higher education, several people thanked Michael Hess and the University of Michigan for the time he devotes to Drupal’s security.

People were asking a lot of questions about why the Drupal.org infrastructure wasn’t scaled in anticipation of the traffic. Lots of suggestions for improving the experience were given including taking a page from Apple’s playbook to just take the entire site down and link just to the security update. That one caught my eye. Apple doesn’t take their store down because they don’t know how to scale.

In 2013, do they really not have the web chops to update their store live? Of course they do…

I believe Apple takes down the online store prior to product launches because that's one of their 'Christmas morning' traditions.

They have done it as long as I can remember and will most likely continue long into the future.

In many ways Apple is more like a family than the average company. Taking the key web properties down before major announcements allows more of their family to participate in the event. Regardless of someone's role at Apple, they’ve contributed directly or indirectly to what is about to be announced. They may not have been the lead engineer on the product or even have any idea what is about to be announced, but by doing their job well they enable other people to focus on a different job. Shutting down parts of apple.com is a small way they all share in the excitement of what they are able to achieve as a group.

While most members of the Drupal community don’t contribute directly to the security team, everyone clicking refresh over and over again is trying to contribute to Drupal’s security by securing even one site.

I might be too late to change the plan for tomorrow's release, but I would like to see Drupal.org taken down when the community is waiting for major security update like this. Maybe respond to all requests for a URL on Drupal.org with a simple message like...

We’ve taken Drupal.org offline while we prepare to distribute a critical security update.

When the update is available, it will be linked here.

While you wait, take a few minutes to think about the amazing community you are a part of who are likely all clicking refresh over and over again right now too.

Rather investing resources scaling Drupal.org up so it's able to run normally, let's embrace the fact that Wednesday is not normal and that we're all in this together.

During our first few weeks of selling Drupal Europe tickets, we were frequently asked about how our program is going to be structured. In this post we will outline the structure of our program and what it means for you.

Monday — Training in a small number of topics presented by experienced professionals in a hands-on manner for a whole day (Separate ticket required)

Tuesday to Thursday — Sessions and workshops organized into tracks based mostly on expertise area (Backend development, Frontend, Design/UX, Site Building, Project Management, etc.) as well as common shared interests (Being Human, Building Community, Core conversations, etc.)

Sprints for some attendees on all days of the conference but really in full swing on Friday with a great group of mentors available to onboard new contributors

BoFs which provide an unconference style setup for people to self-schedule topics and gather with other people around a shared interest

Social events including well-known gatherings like Women in Drupal and First-Time Attendee Social

To meet the high expectations of our community, we will keep as much as possible of what worked well. At the same time, we wanted to improve the structure of the program by gearing it towards people who are interested in seeing Drupal applied to specific industries.

Speaking with many past sponsors and attendees, we observed that the main difference between European and non-European events is our fragmented markets. With fragmented markets you have a lower chance of meeting with colleagues, business partners, and customers from your markets, which leads to lower sponsor involvement.

Even if the program is outstanding, lack of sufficient business support makes the event impossible to put on. The primary feedback from all parties was that a Drupal event this size works best as a melting pot of different aspects of Drupal. This is an event where developers, decision makers, project managers, and other roles can share their work and get inspired by real-life stories like Drupal used to control insulin pumps, usage on cruise ships and many more.

Since we cannot really influence the European geopolitical questions, we looked at other aspects to help unify markets. In Europe, Drupal has a strong base in government, publishing, education, social media, and more. There are even Drupal distributions for these purposes originating from Europe. Also we have historically held various business events like the Drupal Business Days as well as popular events like Drupal Splash Awards that have contributed to Drupal’s strong European influence.

Therefore we are incorporating these successful event formats into Drupal Europe.

How Drupal Europe will be differentFocus on industry verticals

Instead of having a specific day for industry participants, we decided to organize the whole event around where Drupal is applied. Drupal Europe focuses on the following verticals:

Digital Transformation + Enterprise

Government

Healthcare

E-Commerce

Higher Education

Publishing + Media

Social + Non-profit

Infrastructure

Drupal Community

Drupal + Technology

Agency Business

Instead of primarily focusing on the technology used (e.g. frontend), you will see frontend talks in the government vertical, the e-commerce vertical, and so on. A great React online store implementation would be presented in the e-commerce vertical. A compelling multi-channel civic project will be included in the government vertical. We believe this focus of the program will help attendees see the value Drupal brings to their respective markets. It should also compel potential speakers who may not use the latest bleeding edge technology but have deeper industry know-how and insights to present.

Having specific industry verticals allows sponsors to meet with their peers, partners and clients and exchange information about important industry topics and around Drupal and Open Source Software in general. Also they have the chance to learn from other verticals that might face similar challenges in their growth. As a sponsor you can buy sponsorship packages targeted specifically at the verticals.

While focusing more on business, we did not want to lose the spaces and opportunities a conference of this size usually provides to Drupalers. Therefore the last three verticals are more focused on us Drupalers and represent the traditional structure with a focus on community, Drupal technology, and agency business.

Working on the program at DrupalCon NashvilleExpertise tagging

There is of course not one true way to organize sessions, so while our primary organization structure will be verticals, we’ll also use tagging on sessions so you can identify content based on expertises like frontend, backend, and so on… We also believe it is useful to keep the varied lengths and formats including panels, longer workshops and short lightning talks in most verticals.

Given this direction, Drupal Europe will not host summits on Monday.

Expanded opportunities for contribution

However, we also want to strengthen the space provided for contribution. Therefore we will hold a contribution day with mentors already on Monday (additionally to the usual mentored contribution day on Friday). Our contribution room will be open on all days in the conference venue. Join us on Monday to possibly get your contributions committed at the conference!

Birds of a Feather and Trainings

We don’t see a reason to change the unconference aspect and will make space for Birds of a Feather sessions as much as the conference venue allows us to.

Some training providers reached out to us to discuss training possibilities for Monday. We have space for training on Monday, and are still in talks with possible trainers.

Social events

We are also looking forward to continuing the traditional social events and already have an enthusiastic sponsor lined up for Trivia Night.

We’ve seen the success of Splash Awards in various countries across Europe: The Netherlands, Germany and Austria, Norway, Bulgaria, Denmark, France and Romania. We are proud to host the first European Splash Awards! Winners from local competitions can compete in this international contest. It is not too late to organize your local Splash Awards.

One ticket for Drupal Europe gives you access to all this great content. Don’t wait — buy your ticket now!

Join the program team!

Currently we’re looking for volunteers to help the program team create the best possible program. It would be great if you have a background or strong interest in one of the conference verticals so we can reach out to the most interesting speakers.

With Drupal 8, the use of view modes (both default and custom) is gaining momentum. This is especially true because of their ability to be easily utilized by Views. Rather than specifying a list of fields with all the required configuration in a View configuration, many site-builders are finding it much easier to define a set of view modes for their entities, have them themed once, then re-used throughout the site - including as part of a View's output via the "Show: Content" option in a View's "Format" configuration.

One hiccup that can slow this down is the not-uncommon occurrence of when a field needs to be output as a link to some destination. While this is relatively easy to do with Views' "Rewrite fields" options, there isn't an obvious solution when using view modes.

Enter the Linked Field module. As its name implies, it provides the ability for any field to be output as a link via its formatter settings. The formatter can be configured with a custom URL or it can use the value of a URL from another field value.

Think of this module as an "Output this field as a custom link" option for view modes!

The "Advanced" configuration section for the formatter settings includes the ability to custom things like the title, target, and class attributes for each link.

If your goal is to maximize the use of display modes throughout your site, then this contributed module is an important tool in your arsenal.

DrupalCon is more than just a conference for networking and learning; it provides an avenue for contributing back to the project during code/contribution sprints. Being a beginner to the issue queue can be daunting and overwhelming. With the help of mentors, novices can get the tools and support they need to jump in and start contributing.

Many years ago, I was going for a morning stroll in New Jersey with my dad. We walked past a complete stranger and my dad said, “Hello.” My parents are divorced and I lived (mostly) with my mom in Brooklyn, so I spent the majority of childhood in a place where no one says hello to strangers. I was bewildered so I asked him why did we just said hi to a complete stranger and he said...

That is truly what he said and I can honestly say, it is the one and only time I have ever heard Sheldon Rockowitz swear. He broke his polite demeanor to emphasize to me the importance of saying hi.

Fast forward 20 years. I am now a father and my four-year-old son is complaining that he has no one to play with. I point to the closest child his age and tell him to go up to the kid and say 'Hi, my name is Ben'. He did it and discovered the concept and value of initiating a greeting with a complete stranger. And he made a friend for the day at the playground.

Two years ago, we were on a summer trip in Montreal and hanging out in a playground. Like many parents, I was laying low on the sidelines, observing my child's interaction with other kids. Ben walks up to a kid on the swing set and says, "I am not sure what language to say ‘Hi’ in, but my name is Ben." Ben's natural ability to adjust his approach blew my mind because he not only found a way to communicate with a complete stranger who might not be comfortable speaking his language, but he also shifted his method based on what he knew - and this is equally important - what he didn’t know. Kids are the future, and they teach us valuable lessons all the time.

Ben taught me..

The Drupal community and software needs to say "Hi" and make people feel comfortable

Earlier this month, Mollom was officially discontinued. If you still have the Mollom module installed on some of your Drupal sites, form submissions that were previously protected by Mollom will behave as if Mollom was offline completely, meaning any spam Mollom would've prevented will be passed through.

For many Drupal sites, especially smaller sites that deal mostly with bot spam, there are a number of great modules that will help prevent 90% or more of all spam submissions, for example:

There will be a security release of Drupal 7.x, 8.4.x, and 8.5.x on April 25th, 2018 between 16:00 - 18:00 UTC. This PSA is to notify that the Drupal core release is outside of the regular schedule of security releases. For all security updates, the Drupal Security Team urges you to reserve time for core updates at that time because there is some risk that exploits might be developed within hours or days. Security release announcements will appear on the Drupal.org security advisory page.

This security release is a follow-up to the one released as SA-CORE-2018-002 on March 28.

Sites on 7.x or 8.5.x can immediately update when the advisory is released using the normal procedure.

Sites on 8.4.x should immediately update to the 8.4.8 release that will be provided in the advisory, and then plan to update to 8.5.3 or the latest security release as soon as possible (since 8.4.x no longer receives official security coverage).

The security advisory will list the appropriate version numbers for each branch. Your site's update report page will recommend the 8.5.x release even if you are on 8.4.x or an older release, but temporarily updating to the provided backport for your site's current version will ensure you can update quickly without the possible side effects of a minor version update.

Patches for Drupal 7.x, 8.4.x, 8.5.x and 8.6.x will be provided in addition to the releases mentioned above. (If your site is on a Drupal 8 release older than 8.4.x, it no longer receives security coverage and will not receive a security update. The provided patches may work for your site, but upgrading is strongly recommended as older Drupal versions contain other disclosed security vulnerabilities.)

This release will not require a database update.

The CVE for this issue is CVE-2018-7602. The Drupal-specific identifier for the issue will be SA-CORE-2018-004.

The Security Team or any other party is not able to release any more information about this vulnerability until the announcement is made. The announcement will be made public at https://www.drupal.org/security, over Twitter, and in email for those who have subscribed to our email list. To subscribe to the email list: login on Drupal.org, go to your user profile page, and subscribe to the security newsletter on the Edit » My newsletters tab.

Journalists interested in covering the story are encouraged to email security-press@drupal.org to be sure they will get a copy of the journalist-focused release. The Security Team will release a journalist-focused summary email at the same time as the new code release and advisory.
If you find a security issue, please report it at https://www.drupal.org/security-team/report-issue.

We're counting down the days to the official SooperThemes Drupal 8 Release! Count with us as we will be writing a Drupal 8 related blog post every day for the next 8 days.

Drupal 8 is known for being heavier and slower than Drupal 7. However, Drupal 8 doesn't deserve this image and I think it got this image from lazy benchmarking: Testers just install Drupal's default profile, run some ab tests and call it a day. This is not a realistic test! Real Drupal websites will have hundreds of pages, menu items, configuration objects, more complex theming, more modules etc.

I did some more extensive testing to compare our Drupal 7 products with the Drupal 8 versions that are to be released next week. The beautiful thing (for this test) about our products is that we maintain them with feature parity across Drupal 8 and 7. We provide installation profiles that combined have thousands of content items, menu items, and configuration settings that make them very close to real-world Drupal 8 & 7 websites. Perfect material for benchmarking!

Ok let's get this over with first. Drupal 8 is built on a PHP core that is slower to parse than Drupal 7 and uses more memory. On an empty Drupal installation you will really notice this difference because the empty shell will act like a magnifying glass on the underlying architecture. In the chart above you can see that Drupal 7 is more than twice as fast at delivering cached pages to anonymous users.

This test is what most people will refer to when saying Drupal 8 is slower than Drupal 7 but this is in fact the least interesting test for 2 reasons:

Nowadays it is very easy to put a cache in front of Drupal. You can use Nginx, Varnish, or Cloudflare with the free plan to serve thousands of cached pages per second, regardless of whether Drupal 8 or 7 or anything else is behind the cache.

Any empty installation with Drupal's default profile is a bad model for a real website.

For this second test we use the Main Demo installation profile with our Glazed Theme and Glazed Builder products. This means we have a dropdown menu with 100+ items, a database with around 100 nodes, lots of views displays and contrib modules, and our Glazed theme is enabled which subthemes the bootstrap basetheme. This is a much closer simulation of a real-life Drupal website than the default profile is!

We're benchmarking a views display that draws fields from nodes and taxonomy terms, does some interesting templating and is then pulled into a page using Glazed theme to display the view along with peripheral content.

As you can see in the chart Drupal 8 is now twice as fast as Drupal 7. Despite the heavier core, Drupal 8 is faster when handling large amount of configuration, views, and heavier themes like Glazed and the Bootstrap basetheme. I suspect this is due to the more elaborate caching architecture in Drupal 8. Especially template files are now heavily cached and so are other important Drupal components.

Our previous test showed an extreme example of Drupal 8 being faster due to its better handling of views. This 3rd test shows what we typically see when benchmarking Drupal 8: Drupal 8 is slightly faster in loading pages in our Glazed Theme demos. We see similar results when testing drag and drop pages, or other content types that don't use the drag and drop builder. In fact our Page Builder module does not significantly impact performance even when loading multiple Glazed Builder editors within the same page.

The Drupal 8 and 7 installation profiles have near feature-parity but in fact the Drupal 8 version includes the Admin Toolbar module and the Drupal 7 profiles do not include an admin menu module. This means that each page comes with an additional 200 menu items in the Drupal 8 tests. In Drupal 7 I usually install the admin_menu module for faster administration, and this module is known to be significant burden on the server. The fact that Drupal 8 is faster in our tests despite loading the additional 200 menu items is impressive!

Conclusion: Drupal 8 Is A Heavier System With More Extensive Caching That Can Make It Faster Than Drupal 7 In Real-Life Situations

At the start of its life Drupal 8.0 got a lot of criticism for being slow. Now in 2018, Drupal 8.5 has seen a significant number of performance improvements and while it's still slower than Drupal 7 at the core, it's faster in complex situations that are more relevant to real-life Drupal websites.

Drupal 8 is faster where it matters, and more scalable! It's also important to add that both test installations did not have any special settings enabling caching of content, views, blocks, etc. Drupal 8 has a much more advanced and more granular caching system that lets you finetune and optimize your experience for logged in users on a grander scale than was every possible with Drupal 7. Notably there is the BigPipe module that gives you lightning fast loadtimes for your primary content and it can then separately lazy-load less important content, like the footer, menus, and sidebar blocks.

For sure this test brings good news to SooperThemes customers, who will enjoy a faster experience our of the box with our Glazed demo installation profiles. As a side note: importing demo content is also twice as fast in our Drupal 8 installation profiles versus Drupal 7.

What is your experience?

Drupal's performance is a complex thing to test and I'm sure you can get different results in varying situations, if you have any questions about the test or if you want to share your own experience with Drupal 8's performance let me know in the comments!

It was great to get back to DrupalCon this year. I really enjoyed the Con, and this was one of my favorite DrupalCons in the eight years I’ve been going. Drupal as a community is getting more serious about diversity. In the past, there’s been an undercurrent of people saying “diversity is good” for a... Read more »

I went to DrupalCon this year with the goal of doing things a bit differently this time. I’m a bit of an introvert with people at first, but I’ve been told I don’t come off that way. So, I decided to leverage that and just push myself through things that, in years past, I would... Read more »

This is a first blog post about how we build the team portal for Roparun.

But first what is Roparun? The Roparun is a relay race of over 500 kilometres from Paris and Hamburg to Rotterdam, where people in teams, take part in an athletic event to raise money for people with cancer. It’s also called an adventure for life. This is also clear from the motto, which for years has been: ‘Adding life to days, when days often can’t be added to life’.

So each year Roparun organizes this race and around 400 teams participate in the event. The first part of the project was to setup donation functionality and that is working right now.

The next part of the project is to create a new portal for team captains where they can manage their team data, (e.g. name of the team, start location and the individual team members). We have chosen to have this in a separate Drupal website.

In CiviCRM each team captain is registered as a participant to the Roparun event with the role team captain. The team captain can login into the portal as soon as he has been registered as a team captain and till the event is over.

The first part of this project is that we wanted the team captains being able to login and we have created a module called CiviMRF User Sync. This module build on top of the CiviMRF framework.

This user sync module uses the CiviCRM api to create drupal user accounts. See screenshot below for the configuration.

What you can see is that we use a custom api to retrieve the team captains. This custom api returns the email, contact id and the team id of the team captain. We store the e-mail address as the username and at the email field at the user level.

As soon as a new team captain is registered a new user record is created and the team captain receives an e-mail with a link to create a password.

As soon as an existing team captain is removed from CiviCRM the user account is cancelled and the team captain receives an email indicating that his account is disabled.

So the first bit is done, meaning a team captains can log in. The next bit is to build the portal with Drupal Views and Webforms. The building blocks we are going to use for that is CiviMRF Webform, CiviMRF Views and at the CiviCRM site the form-processor. I will keep you posted on the developments of the next steps.

This tutorial is for people who are new to Drupal 8. We'll be showing how to add content to Drupal 8 and how to change or add new content types. Content types are very flexible in Drupal 8 and that's what makes Drupal more powerful than WordPress and other systems for many use cases.

Drupal 8's Content Overview Page

Just like all Drupal's previous versions this administration page is the central hub where all your content appears in one place. You get there by clicking the Content link in the toolbar. This takes you to an overview of all the pages in your Drupal website. From here you can edit and delete pages using the action links to the far right side of the table. Additionally you can operate on multiple pages at a time using the controls below the Action label.

The content administration page is not just for pages, using the primary tabs you can navigate to administration pages for files and comments. This can be extended by additional moduels that provide custom content entitities using Drupal 8's Entity API. For example on sooperthemes.com we also manage domain licenses and digital downloads on separate tabs, because these are custom entity types.

Adding Content In Drupal 8

Once you're at the content administration page it's easy to see how to add content. You start by clicking the blue button that reads "+ Add content". You'll now see a listing of content types that are available at your Drupal installation and you have to tell Drupal which type of content you would like to create. After choosing a content type you'll be taken to the content form where you get to fill in all the form fields that make up your content type. You'll learn more about these fields in the next section where we discuss adding fields to content types and adding new content types.

Drupal 8 Contact Management Administration Page

Adding Content Types In Drupal 8

The ability to create new content types and choose from a large selection of different field types is what makes Drupal the system of choice for many organisations that manage a lot of content. Companies of all sizes including Tesla, Disney, United Nations, and Qualcomm use Drupal because it's the best solution for managing a large amount of content on the internet.

To manage content types in Drupal 8 click Structure in the toolbar and then click Content Types. Now you're looking at a listing of content types installed on your website. If you just installed a new Drupal 8 website with the default profile you will see the Article and Basic Page items. If you installed one of our theme demo profiles or the free Glazed CMS installation profile you'll have a bunch more options. Check out our YouTube video above for a quick tour.

Once you're at content types overview click the "+Add content type" button to create a new page type. The minimum you can do here is give your content type a name, for example "Special Page, or Forum Topic". There's a number of other options for your consideration when creating a content type:

Option
What it's for
Description
Administrative help text for content type
Preview before submitting
You can require or offer a preview of the content before submission
Explanation or submission guidelines
Additional help text for content editors
Publishing options

You can choose whether this content should immediately be published upon saving. More importantly you should also check the "Create new revision" checkbox to ensure that you can compare and revert to older version of the content in case something goes wrong when editing the content.

The other 2 options "Sticky at top of lists" and "Promoted to the front page" are legacy options that reference different ways in which your content can be prioritized in content listings (called views in Drupal).

Display settings
Choose whether to display the author and post date on this content type, which really only makes sense for blog posts or other social content. This should be disabled for most use cases.
Menu settings
Selecting menus here enabled content editor to add the content items to menus on your website.

Here we fill in the name of our content type and disable the options for author information and menu structure. After all we don't want all our job postings to clutter our menu system, you would use the views module to create an overview of available jobs.

Next click the "Save and manage fields" button. Now we're in the content type configuration page and this is where we add the fields that we need on our job vacancies. To see exactly how this works check out the video above!

Building A Content Type For Job Vacancies

Adding Visual Drag And Drop To Your Content Type

Finally we'll show you how to get even more control over the design of your content with Glazed Builder our visual drag and drop builder for Drupal 8 and 7. You can use Glazed Builder on any long-text field in Drupal on any type of entity. To enable Glazed Builder on your content type go to Structure > Content Type > Your Content Type > Manage Display. Here you can select one or more of your text fields (For example the body field) and switch the Format option from Default to Glazed Builder. Take a peak at the end of our youtube video to see the end result!

April 20, 2018
Sometimes we need to alter data after a Drupal 8 migration has finished. With the migration events system, you can easily accomplish this.
Why We need to do this
One of the university clients we are helping migrate their Drupal 7 to Drupal 8 site had an interesting dilemma. They use the Flag module to mark favorite content withi...

Last week I wrote a Drupal module that uses face recognition to automatically tag images with the people in them. You can find it on Github, of course. With this module, you can add an image to a node, and automatically populate an entity_reference field with the names of the people in the image. This isn’t such a big deal for individual nodes of course; it’s really interesting for bulk use cases, like Digital Asset Management systems.

I had a great time at Drupalcon Nashville, reconnecting with friends, mentors, and colleagues as always. But this time I had some fresh perspective. After 3 months working with Microsoft’s (badass) CSE unit – building cutting edge proofs-of-concept for some of their biggest customers – the contrast was powerful. The Drupal core development team are famously obsessive about code quality and about optimizing the experience for developers and users. The velocity in the platform is truly amazing. But we’re missing out on a lot of the recent stuff that large organizations are building in their more custom applications. You may have noticed the same: all the cool kids are posting about Machine Learning, sentiment analysis, and computer vision. We don’t see any of that at Drupalcon.

There’s no reason to miss out on this stuff, though. Services like Azure are making it extremely easy to do all of these things, layering simple HTTP-based APIs on top of the complexity. As far as I can tell, the biggest obstacle is that there aren’t well defined standards for how to interact with these kinds of services, so it’s hard to make a generic module for them. This isn’t like the Lucene/Solr/ElasticSearch world, where one set of syntax – indeed, one model of how to think of content and communicate with a search-specialized service – has come to dominate. Great modules like search_api depend on these conceptual similarities between backends, and they just don’t exist yet for cognitive services.

So I set out to try and explore those problems in a Drupal module.

Image Auto Tag is my first experiment. It works, and I encourage you to play around with it, but please don’t even think of using it in production yet. It’s a starting point for how we might build an analog to the great search_api framework, for cognitive services rather than search.

I built it on Azure’s Cognitive Services Face API to start. Since the service is free for up to 5000 requests per month, this seemed like a place that most Drupalists would feel comfortable playing. Next up I’ll abstract the Azure portion of it into a plugin system, and try to define a common interface that makes sense whether it’s referring to Azure cognitive services, or a self-hosted, open source system like OpenFace. That’s the actual “hard work”.

In the meantime, I’ll continue to make this more robust with more tests, an easier UI, asynchronous operations, and so on. At a minimum it’ll become a solid “Azure Face Detection” module for Drupal, but I would love to make it more generally useful than that.

Join Acro Media's technical Drupal Commerce veteran, Josh Miller (all things programming) and Business Developer, Becky Parisotto (all things business) as they walk through the wild world of physical commerce that is powered by and paired with a Drupal web interface. Both Josh and Becky work together with a number of physical commerce clients. Through our client’s requirements, we have gained a better understanding of the iceberg that is building an interface for retail, and allowing for that true omni-channel experience for both customer, and (sometimes more importantly) the business owner.

Josh will review the state of Point of Sale as it integrates with Drupal Commerce 2 on Drupal 8, compare and contrast fulfillment in the new shipping and inventory modules, and talk about a new module that handles requesting products from your suppliers and updates store stock when its received. Additionally, Becky will walk us through what Drupal Commerce is capable of in the way of “powering your business” and truly being the end to end backend brain for finances, accounting, product management, customer management, shipping, fulfillment, stock, inventory and community. Drupal Commerce is a big box of legos, come and learn how we build fully integrated businesses, from the web to the storefront to the back of house, to the warehouse, and more.

This is meant to be a practical review with easy to digest client examples and micro case studies of how we merge an online tool with a physical store. Setting clients in digital stone, all powered by Drupal.

Talk to us

Acro Media is a Drupal Commerce development agency that specializes in enterprise-level ecommerce. We are committed to building strong strategic partnerships and using our ecommerce expertise to help clients create a dynamic web presence that engages audiences, generates revenue, and boosts brand awareness.

Support the game designs and theoretical work of As If Productions. Written especially for roleplayers, GMs, game designers, artists and neophiles who are interested in experimental applications of narrative engineering.

"Everything you know is just the amplification of a repetition of a summation of a reference to a symbol for a pointer to an interpretation of the generalization of a theory based on the misinterpretation of an assumption."