Introduction
A Craft CMS grab bag: tips, plugins and more.
Welcome to Craft Link List 106. There is no dominant theme for the issue. It’s the usual collection of Craft tips, plugins, and web dev tips. My hope is that you find a few things that are useful.
We have news on Feed Me, a tip on uploading assets from the front-end of your Craft site, a Twig bundler from Andrew, Imager dying and then rising from the ashes, and much more.
On a personal note, I've mentioned the end of my Instagram plugin, Pic Puller, in the newsletter previously. Since the end of the API the plugin uses is right around the corner, on March 2, 2020, there's a link to that Facebook post about the end of the API included in the issue.
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 Solspace for sponsoring this issue!
Freeform from Solspace makes form-building easy, from basic to complex.
Let’s hit the links.
-John Morton
News
Feed Me and the Future
An interesting discussion about the Feed Me plugin came up in Discord since the previous issue. For a bit of history, the Feed Me plugin is a first-party plugin that was previously a third-party plugin. Importing data was important enough to the Craft team that it made sense to bring it inhouse.
The recent discussion was around the future development of Feed Me. The Craft team doesn’t expect any significant changes to Feed Me “beyond rolling importing into Craft CMS,” according to Brandon. Native importing will be built on top of Graph QL mutations, which is a big upcoming project. If you rely on Feed Me there will be some sort of upgrade path, but it might not be “automatic,” but there will be one.
Craft 3.4.5 released
There have been three releases of Craft since the previous issue. 3.4.5 brought tweaks to the GraphQL implementation, including “improved GraphQL API performance.” Read the changelog for a full list of updates.
Tools, tips, and fundamentals
Twig Bundle Installer
Andrew has released a new free thing into the world, the Twig Bundle Installer. "Install, update, and manage Twig template bundles via Composer." Andrew said it works with Craft CMS, as you could have guessed, but also anything that uses Twig.
Uploading files through frontend using uppy
Piotr Pogorzelski tweeted this tip on integrating uppy, an open-source file uploader, and Craft.
Add a date range picker to element indexes in Craft 3.4.4.1
Trying to find entries matching a specific date in the control panel? According to Brandon, “There’s currently no built-in way to set a Date/Time field’s query param from the control panel, but we’re working to make that possible in Craft 4.”
If you can’t wait until Craft 4, this Github link shows how you can make it work today in Craft 3.4.4.1 and later using the Control Panel JS plugin.
h/t @Ransom in Discord for finding this tip.
Settings Sync - Visual Studio Marketplace
Synchronize Settings, Snippets, Themes, File Icons, Launch, Keybindings, Workspaces, and Extensions Across Multiple Machines Using GitHub Gist.
GitHub CLI Beta | Take GitHub to the command line
The GitHub CLI is now in beta. Click here for the docs.
New user registration activation timeout?
Have you had new users fail to activate their accounts within the 24-hour time limit and then complain about a failed account activation? Read this Stack Exchange post for options.
Perfecting your technique
8 Local Development Options for Craft CMS ⭐️
Matt Gray, from Servd, is back again to examine local dev options.
The first hurdle is figuring out what options are available. The second is deciding which is the best choice for our specific needs. Let's try to answer both of those with an overview of the most popular Craft CMS local development solutions and a look at their pros and cons.
Local Development with DDev
Sean Smith, aka Caffeine Creations, discusses using DDev for local development as a replacement for Mamp Pro or Xampps.
Is it possible to stop Craft from logging so much?
In this Stack Exchange post, Brad Bell said:
Basically, Craft goes with Yii's default FileTarget settings, which is 5 log files of 10MB each before they start rotating out. Those are individual limits for both web.log and console.log files.
If you want to change those behaviors, you'll need to modify those properties via a
config/app.php
file using your own FileTarget settings.
The problem with website analytics today (i.e., how I ditched Google Analytics)
Sten Van den Bergh looks at the correct way to implement Google Analytics and to be GDPR compliant. He then goes one step further and demonstrates a privacy-focused alternative. If this topic interests you, check out Sten's Fathom Analytics plugin 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
Imager X
Imager X is a Craft plugin for doing image transforms, optimizations, and manipulations. It does all the things that the built-in image transform functionality does – and so much more.
You might think this sounds a lot of like Imager. Imager X is the replacement for Imager, which is now deprecated.
How do you upgrade? Here's the official word:
Imager X is a drop-in replacement for Imager 2.0. All you need to do is copy over your config settings from your
imager.php
file toimager-x.php
, and you're good to go!
Imager X Storage Driver for DigitalOcean Spaces
This plugin is an external storage driver for Imager X that uploads your Imager transforms to DigitalOcean's Spaces object storage. Spaces is an AWS S3 compatible object storage, so the plugin utilizes the same S3 client as Imager's AWS storage does.
More Fit Images: Fixes a bug in Craft 3.4 where thumbs in the Control Panel were cropped instead of fitted.
Craft 3.4 has a new behavior in the control panel for cropping images, as discussed here and here. The More Fit Images plugin brings back the previous cropping to your control panel.
The thumbnail cropping behavior this plugin “fixes” should be addressed in an upcoming Craft release.
HTTP Basic Authentication
The HTTP Basic Authentication plugin for Craft CMS provides HTTP Basic Authentication (BasicAuth) within templates.
Env Sync
Env Sync is a plugin that makes it possible to sync your database and volume assets across numerous environments from the comfort of the Craft Control Panel. This functionality makes it much easier to move your site from local development to staging and onto production.
PayPal Checkout for Craft Commerce
This plugin provides a PayPal Checkout payment gateway for Craft Commerce.
Easy Search
With Easy Search, your content editors can use predefined search queries (“search for all entries with an image field that’s not empty”) or build their own search query with a user-friendly GUI.
Imageshop Field
This plugin integrates Imageshop, a Norwegian image service, with Craft CMS by exposing their image selector as a popup that saves the selected image data in a field which allows the selection to be used in Twig templates. (Note, here is the English version of Image Shop.)
It’s not Craft, but it’s interesting.
Instagram Basic Display API: Long-Lived Access Tokens now available ⭐️
This is a special shout out to users still using Pic Puller for Craft. Facebook is ending the API used by Pic Puller on March 2, 2020. Search the Craft Plugin Store for options if you still need Instagram in your Craft site.
Native image lazy-loading has been merged into the HTML standard ⭐️
It's really happening! This means native lazy-loading should wind up in all browsers in the future.
devMode.fm // Development and the Art of Focus
Matt Stein hosts this episode all about the art of focus, joined by special guests Brandon Kelly from Pixel & Tonic and Ransom Roberson from Venveo.
devMode.fm // Web Performance with @csswizardry Harry Roberts
On this episode, @csswizardry Harry Roberts regales us with stories from the trenches, discussing the real-world web performance problems he’s helped companies overcome, and how.
Beyond SPAs: alternative architectures for your PWA
The architecture that you use for your web app, and specifically, how your architectural decisions come into play when you're building a progressive web app.
h/t Andrew
Setting Up Your Webcam, Lights, and Audio for Remote Work, Podcasting, Videos, and Streaming
Matt Stauffer, podcaster and video streamer, discusses options for collecting a good set of gear (lights, camera, microphones, etc.) to suit a variety of budgets.
Full Stack Pronounced Dead: Welcome 2020 Stack
Since no one person can handle it all, the 2020 stack must be covered by a team. Not a group of individuals, but a true team. That means that when one person is falling behind, another will pick up the slack. When one person has superior skills, there’s a mechanism in place for mentoring the others. When there’s a gap in the team’s knowledge-base, they seek out and hire a team member who’s smarter than all of them.
Efficiently load third-party JavaScript
Avoid the common pitfalls of using third-party scripts to improve load times and user experience.
Teachable Machine
A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required.
Filepond
A JavaScript library that can upload anything you throw at it that can optimize images for faster uploads and offers a great, accessible, silky smooth user experience.
Please Add .gitattributes To Your Git Repository
The
.gitattributes
file allows you to specify the files and paths attributes that should be used by git when performing git actions, such as git commit, etc. In other words, git automatically saves the file according to the attributes specified, every time a file is created or saved.
Gremlins tracker for Visual Studio Code
This VSCode plugin will help you spot special characters and invisible characters in your code.