Introduction
Craft CMS events, tips, plugins, and one broken heart 💔.
Hello, Craft friends. Welcome to issue 107 of Craft Link List.
As this issue hits the internet, we're just one day from Dot One in Melbourne. The sessions for the event looks really interesting. If there are links to slides or videos, they'll end up in a future issue.
The big Craft event of the year, Dot All, has been announced for Amsterdam on September 23-25; check the link below for early bird pricing. Plus, there are more posts on making you a better Craft developer, plugins and more.
If you have a link to share, head over to the submit a link page. It helps with putting each issue together.
Thank you to the sponsors of this issue.
Fortrabbit is looking for someone who loves Craft. Read what future-you could be doing, working at fortrabbit.
Freeform is the feature-filled form plugin for Craft CMS that includes ready-to-use templates to quickly get you up and running. Learn about the power of Freeform.
Let's hit the links.
-John Morton
Top Stories
Dot All Conf | 2020
Tickets are on sale now at a discount to the biggest Craft conference of the year. The session list has not been announced yet, but based on past events, you will not want to miss it.
News
Craft 3.4.9 released
There have been 4 releases of Craft since the previous issue. Craft 3.4.8 added the withTransforms
argument to asset GraphQL queries. Check the changelog for all the updates.
Featured Sponsor

Join fortrabbit to lead developer relations
Do you want to move away from everyday coding and client jobs? Are you passionate about Craft and enjoy writing and talking about it?
👇 More about us and your role in our team
https://fortrabbit1.recruitee.com/o/communication-developer-marketing-relations
Tools, tips, and fundamentals
10 Things To NOT Do In Your Craft CMS Twig Templates ⭐️
Matt Gray, the creator of Servd, knows a few things not to do and is here to tell you about them. Great stuff here. Bookmark this one.
Query for elements that have "non-empty" related element fields
Piotr, frequent tipster, shared this tip about the keywords :notempty:
and :empty
.
Cleaning up a cluttered fields list
Piotr shared another Craft tip that can help you make a cleaner control panel for your users with a well-placed Matrix field in your settings area.
Running out of disk space?
Andrea shared a tip on Discord recently about a server that had suddenly run out of disk space. She suggested logging in via your terminal and “running ./craft clear-caches/all
.“ In her case, that freed up 13 GB.
A list of free Craft plugins
This list all of the free Craft plugins is updated every 3 hours. As of the moment I write this, there are 516 free plugins for Craft.
How to list entries by category, including uncategorized entries
Where there's a will, there's a Stack Exchange post.
Perfecting your technique
Flat Multi-Environment Config for Craft CMS 3 ⭐️
Andrew has a post that dives into the Craft configuration as it comes “out of the box” and then goes deeper to show how you can make your settings exist solely in a single easily-maintained file.
Saving Matrix Fields in Entry Forms
As of Craft 3.4, it is now possible to save partial Matrix data as part of the new delta save feature. The Craft documentation has been updated to add, well, documentation on how to do it. In discussing it on Discord, Brandon shared this example.
How to find all entries that use a particular matrix block type
James Smith shared a handy SQL query when you're refactoring matrix blocks and need to find all those entries using a particular block type:
SELECT DISTINCT title, craft_content.elementId, enabled
FROM craft_content
INNER JOIN craft_matrixblocks
ON ownerId = craft_content.elementId
INNER JOIN craft_elements
ON craft_content.elementId = craft_elements.id
WHERE typeId = ‘123'
AND title IS NOT NULL
AND revisionId is null
AND draftId is null
Using MySQL 8 with Craft CMS 3
Matt Gray is here to make your life a bit easier if you're eyeing MySQL 8. He says it offers "performance improvements along with a with a few new pieces of additional functionality," but there's a potential issue that appears to be an "access denied" error. Matt's post will help you get this fixed.
Debugging database size, searchindex and revisions table bloat in Craft CMS 3
Nils Norman Haukås has written a case study on debugging database bloat issues in Craft CMS 3. Beyond the general approach, it also contains some database debugging tips and tricks.
nystudio107/devmode: Website for the devMode.fm podcast
This new release of the source code for the devMode.fm site is now built on Docker. If you're looking for a Craft CMS running on Docker example, check it out.
Fine Tune Your Craft Performance
Justin Holt's presentation at the Charlotte Craft CMS Meetup Group was on optimizing Craft performance. He shared the slides of his presentation at the link above.
Site backup options
The topic of backing up your site was recently discussed in Discord. For Forge users, backups were recently introduced into the control panel, but only for the "Business" level plan. There were several options mentioned that your fellow Craft devs use.
Here's a list of the services mention:
- https://simplebackups.io/
- https://www.codeguard.com/
- https://www.dropmysite.com/
- https://ottomatik.io/
If you're of a "roll your own" developer, check out these options:
Sponsor

Effortlessly build beautiful forms in minutes with Freeform!
Freeform is the most reliable, intuitive and powerful form building plugin for Craft. 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! No other form plugin even comes close to comparing! You can trust Freeform (and the team behind it) to deliver the quality and support you expect and deserve.
Plugged In
Super Filter
Build your search page with search filters from your element fields and filter element entries by categories, tags, element relations, products (in Craft Commerce), and other fields.
Relationship Editor
Relationship Editor provides a new action specifically for adding and removing elements from an element relationship field without having to resubmit all of the existing selections.
Membership
The Membership plugin helps set up rules for granting access to your platform's Subscribers.
The Craft Advantage
It’s not Craft, but it’s interesting.
Sizzy
The Sizzy app allows you to see multiple viewport sizes of your site simultaneously, synchronize scroll positions, take screenshots, and more. This was a free app that moved to paid to support continued development.
(Note: There was a free Chrome plugin mentioned in Discord when this topic came up that offers some of the same basic features as Sizzy. It's not listed in the Chrome plugin store and is sparsely documented. I chose not to include that link in the newsletter. You can find it in Discord if you're interested though.)
WAVE Evaluation Tool - Chrome Web Store
WAVE is a web accessibility evaluation tool developed by WebAIM.org. It provides visual feedback about the accessibility of your web content by injecting icons and indicators into your page.
devMode.fm // Developers are from Mars, Designers are from Venus
The devMode crew is joined by Souvik Das Gupta from Miranj and Rob Hewitt from Steadfast Design Firm to discuss how designers and developers can work more effectively together.
Tailwind Converter - Convert your CSS to Tailwind CSS
The Tailwind Converter automates the process of converting CSS frameworks like Bootstrap as well as your custom CSS to use the Tailwind CSS utility classes.
HTTP 203 - YouTube
Google Developers Jake Archibald and Surma discuss their philosophies about web development and the various aspects of it, meanwhile dropping in lifehacks, lessons, and some honest truths.
Twitter thread on job interviews
This Twitter thread lists some great questions to bring up with a potential employer when you find yourself interviewing for a new job.