Introduction
Craft Link List #84: Craft News, Plugin Dissections, Tips and More.
Welcome to issue 84, filled with Craft CMS news, tips and more. There is a call for speakers for Dot All, useful tips for Craft developers, detailed dives into some plugins, and other interesting webdev links.
The Craft community has made another issue possible. Thanks to all of you. If you've created something you think should be included, submit a link here.
Thank you to this issue’s sponsors.
Peers Conference is fast approaching. Meet up with your friends from the Internet and talk about making business better. Save $99 with coupon code LINKLIST. (If you’re going, look me up! )
Solspace's Freeform is an intuitive and powerful form building plugin for Craft CMS. Got a form to build? Check out Freeform.
Top Stories
Dot All Conf | 2019 Call for Speakers
Dot All is coming to Montréal, Canada this September 18-20. If you'd like to speak at the premier Craft event of the year, now's the time to brainstorm and get your ideas submitted.
News
Craft 3.0.17.2 released
Craft 3.0.16 added the ‘--type’ option to the ‘resave/entries’ command. This lets you resave selected entry types from the command line.
Craft 3.0.17.2 was interesting. It was a fix for an odd update in the Twig project that included "some breaking namespace changes." Those types of changes are typically not included in point releases, but they were this time, which broke Craft. Happily, this Craft release was published within minutes of the issue being reported.
F5 Acquires NGINX
In addition to the link above, Gus Robertson, CEO of NGINX, has a post on this as well, NGINX to Join F5: Proud to Finish One Chapter and Excited to Start the Next including how this helps with "accelerating our vision." 🤨 (It's safe to assume there are "synergies" and many "action items" involved.)
Coming soon: Queries across multiple sites in Craft 3.2
When Craft 3.2 hits, which is still a ways off, as this issue page shows, querying across multiple Craft sites will be built in. Interested in what else Craft 3.2 has in store? Check out the Craft 3.2 milestones on Github.
Featured Sponsor

Join your peers next month in NOLA
Peers heads to New Orleans for its 7th lucky year. Build skills you can use all year, then spend time working on your business, free from the distractions of your office. Link List readers can save $99 off a conf or bundle ticket when they use code LINKLIST at checkout.
Tools, tips, and fundamentals
Levi Zitting on Craft CMS
Levi Zitting gave a presentation on Craft CMS at SGF Web Dev. It was recorded you can catch it at the link above.
We'll go over how to start a new Craft project, how to set up various types of content structures, and finally how to build out templates that display your content on the web.
Fixing a search query for entries
Search queries can be tricky to get right sometimes. This Stack Exchange question is a case in point with an answer.
The DL on dotenv on CraftQuest
If you’re a CraftQuest subscriber, watch Ryan and Andrew dive into .env
.
Laravel Mix 4 with Tailwind and Purge
This is a sample config file that might be helpful if you're using Laravel Mix to compile your Craft site.
Quick edit link - Twig component for Craft CMS
Sometimes you don't need a plugin. This post from Craft Snippets shows how to create a quick edit link component that generates a page-specific link to the control panel, letting you quickly edit entry or category.
Caffeine Creations on Tailwind CSS
Sean Smith recently updated his company's site using Tailwind CSS. In this post, he shares his thoughts on using "a utility class system like Tailwind CSS compared to using a UI framework such as Foundation or Bootstrap."
Craft 3 plugins - Logging in a separate *.log file
In Craft Link List #65, there was a post about Craft 3 logging for plugins.
During a recent plugin build, I came back across the Stack Exchange post linked in that post, and Ben Croker has since added to the answers with a short, helpful bit of code, which you could wrap in a function to use across your plugin (in your service). This will give you back the Craft 2 plugin logging to its own file. Bookmarked.
Perfecting your technique
A Snipcart Plugin for Craft CMS: Why—and How—I built it ⭐️
Matt Stein has written up a post on his recently launched Snipcart plugin.
Testing emails sent by Craft CMS using Mailtrap ⭐️
Learn how to redirect all Craft CMS emails to fake SMTP server Mailtrap, to test and debug your messages.
A Distributed Team is Awesome: Craft CMS Integration with iMatrix Software by Mitchell Kimbrough - Blog - Solspace
Introducing Concierge Commerce with Tae FitzSimons and Douglas Hollinger
Concierge Commerce is a new service — built on Craft Commerce Pro’s subscription feature — that promises to be a game changer for e-commerce retailers and vendors looking to connect by providing a one-stop platform to shop services and set up sales meetings.
Workflow for Updating a Version-Controlled Craft CMS Site
How do I run Craft and plugin updates on a version-controlled project? Very carefully and slowly. Follow along as I walk through how I think about and perform Craft CMS updates.
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
Guest Entries Recaptcha
This hooks together the guest entries plugin to the Recaptcha plugin and invalidates a guest entry submission if the Recaptcha doesn't validate.
Download Assets
This plugin adds a handy download icon next to assets fieldtypes in the control panel.
Migration Assistant
Create migrations to easily move settings and content between Craft website installations with the click of a mouse, no coding required.
Molecule
Molecule allows you to grab Twig components from outside the template folder. This is useful if you want to keep your Twig partials, CSS, React/Vue files, etc in a single component folder. Now all of your components are nicely organized in individual folder structures.
Reports
Reports for Craft CMS and Craft Commerce makes it possible to write reports in Twig via a simple, fluent API.
Internal Assets
A simple plugin to restrict access to assets for permitted users only. Access to a given asset is only granted if the user has view-permissions for the given source (this can be set in the user- or group-settings).
Commerce Bulk Pricing
Create a Bulk Pricing fieldtype, add your column headers (e.g., 25+, 50+ 100+) and set the required quantity a customer must purchase to receive that price.
Control Panel Body Classes
There are a million things that you may want to do in your control panel, and many of them are conditional. Perhaps you want your CSS (or JS) to take effect for a selected user group, or only on a specific page. Use these special classes to hone in on your targets with precision!
Social Poster
Social Poster is a Craft CMS plugin for automatically posting entries to social media, Facebook, Linked.in, and Twitter.
Document Search
Extracts keywords and phrases from PDF documents and adds them to Craft CMS's native search index.
Blitz v2 released
Blitz 2 is fast, easy to use and enhanced to be even more scalable, extensible and predictable
Yii, Twig, PHP & More
{% js %} Tags | Craft 3 Documentation
The Craft documentation for the {% js %}
tag mentions this is the same as the Yii registerJs
, which mean you can access it directly like this:
{% set script = '_gaq.push(["_trackEvent", "Search", "'~searchTerm|e('js')~'"' %}
{% do view.registerJs(script) %}
You can also specify where on the rendered the javascript will be inserted:
{% js at head %}
A recent Discord discussion revolved around using the positioning feature when accessing the Yii function directly. Relying on globals injected into each template, you can do it like this.
{% do view.registerJsFile('cdn.domain.com/library/latest.js', {'position': POS_HEAD}) %}
Overheard
It’s not Craft, but it’s interesting.
Hit By a Bus
A checklist for startup founders regarding the important an question, "What happens if you get hit by a bus?"
Try GraphQL! Interactive GraphQL Tutorial
This site has 10 interactive challenges to challenge you and teach you GraphQL.
The MIT License, Line by Line
The MIT License is used by countless projects. This post goes into detail on what it actually means.
Forge backup
This is a shell script for establishing encrypted, efficient backups of your Laravel Forge server on cheap Backblaze B2 storage.
Getting Started with Gridsome
A look at how to use Gridsome to create a sample profile listing site, its major features and how it compares to other Static Sites Generators.
Refactor CSS - Visual Studio Marketplace
Harald Atteneder from Urban Trout and a member of the Craft community, has released a VSCode plugin that helps you identify reoccurring CSS class name combinations in your markup. This is especially useful if you are working with an utility-first CSS framework like TailwindCSS or Tachyons.
Integrity on the Mac App Store
- Scans your site checking for broken links
- Checks images and linked files as well as all internal and external links
- See problems at-a-glance highlighted in color. Double-click for more detailed information
- In short, improve your website's quality and search engine ranking