Introduction
Issue 100: Another collection of Craft CMS tips, plugins, and more.
Welcome to the 100th issue of Craft Link List.
100 issues? How did that happen? It happened because Craft developers, like you, share what you know with the rest of us. Thank you! As always, if you’ve got a Craft-related link to share, visit the submit page.
Issue 100 is a potpourri, a regular issue filled with Craft CMS tips, plugins, and other web dev links. Calling it “regular” doesn't mean there aren't great things in store, though! Whether your into the JAMstack or Twig, I think you’ll find something interesting.
Thank you to this issue’s sponsors. They keep the lights on here. Speaking of lights...
Put Your Lights On is known for top-notch plugins, like Blitz. You can also look to PYLO for one-on-one training to super-charge your Craft skills.
Freeform by Solspace is the powerful form builder for Craft CMS. It’s also 25% off until November 30 with the coupon code Freeform25
.
Let’s hit the links.
-John Morton
News
Craft 3.3.15 released
Craft 3.3.15 wasn’t a major release. There were no new features, but it contains fixes including with one related to security “where rows in the sessions table weren’t getting deleted when a user was logged out.”
Security Policy · craftcms/cms Wiki
Did you find a bug in Craft related to security? Craft has a security policy in place so you can report the issue privately to the Craft team. This policy will get the bug fixed and keep it from going public before more sites are potentially compromised by what you found. Click the link above for details.
Featured Sponsor

Become a Jedi Craft Developer
Jedi Craft development skills are learnable. With one-on-one training, mentoring and custom plugin development, PutYourLightsOn can help you accelerate from novice to expert. From the makers of Blitz, Campaign, Sherlock and Snaptcha.
Tools, tips, and fundamentals
Override system live with your .env file
In Discord, @benface shared this snippet for your general.php
config file. It will allow you to set your site to "live" via your .env file, giving you control of that setting by simply editing a text file.
isSystemLive' => (bool)getenv('IS_SYSTEM_LIVE'),
Should you manually edit your project config file?
John Faulds asked about manually editing your project config. Can you do this? Brandon replied, “technically, yes,” but you probably shouldn’t. But you could potentially use an existing project config file to cut and paste fields for use on a new site, except if they’re Matrix fields.
Fix Missing Assets When Developing Craft CMS Locally
Matt Gray has a magic config setting for your local Nginx config. “ Essentially, if Nginx can't find a local file in the assets upload folder which has been requested, [it will] grab it from the live site instead.”
Tailwind + Emotion Gatsby Starter
This link points to a Gatsby starter using Tailwind 1.1.x with Gatsby and Emotion. This link shows what a base install of the project. It's basic, but that's the point.
URLs of multi-level structure type sections
A quick tip on Craft and creating URLs from Piotr via Twitter.
Remove objects that don't match given expression
Piotr is back with another tip, this time on the Twig filter
filter. Gesundheit!
Correction: Uninstall option is missing for disabled plugins
In issue 99 I said disabling a plugin makes some code be executed on your Craft site. That's wrong. I intended to say uninstalling a plugin makes some code run. Here’s the full corrected text.
Ben Croker asked about uninstalling disabled plugins recently from the control panel. Is it a bug? No, it’s intentional. As the issue link above says, Craft intentionally does not run code from disabled plugins.
DisablingUninstalling a plugin would execute some of that plugin’s code since plugins are responsible for the database tables they potentially create. (Now we both know.)
Perfecting your technique
A Journey From Twig to Gatsby ⭐️
Find a comfortable seat. Matt Stein has a jam-packed JAMstack story to tell. “I left my comfortable Twig microcosm to see what it looks like on the other side.“
devMode.fm // How, when, and why to use the JAMstack
In this episode, we have a roundtable discussion with a variety of experienced web developers who are at different stages of using the JAMstack, from not at all, to exploring/experimenting, to using to deliver client projects to production.
Infinite scrolling and lazy loading with Craft CMS ⭐️
The prolific Piotr Pogorzelski is back to share some more Craft know-how: Learn how to implement lazy loading and infinite scrolling functionality using the Element API plugin.
Servd: Happy Lager - From Zero To Live - YouTube
Matt demonstrates getting the Happy Lager demo site running on Servd.
devMode.fm // Making an Insanely Good Author Experience (AX)
Katie Fritz joins the devMode crew to discuss Author Experience (AX).
Challenge #8 – The Big O Problem - Solutions revealed
This Craft Coding Challenge was mentioned in the previous issue. The solution is now posted.
Headless Mode in Craft CMS on CraftQuest
An overview of how the new headless mode works in Craft 3.3 and later. This video is available with a free CraftQuest account.
Sponsor

Effortlessly build beautiful forms in minutes with Freeform!
This week Freeform surpassed the free Craft contact form plugin and is now the most popular form plugin in the Plugin Store! Use coupon code Freeform25 to save 25% (until Nov 30, 2019) and find out why more users choose Freeform than all other form plugins!
Plugged In
Eventbrite
Read data from the Eventbrite API to display events in your Craft templates using Twig.
Andrew Armitage has also written a detailed post about the plugin.
Drip Integration
This plugin records activity in your Drip account when a visitor performs actions, like creating an account or logging in on your Craft CMS website.
Config Values Field
When using dropdown fields for classes and fixed values, you sometimes need to change or add something to multiple fields. This plugin tries to make that a bit easier by making the config file to source for the field, making it easier to add or remove things.
Billingo for Craft Commerce
This plugin will connect Craft Commerce with Billingo: whenever an Order is paid, a new invoice will be generated in Billingo.
Static Site Pipeline Sync
This plugin allows the triggering of an AWS Pipeline based on S3 to publish a new version of a Static Website with the last version of content stored in Craft CMS.
Gold SiteCopy
This plugin adds a new option to the edit entry page allowing you to copy the current entry to another site. For example, you could copy an entry in your English site to your Spanish site.
The Craft Advantage
Yii, Twig, PHP & More
inky_to_html filter added to Twig
As this Twig documentation page shows, the inky_to_html
filter has been added to Twig 2.12. Inky is "an HTML-based templating language that converts simple HTML into complex, responsive email-ready HTML."
As the Twig docs mention, this is part of the "InkyExtension," which means it is not part of the default Twig that ships with Craft. To install a Twig extension into Craft, you'll need a module or plugin. There is a page on the Craft StackExchange, How to install a Twig extension, to get you started.
html_classes filter added to Twig
Like the Twig extension mentioned above, this html_classes
filter is now available in Twig as of 2.12, but the "HtmlExtension" would need to be added to Craft through a module or plugin.
You can probably live without this extension due to the attr
function in Craft. Piotr went into detail in this post on using the attr
function.
Overheard
It’s not Craft, but it’s interesting.
Navigating the sadistic world of web animations
A rare glimpse into the seedy underbelly of website animations.
Scrolling and animation resources
Looking to trigger animations by scroll position? Here are a few libraries mentioned in a recent discussion on Discord.
Things We Can’t (Yet) Do In CSS — Smashing Magazine
These user agents have often implemented specifications or extensions to specifications that have never been implemented in _continuous media, such as the scrolling and non-paged content that we have on the web.
I’ve not come across the term “continuous media” before, but it’s a perfect way to describe the type of documents we create on the web.
How we made the country’s most accessible grocery shopping app (without anyone noticing). ⭐️
This link was shared in Discord. The post discusses an initial failed attempt at making accessibility to be a priority during development and a later project that actually succeeded. The entire post is worth your time, but the key point seems to be having people on your team that share the belief that serving all your users is a priority.
What Does Weekly Billing (Booking) Look Like at Tighten?
Ever wonder how other shops bill for their work? Here’s a look inside Tighten.
web.dev
Get the web's modern capabilities on your own sites and apps with useful guidance and analysis from web.dev.