Drupal Planet

Subscribe to canal de noticias Drupal Planet
Drupal.org - aggregated feeds in category Planet Drupal
Actualizado: hace 7 horas 28 mins

Appnovation Technologies: Simple Website Approach Using a Headless CMS: Part 1

Mié, 02/06/2019 - 06:00
Simple Website Approach Using a Headless CMS: Part 1 I strongly believe that the path for innovation requires a mix of experimentation, sweat, and failure. Without experimenting with new solutions, new technologies, new tools, we are limiting our ability to improve, arresting our potential to be better, to be faster, and sadly ensuring that we stay rooted in systems, processes and...

erdfisch: Drupalcon mentored core sprint - part 2 - your experience as a sprinter

Sáb, 05/12/2018 - 06:00
Drupalcon mentored core sprint - part 2 - your experience as a sprinter 12.05.2018 Michael Lenahan Body:  Drupalcon mentored core sprint - part 2 - your experience as a sprinter

Hello! You've arrived at part 2 of a series of 3 blog posts about the Mentored Core Sprint, which traditionally takes place every Friday at Drupalcon.

If you haven't already, please go back and read part 1.

You may think sprinting is not for you ...

So, you may be the kind of person who usually stays away from the Sprint Room at Drupal events. We understand. You would like to find something to work on, but when you step in the room, you get the feeling you're interrupting something really important that you don't understand.

It's okay. We've all been there.

That's why the Drupal Community invented the Mentored Core Sprint. If you stay for this sprint day, you will be among friends. You can ask any question you like. The venue is packed with people who want to make it a useful experience for you.

Come as you are

All you need in order to take part in the first-time mentored sprint are two things:

  • Your self, a human who is interested in Drupal
  • Your laptop

To get productive, your laptop needs a local installation of Drupal. Don't have one yet? Well, it's your lucky day because you can your Windows or Mac laptop set up at the first-time setup workshop!

Need a local Drupal installation? Come to the first-time setup workshop

After about half an hour, your laptop is now ready, and you can go to the sprint room to work on Drupal Core issues ...

You do not need to be a coder ...

You do not need to be a coder to work on Drupal Core. Let's say, you're a project manager. You have skills in clarifying issues, deciding what needs to be done next, managing developers, and herding cats. You're great at taking large problems and breaking them down into smaller problems that designers or developers can solve. This is what you do all day when you're at work.

Well, that's also what happens here at the Major Issue Triage table!

But - you could just as easily join any other table, because your skills will be needed there, as well!

Never Drupal alone

At this sprint, no-one works on their own. You work collaboratively in a small group (maybe 3-4 people). So, if you don't have coding or design skills, you will have someone alongside you who does, just like at work.

Collaborating together, you will learn how the Drupal issue queue works. You will, most likely, not fix any large issues during the sprint.

Learn the process of contributing

Instead, you will learn the process of contributing to Drupal. You will learn how to use the issue queue so you can stay in touch with the friends you made today, so that you fix the issue over the coming weeks after Drupalcon.

It's never too late

Even if you've been in the Drupal community for over a decade, just come along. Jump in. You'll enjoy it.

A very welcoming place to start contributing is to work on Drupal documentation. This is how I made my first contribution, at Drupalcon London in 2011. In Vienna, this table was mentored by Amber Matz from Drupalize.Me.

This is one of the most experienced mentors, Valery Lourie (valthebald). We'll meet him again in part 3, when we come to the Drupalcon Vienna live commit.

Here's Dries. He comes along and walks around, no one takes any notice because they are too engaged and too busy. And so he gets to talk to people without being interrupted.

This is what Drupal is about. It's not about the code. It's about the people.

Next time. Just come. As a sprinter or a mentor. EVERYONE is welcome, we mean that.

This is a three-part blog post series:
Part one is here
You've just finished reading part two
Part three is coming soon

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

KnackForge: How to update Drupal 8 core?

Sáb, 03/24/2018 - 02:01
How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31

PreviousNext: Bare Templates: Removing Unnecessary Markup in Twig files

Jue, 03/15/2018 - 05:48

In most of the projects we build, the HTML markup provided by core just gets in the way. There is way too many wrapper divs. This can cause issues when trying to create lean markup that matches what is produced in a generated styleguide.

In this post, I'll introduce you to the concept of bare templates, and how you can remove unnecessary markup from your Twig templates.

by Pasan Gamage / 15 March 2018

In Drupal 8, a couple of themes are shipped by default to serve a common set of end user needs.

Among them are:

  • Bartik: A flexible, recolourable theme with many regions and a responsive, mobile-first layout.
  • Seven: The default administration theme for Drupal 8 was designed with clean lines, simple blocks, and sans-serif font to emphasise the tools and tasks at hand.
  • Stark: An intentionally plain theme with almost no styling to demonstrate default Drupal’s HTML and CSS.
  • Stable: A base theme. Stable theme aggregates all of the CSS from Drupal core into a single theme. Theme markup and CSS will not change so any sub-theme of Stable will know that updates will not cause it to break.
  • Classy: A sub-theme of Stable. Theme designed with lot of markups for beginner themers.

But in an actual business scenario the requirements and expectations of a client towards the look and feel of the website is far more distinct than the themes that are provided in Drupal core.

When building your site based upon one of these themes it is common to face issues with templating during the frontend implementation phase. Quite often the default suggested templates for blocks, nodes, fields etc. contain HTML wrapper divs that your style guide doesn’t require.

Usually the most effective way is to build themes using the Stable theme. In Stable, the theme markup and CSS are fixed between any new Drupal core releases making any sub-theme to less likely to break on a Drupal core update. It also uses the verbose field template support for debugging.

Which leads us to use bare templates.

What is a bare template?

A bare template is a twig file that has the minimum number of HTML wrappers around actual content. It could be simple as a file with a single content output like {{content.name}}

Compared to th traditional approach, bare templates provide benefits such as:

  • Ease of maintenance: With minimum markup the complexity of the template is much lesser making it easy to maintain.
  • Cleaner Markup: The markup will only have the essential or relevant elements where as in traditional approach there are a lot of wrappers leading to a complex output.
  • Smaller page size: Less markup means less page size.
  • Avoids the need for markup removal modules: With bare markup method we do not need to use modules like fences or display suite. Which means less modules to maintain and less configuration to worry about.
Our Example

We need to create a bare template for type field and suggest it to render only field name and field_image of my_vocabulary taxonomy entity. This will avoid Drupal from suggesting this bare template for other fields belonging to different entities.

Field template

Let's have a look at field template which resides at app/core/themes/stable/templates/field/field.html.twig

{% if label_hidden %} {% if multiple %} {% for item in items %} {{ item.content }} {% endfor %} {% else %} {% for item in items %} {{ item.content }} {% endfor %} {% endif %} {% else %} {{ label }} {% if multiple %} {% endif %} {% for item in items %} {{ item.content }} {% endfor %} {% if multiple %} {% endif %} {% endif %}

As you see there is quite a lot of div wrappers used in the default template which makes it difficult to style components. If you are looking for simple output, this code is overkill. There is however, a lot of valuable information is provided in the comments of field.html.twig which we can use.

{# /** * @file * Theme override for a field. * * To override output, copy the "field.html.twig" from the templates directory * to your theme's directory and customize it, just like customizing other * Drupal templates such as page.html.twig or node.html.twig. * * Instead of overriding the theming for all fields, you can also just override * theming for a subset of fields using * @link themeable Theme hook suggestions. @endlink For example, * here are some theme hook suggestions that can be used for a field_foo field * on an article node type: * - field--node--field-foo--article.html.twig * - field--node--field-foo.html.twig * - field--node--article.html.twig * - field--field-foo.html.twig * - field--text-with-summary.html.twig * - field.html.twig * * Available variables: * - attributes: HTML attributes for the containing element. * - label_hidden: Whether to show the field label or not. * - title_attributes: HTML attributes for the title. * - label: The label for the field. * - multiple: TRUE if a field can contain multiple items. * - items: List of all the field items. Each item contains: * - attributes: List of HTML attributes for each item. * - content: The field item's content. * - entity_type: The entity type to which the field belongs. * - field_name: The name of the field. * - field_type: The type of the field. * - label_display: The display settings for the label. * * @see template_preprocess_field() */ #} The code Building the hook.

We will be using hook_theme_suggestions_HOOK_alter() to suggest the two fields to use our bare template when rendering.

It is important to note that only these two fields will be using the bare template and the other fields (if any) in that entity will use the default field.html.twig template to render.

my_custom_theme_theme_suggestions_field_alter (&$hooks, $vars){     // Get the element names passed on when a page is rendered.     $name = $vars['element']['#field_name'];     // Build the string layout for the fields.     // :::     $bare_hooks = [         'taxonomy_term:my_vocabulary:teaser:name',         'taxonomy_term:my_vocabulary:teaser:field_logo',     ];     // Build the actual var structure from second parameter     $hook = implode(':', [         $vars['element']['#entity_type'],         $vars['element']['#bundle'],         $vars['element']['#view_mode'],         $vars['element']['#field_name'],     ]);     // Check if the strings match and assign the bare template.     if (in_array($hook, $bare_hooks, TRUE)) {         $hooks[] = 'field__no_markup';     } }

The hook key field__no_markup mentioned in the code corresponds to a twig file which must reside under app/themes/custom/my_theme/templates/field/field--no-markup.html.twig

Debugging Output

In order to see how this is working, we can fire up PHPStorm and walk the code in the debugger.

As you can see in the output below, the implode() creates the actual var structure from the second parameter. We will use this to compare with the $bare_hooks array we created  fields specific to content entity types that we need to assign the bare template.

Note: As best practise make sure you pass a third argument TRUE to in_array(). Which will validate the data type as well.


Bare Template Markup

The following is the contents of our bare template file. Notice the lack of any HTML?

{# /** * @file * Theme override to remove all field markup. */ #} {% spaceless %} {% for item in items %} {{ item.content }} {% endfor %} {% endspaceless %}

Bare templating can be used for other commonly used templates as well. To make it render a minimal amount of elements.


We can always use custom templating to avoid getting into complicated markups. And have the flexibility to maintain the templates to render for specific entities.

Resources Tagged Style Guides, Twig

Amazee Labs: Launching Kinderregion

Jue, 03/15/2018 - 05:04
Launching Kinderregion

We’re super excited! The new Kinderregion website has finally launched and brings their motto of Great parents need great tips for trips to life. 

It showcases a wide variety of exciting activities for kids. Families living in Switzerland can now plan a fun day for the whole family by browsing the site. Built on the same framework as Zurich Tourism, Kinderregion showcases highly engaging content that is structured, helpful and of interest to the user. 

Nicole Blum Thu, 03/15/2018 - 09:04 The idea

By building Kinderregion on the same framework as Zurich Tourismus, the new site would have to to offer highly valuable content in a structured and appealing manner. The events section should benefit from the main site’s interactive features such as instant filters and an interactive map based on React. As Kinderregion is a content heavy website, we would need to allow content editors to easily change the front page and the menu. Similarly, we would need the ability to deploy code and configuration changes without losing the customisations done by the client. Just as with zuerich.com, our idea to solve this was using the Panels ecosystem.

The most challenging part of the project

Creating something complex on a tight budget can be tricky. We were, however, able to solve this by re-applying certain existing elements throughout the entire site. Along the way, our team learned a bunch of new things and strengthened their skill sets even more. One highlight being how to override existing styling when working with the sub-template.

The Result

We implemented Kinderregion as a subsite of the main Zurich Tourism website, based on the Domain module. This allows us to share mission content across both websites and most importantly, benefit from the infrastructure that the Zurich Tourism Website already provides. We also added to the permission system and the reactive events filter section on the Landing pages.

The same layout used for zuerich.com is applied to Kinderregion, and is based on the "Panels suite". It is built using "Panels everywhere", which enables us to export the site layout and it’s domain-specific variants to features. Following the same logic, the home page is based on a panel page with different variants for each domain. The mega menu is composed of mini panels, loading into specific menu items through the use of the menu mini panel module. The consistent use of panels for all of these different areas allows the content editors to easily update the front page and makes it possible for us to deploy code and configuration changes, without losing the customisations done by the client. Hence, the sites heavy content is displayed in a coherent and captivating manner.

We loved collaborating with Zurich Tourism again on this new project and also really enjoyed working alongside the creative agency Rosarot Ideennetz throughout the process. All input and guidance has been super valuable and highly appreciated.   

Agiledrop.com Blog: AGILEDROP: Our blog posts from February

Mié, 03/14/2018 - 22:09
You have already seen what Drupal blogs were trending in the previous month, and now it is time to look at all our blog post from February.    The first blog post in February was What can Drupal agencies expect in 2018 by our Commercial director Iztok. He looked at the technology trends and how they are changing, how can those changes influence on Drupal agencies and what can we expect in the future. What are the conclusions from Drupal Business Survey, including responses from 200 different Drupal agencies? Iztok did a SWOT analysis based on digital agency reports from 2017 and outlooks… READ MORE

MTech, LLC: Drupal 8 Contrib Upgrade Status

Mié, 03/14/2018 - 17:13
Drupal 8 Contrib Upgrade Status

One of the things I constantly get asked about in the Drupal 8 migrate space is when will migrate be ready for use. With the API being marked stable in 8.5.0, now is a good time to consider upgrading. Upgrading a D6 or D7 site should be ready, especially if you have mainly core modules in use. However, what about when your site used a contrib module or two or ten?

Lucas Hedding Wed, 03/14/2018 - 14:13

Mediacurrent: How to Make the Most of Your DrupalCon BOF Experience

Mar, 03/13/2018 - 15:23

DrupalCon Nashville is coming up and that means another chance to create deeper connections with the Drupal community by attending or facilitating Birds of a Feather sessions (BOFs). The DrupalCon team has summarized what a BOF is on the DrupalCon website:

Manifesto: DrupalCamp London 2018 – business, code and community

Mar, 03/13/2018 - 13:16
This year’s DrupalCamp London was probably the best ever. Either you were there for business, for learning more, or for meeting friends old and new. The camp itself was a perfect fit for all roles. Always something interesting, never a boring moment. The chatbots are here Saturday I spoke at “Hi, I’m Drupal. How can. Continue reading...

Acro Media: Digital Products and Recrurring Subscriptions in Drupal Commerce 2

Mar, 03/13/2018 - 12:25

In a previous post, we covered the basics of the Urban Hipster demo that Acro Media put together to showcase the amazing out-of-the-box functionality available with Drupal Commerce 2. Let us now turn our attention to some of the "plus" features that are still possible with Drupal Commerce, but that aren't quite so easy right out of the box.

Recurring subscriptions

Recurring subscriptions are really two things: recurring payments (payments that happen on a schedule) and also licensing (getting access to something). Those two things usually have to go together. For instance: you automatically pay $10 every month (the recurring payment) and you get Netflix (the license).

But there are things to think about. What if a customer's credit card doesn't process because they cancelled it and got a new one? Do they stop getting access immediately? Is there a grace period? You might not want to cancel outright; you might want to try to encourage renewal. Drupal Commerce 2 can handle all of that.

Digital products

A digital product can be a download, or access to a site, or a key that activates a trial. In the Urban Hipster demo site, Sir Mix-a-Bit is the digital product. When you go through the sales funnel, you can choose from three different subscription lengths (one month, three months, six months). You're able to add it to your cart, and it displays exactly the same way as any other product. The difference is that once you purchase it, Drupal Commerce knows it's a digital good, so it's handled slightly differently.

Drupal Commerce has two default product types: physical and digital. It understands that it doesn't need shipping or dimension details for digital products, and there is no fulfillment necessary on the back end (although you can if you need it).

The recurring subscription functionality is not limited to digital products, by the way. It could be a donation, in which case there is no product. Or it could be amortized payments, where customers pay for a product over time.

How different is this from Commerce 1?

It's simpler and more streamlined. In Commerce 1, you needed a whole suite of modules because you had to have the card-on-file functionality and so on; now, you just add two modules and all the functionality is there. It's much easier to work with.

Check out the Sir Mix-A-Bit recurring subscription digital product page.

More from Acro Media

Chat with us

If you'd like a personalized tour to discuss how Drupal Commerce fits into your ecommerce solution, give us a shout. We're happy to show and tell.

ADCI Solutions: The easiest way to improve your Vue.js application. Part 1

Mar, 03/13/2018 - 09:05

We keep playing with Vue.js. Previously we've created a simple SPA application and gave the instructions how to use Drupal on the back-end.


This time we are polishing our app and using prerendering to solve an SEO problem.


Learn how to deal with it




Valuebound: How to integrate Bynder DAM System with Drupal 8

Mar, 03/13/2018 - 08:13

In order to have a strong online presence, it's significant to offer an amazing digital experience to customers. And for this, offering a seamless experience to content managers is extremely important. To achieve this one of very important aspect is making digital assets available at different web properties to editors while they are creating content. These assets should be searchable with meta information as well as other related information. Bynder is one such digital asset management system that allows easy access to your digital file.

Let’s have a look what Bynder is and how to integrate it with Drupal 8 web application to import digital files into content pieces.

First thing first, Bynder is a cloud-based platform that helps marketers to create, find, and use…

Appnovation Technologies: Drupal 8 Top Ten: Where Features Meet Functionality

Mar, 03/13/2018 - 04:00
Drupal 8 Top Ten: Where Features Meet Functionality Drupal 8 Top Ten: Where Features Meet Functionality Here at Appnovation, we live, love and breath all things Drupal, so it should come as no surprise that Drupal 8 is a big deal to us. With a cast list of over 3,000 contributors, Drupal 8 is a testament to the open source community, in which we have an active role, our dedication...

Metal Toad: Programmatically Importing Drupal 8 Field Configurations

Lun, 03/12/2018 - 23:33
Programmatically Importing Drupal 8 Field Configurations Marcus Bernal Tue, 03/13/2018 - 02:33

Sometimes during development, a chicken and egg situation happens when business logic intersects with Drupal's mechanisms. For instance, a custom module, client_business_logic, is built to handle some unique, abstract bit of logic which depends on a taxonomy vocabulary that has fields added to it.

MidCamp - Midwest Drupal Camp: ICYMI: Next year at O'MidCamp!

Lun, 03/12/2018 - 18:41
ICYMI: Next year at O'MidCamp! Next Year is O'MidCamp

Mark your calendars, next year MidCamp is St. Patrick's day weekend, March 14–17, 2019. Join us for the fun and add "saw the river dyed green" to "learned all the things".

MidCamp - Midwest Drupal Camp: MidCamp 2018 is a wrap

Lun, 03/12/2018 - 18:39
MidCamp 2018 is a wrap

MidCamp 2018 is in the books, and we couldn't have done it without all of you. Thanks to our trainers, trainees, volunteers, organizers, sprinters, venue hosts, sponsors, speakers, and of course, attendees for making this year's camp a success.

Videos are up

By the time you read this, we'll have 100% of the session's recordings from camp up on our YouTube Channel. Find all the sessions you missed, share your own session around, and spread the word. While you're there, check out our list of other camps who also have a huge video library to learn from.

Tell us what you thought

If you didn't fill it out during camp, please fill out our quick survey. We really value your feedback on any part of your camp experience, and our organizer team works hard to take as much of it as possible into account for next year.

Nextide Blog: Maestro D8 Concepts Part 4: Interactive Task Edit Options

Lun, 03/12/2018 - 16:34

This is part 4 of the Maestro for Drupal 8 blog series, defining and documenting the various aspects of the Maestro workflow engine.  Please see Part 1 for information on Maestro's Templates and Tasks, Part 2 for the Maestro's workflow engine internals and Part 3 for information on how Maestro handles logical loopback scenarios.

Nextide Blog: Drupal Ember Basic App Refinements

Lun, 03/12/2018 - 16:34

This is part 3 of our series on developing a Decoupled Drupal Client Application with Ember. If you haven't yet read the previous articles, it would be best to review Part1 first. In this article, we are going to clean up the code to remove the hard coded URL for the host, move the login form to a separate page and add a basic header and styling.

We currently have defined the host URL in both the adapter (app/adapters/application.js) for the Ember Data REST calls as well as the AJAX Service that we use for the authentication (app/services/ajax.js). This is clearly not a good idea but helped us focus on the initial goal and our simple working app.

Nextide Blog: Untapped areas for Business Improvements

Lun, 03/12/2018 - 16:34

Many organization still struggle with the strain of manual processes that touch critical areas of the business. And these manual processes could be costlier that you think. It’s not just profit that may be slipping away but employee moral, innovation, competitiveness and so much more.

By automating routine tasks you can increase workflow efficiency, which in turn can free up staff for higher value work, driving down costs and boosting revenue. And it may be easier to achieve productivity gains simpler, faster, and with less risk that you may assume.

Most companies with manual work processes have been refining them for years, yet they may still not be efficient because they are not automated. So the question to ask is, “can I automate my current processes?”.

Nextide Blog: Maestro D8 Concepts Part 3: Logical Loopbacks & Regeneration

Lun, 03/12/2018 - 16:34

This is part 3 of the Maestro for Drupal 8 blog series, defining and documenting the various aspects of the Maestro workflow engine.  Please see Part 1 for information on Maestro's Templates and Tasks, and Part 2 for the Maestro's workflow engine internals.  This post will help workflow administrators understand why Maestro for Drupal 8's validation engine warns about the potential for loopback conditions known as "Regeneration".