Introduction
Github is a Craft CMS crystal ball, plus tips, plugins and more.
Welcome to issue 101. Thanks for being here!
You can learn a lot about the future of projects hosted on Github just by reading. This issue features several links to the Craft CMS Github repo that reveal what’s coming soon in Craft.
We’ve also got another crop of tips shared by you, members of the Craft community. Thank you! As always, if you’ve got a Craft-related link to share, visit the submit page.
Thank you to the sponsors of this issue.
Retour from nystudio107 helps you maintain the SEO of your links even when the URL changes.
Freeform from Solspace makes form-building easy, from basic to complex.
Let’s hit the links.
-John Morton
News
Craft 3.3.16.3
Craft 3.3.16.3 is now out. There have been four releases since the last issue.
Craft now makes most of its API requests from JavaScript rather than PHP, so servers with maxed-out HTTP connections won’t get hung up waiting for the API response before serving additional requests.
Milestones for Craft 3.4 and Craft 4.0
Do you wonder what we might see in future versions of Craft? You can check the public milestones for each release on Github at the link above.
Craft 3.4 will allow pruning entry revisions via CL
In 3.2 the maxRevisions
config allowed you to control how many revisions of entries will be saved in the database. Craft 3.4 will have a complementary CLI command to prune out extra revisions across the board if maxRevisions
is decreased.
Upcoming Craft 3.4 control panel improvements
More goodies from Github. Check out these refinements coming to the control panel in 3.4.
The Front-End Tooling Survey 2019
The results in this survey are from a sample of front-end developers. They shouldn’t be taken as gospel but show rough trends in the tools we use.
Featured Sponsor

Retour - Intelligent 404 redirect handling
Retour allows you to intelligently redirect legacy URLs, so that you don’t lose SEO value when rebuilding & restructuring a website
Tools, tips, and fundamentals
Manage devMode and other settings in your .env file.
The PHP getenv
function returns a string. That means you can use the FILTER_VALIDATE_BOOLEAN
filter to manage Craft settings in .env
by using the following syntax in your config/general.php
file.
'devMode' => filter_var(getenv('DEV_MODE'), FILTER_VALIDATE_BOOLEAN);
What is the PHP filter doing? Here's what the PHP docs say.
Returns TRUE for "1", "true", "on" and "yes". Returns FALSE otherwise.
So, in the .env
file you can use "1", "true", "on" and "yes" to turn on config options in Craft like this.
DEV_MODE=1
Can I disable the Craft CMS control panel?
There is not a way to kill the control panel from within the control panel. If so, how could you undo that? No worry. You do have other options for locking down access to the control panel, as shown in this post.
Cleaner, more readable Twig conditionals
Jake Dohm tweeted about writing readable conditionals in your Twig templates. The link above is to Jake's example showing both the "bad" and "good" versions.
Using Twig tag function
Piotr shared a quick tip on how to use the tag
function to create an input
tag with nothing but Twig.
Perfecting your technique
An Effective Twig Base Templating Setup
Andrew shared a good base templating setup for your Craft CMS Twig templates to provide a stable, solid foundation on which to build.
Craft 3 CMS website for the City of Oakland.
This git repo for the Craft 3 site for the City of Oakland was recently mentioned in Discord. The topic of the discussion was setting up Craft with Laravel Mix and Tailwind. Look through the package.json
, tailwind.config.js
, and webpack.mix.js
files to see how it works.
Grouping Entries by First Letter of Last Name
Sean Smith shared an elegant solution on how to group entries by a field, for example, grouping authors by their last name.
SSL on LocalHost with MAMP Pro for Windows
Sean is back to share some more knowhow. This time he shows how to get SSL certs working in Mamp Pro for Windows.
Creating a Custom Logger for Craft CMS
Andrew has updated this post to include Monolog. “Monolog is sort of a meta logger, in that it handles sending your logs to files, sockets, inboxes, databases and various web services.”
Debugging variables in Craft CMS
This post discusses multiple options for debugging variables in Craft.
Algolia-Powered Search in Craft
For CraftQuest subscribers: A simple approach to getting Algolia-powered search for your Craft CMS entries. We use two Craft plugins to make fast Algolia search available in our Craft CMS templates.
Do Git tags only apply to the current branch?
This Stack Overflow post does much more than simply answer the question posed in the title. (The short answer is "no," which doesn't help very much.) You’ll come away with a good understanding of both tags and branches.
Deploying a Craft site to Netlify with Blitz 3
Using the Git Deployer that comes with Blitz 3, you can now deploy a Craft CMS site to Netlify Edge (their super-charged CDN).
Syncing your DB and assets across environments in Craft 3
The most tedious part of deploying a website from local to staging to production is importing/exporting the database and user files (assets). No longer.
This post includes the mention of a plugin solution, which is included in the Plugged In section below.
Sponsor

Get a taste of how easy form-building can be.
Everything is at your fingertips in our elegant form builder. It gives you full control to create simple or complex multi-page forms, as well as connect your forms to many popular API integrations. Templating is easy and highly customizable. Our ready-to-go templates and features like built-in AJAX and Conditional Rules Logic will have you ready in minutes!
Plugged In
Craft Sync
A Craft 3 plugin for syncing your database and asset volumes across environments via the cloud. This is the plugin referenced in the Syncing your DB link earlier in this issue. Note: The plugin is still in beta.
Nuxt SEOmatic Meta
A module (not a plugin) for connecting Nuxt.js to the Craft CMS SEOmatic plugin via GraphQL. Nuxt-o-matic!
If you're using Nuxt.js with Craft CMS headless then there's a good chance you'll be aiming for some decent SEO. A custom solution would take too much time, so a great alternative is to request the SEO data from SEOmatic via GraphQL. This module grabs the SEOmatic data and converts it to a format that Nuxt.js expects in its head property.
Craft Characteristic
Characteristic provides a new way of storing and querying complex descriptive relationships and attributes for elements. You can think of it as an “attribute-value” system, where an attribute may be applied to an element (think “Tags”), and a specific value may be applied to that attribute.
UK Crime Stats
A Craft CMS 3 Plugin to query the UK Police Crime Statistics API and return the data to either Twig templates or via calls to the service.
Helpdesk Support
Allows your website users to create and manage tickets through your selected helpdesk providers. The plugin current supports Freshdesk, Teamwork Desk, and Zendesk Support.
The Craft Advantage
Best Craft CMS Websites
This repo is a collection of sites featured on the Awwwards built with Craft CMS.
When Craft CMS is not the right choice for your website
You’re reading the Craft Link List newsletter, so, likely, you’re into Craft CMS. But you need the right tool for the job at hand, and that’s what this post covers.
Yii, Twig, PHP & More
Simplify line breaks in Twig.
Piotr shared this Twig tip on using apply
to apply the nl2br filter in your templates.
What’s nl2br? “The nl2br filter pre-escapes the input before applying the transformation.” Basically it makes <br>
tags from line breaks.
Overheard
It’s not Craft, but it’s interesting.
Eternal Terminal
Eternal Terminal (ET) is a remote shell that automatically reconnects without interrupting the session.
How to get the database size in MySQL
These instructions are from TablePlus, the GUI database tool, but since the commands are just SQL, they should work anywhere.
GitKraken
GitKraken is a Git GUI recently mentioned in Discord.
See also these previously mentioned Git GUIs: Tower & Git Fork
Understanding CORS
This post does a nice job of describing what CORS (Cross-Origin Resource Sharing) is, why it exists, and how you can write your app with it in mind.
Locomotive Scroll
A simple scroll library built as a layer on top of ayamflow's virtual-scroll that provides smooth scrolling with support for parallax effects, toggling classes, and triggering event listeners when elements are in the viewport.
Lighthouse CI
Automate running Lighthouse for every commit, viewing the changes, and preventing regressions