Saving a link field is quite different from saving a text value in drupal 8. here's how its done.
Populating geolocation field programmatically in drupal 8 is different from normal field values. This snippet does the trick:
When using content moderation, the view_unpblished module does not work. But I really needed to get a user role to see all nodes created of this type and have access to it. With the following snippet, I fixed this. 
Sometimes you forgot to uninstall a module when you removed it. To keep thing clean, uninstall the module using the following drush script.
A thing that is very nice about drupal 8 is the flexibility of views In this tutorial, a snippet about how to show a 'total' count of results of some number fields of a table.
I encountered a problem while working on a big migration. The client wanted to reuse files and images, so I added entity browser functionality. The problem however was that views does not provide a preview image for files. Therefore I created a small module.
When importing tags, or when in development, you would sometimes need to delete all terms from a vocabulary. This snippet does the trick for you.
Twig is the theme engine in drupal 8 sites. This snippet how to link to nodes correctly, without using preprocess functions to do it.
Twig comes with quite some handy functionalities. Date formatting is an example. In this snippet an example of how to show the created date in a drupal 8 time format. 
Sometimes you need a body text that is trimmed. No need to install contrib modules.
Use global theme javascript only in a few occasions. You should make sure javascript is only used on the right places. This snippet shows you how to load javascript when a specific view is loaded only.
Batch processes give you a hard time when using them for the first time. This module example will handle every aspect of it!
A much needed functionality is how you get the url of an image style form the uri (f.e. in a node object). This snippets helps you accomplish this.
When importing content, it is really important you also think about meta tags on your import. Here's how to save them to nodes.
Drupal 8 is becoming more and more API-first based. This means a lot of imports and exports of data will be done. A thing you might face here, is the updating of entity reference fields is a bit tricky. Here I'll show you how it is done.
Paragraphs give great power to drupal 8. This code will show you how you can add them programmatically, for example when importing stuff.
Sending files attached in e-mails is a necessary feature for a lot of applications. This snippet shows you how to attach a managed file f.e. an invoice to your custom e-mail.
I'll share with you some code on how to cache blocks per user. The secret lies in using the right cache context on the build() function of your block.
Here's a html e-mail template example for sending html e-mails.
Configuration management is great. But you'll encounter some difficulties at first when importing existing config to a new site. A typical error is the "Entities exist of type" error. Here's how to fix them.
getting entity field values programmatically is easy, but check this out.
Today I have a small helper module to share with you. A small pain in the ass is that the sending of e-mails requires a bit too much code. More specifically sometimes you would like to send simple alerts to webmasters. This helper module helps you with it.
One of the biggest flaws in drupal is the disability to do something easy as sending html emails out-of-the-box. In drupal 8 it is already slightly better, but you would need to know some things.
Config entities are new in drupal 8. The differ a bit from content entities. Here a snippet on how to get the value of a field programmatically.
Drupal set message was deprecated in Drupal 8.5 and will be removed before Drupal 9. Time for a roundup of this new API and how to use it.
The way of handling javascript and css is different from drupal 7. This snippet shows how to do it.
When you give users the permission to administer users, there is a security implication in that users with this permission can add the role 'administrator' role to any user.

Block access is a powerful way to show or hide content in some contexts. Instead of using contrib modules, this is very easy in small pieces of custom code. The following code prevents access to a block based on a subscription field in the user object.

The following code shows how to create a custom form in the drupal back-end and how to save custom config defined in your custom module. Powerful stuff and very flexible.

You can update custom config with a settings form you build. 
In a custom module *custom_mailing* add a file called *custom_mailing.routing.yml* add the following route:

Custom formatters are great to get precise control over your field output. But I ran into something difficult when trying to output the description of a file field.
In a node teaser or full view mode it is for front-end purposes needed to know if an image is available. This snippet takes care of it.
When using twig, sometimes you would like to know whether the view has results or not. This snippet shows you how.
How do you get the base url of a drupal 8 website programmatically?
Little snippet to show how to query nodes with f.e. condition of "1 week ago".
In drupal 8 you can experience your datefields showing up in English instead of in the language of your website. This fixes it.
By default you get to see a strange screen saying how long your are a member. It is good practice to auto-redirect users on login to the /admin/content page. This snippet does the trick.
A composer update of your drupal can override changes to your htaccess file. With this snippet you can patch it correctly.
It is seen as a bad practice to add complete libraries to your theme in drupal 8. You should add these as packages to your composer file.
The page callback system in drupal 8 is considerably different from drupal 7. This snippet shows you how to show a title depending on your language.
The typical 'from' 'to' datefields are not quite good for usability. With the following snippet you can change the labels.
Snippet to create a link with a class programmatically.
When editing notes, an often mentioned problem of webmasters is the lack of preview of their text. With this snipped you can embed the css of your theme in CKEditor, which makes it much more visible towards your webmasters.
Drupal 8 will standard give the term name as page title on /taxonomy/term/term-foo. I want to alter this so it says "Items tagged with Term foo". 
How can you query for nodes, terms etc of a drupal 7 website from your drupal 8 website? 
A frustrating thing for webmasters is often that they cannot see the eventual lay-out of text styling in their CKEditor. This snippet fixes this issue.
This module explains how you can add custom scripts inside your controllers. Something that is useful for things like e-commerce and advertising.
This little tip adds just that extra good feeling for your webmasters. And a click less to the "Add content" page.
The following snippet makes you format a date field inside a twig file.
You often need to get the current language in your Drupal 8 custom modules or theme. Here's how to get it.
Sometimes you want to import specific config files, out of your main config library. Here's a drush snippet which does exactly that.
When a drupal site has different domains for its language, difficulties can arise when developing locally. With this snippet, you override your language settings, so prefixes are used instead of domains.

Always try to use the core functions for linking inside custom formatters or modules. The following snippet allows html inside the link text.

use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\Core\Render\Markup;
$linkText = 'My link <br> containing tags';
$linkMarkup = Markup::create($linkText);
$link = Link::fromTextAndUrl($linkMarkup, $url);
$link = $link->toRenderable();
I personally like using the drupal menu block module. It allows for quick creation of submenu's. The following patch fixes a bug that keeps showing regions, even when there are no subitems in the menu block.
$date = strtotime($importObject->created_at); // which is a date format
$node->set('created', $date);
// $node->save(); etc


When saving nodes programmatically, you probably want to set the body to accept html. it is important to set the input format, so html is accepted.
This is quite a nice feature to run database operations on your website. Found some wrong implementations so I thought I'd share it here.

From time to time it comes in quite handy to import configuration from other websites into yours. You site uuid is unique though, with the following snippet you get yours.

drush config-get "" uuid

To set the uuid in drush:

drush cset uuid 9b13adbf-0da5-4937-a731-xxxxxxxxxxx -y

A typical setup is one where you would redirect all non www and http requests to I prefer to keep my .htaccess file in version control also. With the following snippet, I get it the way I want it.

The following snippet will return your langcode f.e. 'en', 'nl', etc. Use the following code:

// Get current language code
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();


I started using an automated script for my drupal installation, which will generate an admin user. But, after installation I have to edit the password.
I like a good user interface for webmasters, so a clear menu path is necessary. For the admin toolbar dropdowns, I usually create subitems programmatically. 
While there are many ways to debug your errors, sometimes just seeing the full errors in your screen works best.
I recently had an issue with ckeditor inside pop-ups (modals) in drupal 8. This snippet is the solution to it.
I recently found out a bug I wasn't aware of. My default text format wasn't saved on a body field. I attached a snippet to fix this.
I've had some difficulties loading a list of translated terms. More in particular I didn't want to show the untranslated terms, but ONLY the ones that were already translated in the current language
A snippet with submitForm to redirect your form to another page and pass a variable.
With this snippet, you will be able to render a list of tags in drupal 8.
By default, users with the permission of 'administer users' cannot assign roles on the user registration form. With this snippet you can, but make sure to hide the 'administrator'-role for your users.
I encountered this bug in a Display suite 2-column lay-out where I wanted the left region to disappear when empty. 
If you like to use the search api or a custom Views page for your search result I personally like to use the default search block and redirect it to my results page.
When creating custom blocks, sometimes you need to make sure the block is never cached f.e. when including dynamic links. 

In this case I created a custom entity called 'submenu'. In my custom module a used HOOK_LINK_ALTER to make the submenu (which contains a textfield) visible on hover. I used the code below to render my custom entity content:

In some cases you want to embed a view inside your custom module. The views_embed_view() function is the way to go. With this little snippet, you can render any view.
With this simple snippet, menu items are saved as expanded when you save your node. In some cases, this is a necessary functionality.
When using lazy loading of images, I encountered an important issue. Social sharing engines like Facebook can't read placeholder images. In this drupal 8 tutorial we'll fix this issue by creating a small custom module handling image tokens.
Ever looked at Pinterest or Google images and wondered how to achieve this nice effect of loading in images? One of the things that frustrated me building drupal websites is the lack of nice front-end libraries. Fancyload solves the problem!