How to Make Fields Persistent in Drupal 8

I wrote a custom module recently where I needed to programmatically attach a field; similar to how a Body field gets added to content types.

If you create a content type, via the “Content types” page, a Body field is automatically added to the content type. If you don’t need the field just delete it, but the default functionality is to have it added.

I wanted this same functionality in my custom module; when an entity is created a field is programmatically attached to it.

So I reverse engineered how the Body gets added to content types. In the Node module, the Body field is exported as and the field is attached using the node_add_body_field function.

Continue reading

How to Print Variables using Kint in Drupal 8

While developing a module or modifying a template in Drupal you’ll often print variables, especially if you’re in a preprocess hook.

You learn early on how to use var_dump and print_r function. But these functions can sometimes display too much information and can be hard to filter through the arrays or methods in the variable.

In Drupal 7, with the Devel module, you could use the dpm or dsm function. When used, these functions will print variables at the top of the page or in the message area using Krumo.

Now in Drupal 8, Devel has adopted a new library to print variables and it’s called Kint.

Continue reading

Debug Site Performance Using Web Profiler in Drupal 8

In the beginning of any Drupal project the site loads very quickly because there aren’t many modules installed. But as you add modules, the performance of the site will become slower and slower.

There’s always a certain point in the project where you realize it’s time to look at the problem and see if it’s a rogue module or some dodgy code, we’ve all seen this.

Trying to debug a performance issue can be tedious work. But often, it comes down to having too many queries loaded on a page.

If you’re on Drupal 7, just enable query logging using the Devel module. This will show all the queries generated at the bottom of the page.

But for Drupal 8 we have something better: Web Profiler.

Web Profiler is a Drupal 8 port of the Symfony WebProfiler bundle. The port is possible because Drupal 8 uses Symfony components.

Web Profiler adds a toolbar at the bottom of every page and shows you all sorts of stats such as the amount of database queries loaded on the page, which services are used and much more.

Continue reading

New Videos: Banner Paragraph Type

I’m happy to announce that a new section has been published on our “Build Edge-to-edge Sites using Paragraphs in Drupal 8” course over at WebWash Courses.

The latest section will teach you how to create a Banner paragraph type. The paragraph is great for displaying images full width and can be used to display text with an image as a background.

In this section, you’ll learn the following:

  • How to nest paragraphs and create a container paragraph type
  • Learn about the Color Field module
  • Learn how to resize an image using image styles within a preprocess

The next section currently in the works will teach you how to display a Bootstrap Carousel.

Continue reading

Presentation: Search in Drupal 8

At this month’s Sydney Drupal meet up I did a presentation about Search in Drupal 8. In the video, I explain three ways you can create a search page, they are as follows.

1. Core Search

The core Search module which comes with Drupal has some new functionality in Drupal 8. The biggest change is the ability to create custom search pages without using any other module.

2. Views Filter

A common way to build search pages in Drupal 7 was to create a views page and use the “Search Keywords” filter in views. This can still be done in Drupal 8 and best of all Views is now part of core.

3. Search API

The Search API module is used to create powerful search pages and it’s highly extensible. It is the module to learn and use for building search pages.

Continue reading

Introducing WebWash Courses and the Paragraphs for Drupal 8 Course

You may have noticed that I haven’t posted any tutorials over at WebWash for a while. That’s because for the last month and a half, I’ve been working on producing an online video course for Paragraphs in Drupal 8.

With that said, I’m proud to announce the first release of “Build Edge-to-edge Sites using Paragraphs in Drupal 8“.

The course will be released in stages as the videos are produced. In the current course you’ll learn:

Continue reading

How to Create a Search Page in Drupal 8

Building a search page isn’t as straight forward as you’d think. At first a client will want something which users can search content, then they may want to modify the search results or even change the ranking of certain content. Long story short, something you thought would be as simple as enabling a module, ends up taking twice as long.

If you need to create custom search pages in Drupal 7, more often than not, you use Search API or create a search page using Views. But the core Search module for Drupal 8 has become more powerful than in Drupal 7. One of the big changes, for site builders, in Drupal 8 is the ability to create custom search pages.

However, there’re a few limitations to creating a search page. First, it’ll have a prefix of “search/” in front but the full URL can be changed by creating a URL alias. Second, you can only adjust the content ranking on these pages. If you want to index extra fields or remove ones from being indexed, you’ll still need Search API to do this.

In this tutorial, you’ll learn how to create a custom search page and how to modify the search results by overriding a template.

Continue reading

Lightning Talk: Page Manager and Panels in Drupal 8

At March’s Sydney Drupal user group, I did a lightning talk on Page Manager and Panels in Drupal 8. In the talk, I demonstrate both modules and show you how to create a custom homepage with a few clicks. You can watch the whole talk in the video above.

Panels in Drupal 8 has changed considerably. The UI for building pages is now offered by Page Manager, with Page Manager UI installed, and not Panels itself. The UI also changed, but I think it’s much easier to use than in Drupal 7, but that’s my opinion.

Continue reading

Display Paragraphs Edge-to-edge using Bootstrap in Drupal 8

So far I’ve introduced you to the Paragraphs module where we created a basic paragraph type which allows you to display content as movable components. Then we looked at how to create container paragraphs, and this time we created a Banner which let us display nested paragraph items.

By now you should have a basic understanding of why you should use Paragraphs and how to use the module.

Today I want to teach you how to display paragraphs edge-to-edge using Bootstrap as the theme. We’ll use the Banner paragraph, which we created in the last tutorial, to display an image full width but have the nested paragraphs centered.

Continue reading

How to Create Powerful Container Paragraphs in Drupal 8

In the last Paragraphs tutorial, you were introduced to the module and we created a basic paragraph type called Content. We only skimmed the surface of what the module can really do. To utilize Paragraphs to its full potential you need to learn how to create a container paragraph type and nest paragraph items.

The concept of a container is fairly simple. It’s a paragraph type that has its own paragraph field on it and allows a user to nest paragraph items.

In this tutorial, we’ll create a container paragraph called Banner, it’ll have two fields: image and paragraphs.

When a banner paragraph is created and an image is uploaded, the image will be displayed as a background style. Now, I do understand there’re multiple ways of doing this, but for simplicity we’ll set it using a background style on the paragraph element.

All nested paragraphs will be rendered inside the container and displayed with the background. If you want to add any other settings, i.e., parallax configuration, you would place it on the container paragraph.

Continue reading
1 2 3 14