enovatedesign/craft-style-inliner

Inline & critical CSS tags for email templates in twig.

Installs: 60 814

Dependents: 0

Suggesters: 0

Security: 0

Stars: 7

Watchers: 5

Forks: 4

Open Issues: 1

Type:craft-plugin

4.1.1 2024-08-01 13:52 UTC

README

A Twig tag for inlining styles in a template.

Requirements

This plugin requires Craft CMS 5.2 or later.

Installation

To install this plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:
cd /path/to/project
  1. Tell Composer to require the plugin:
composer require enovatedesign/craft-style-inliner
  1. Install the plugin via ./craft install/plugin enovatedesign/craft-style-inliner via the CLI, or in the Control Panel, go to Settings → Plugins and click the “Install” button for Style Inliner.

Usage

Inline CSS

Use the {% inlinecss %}{% endinlinecss %} tag pair in your templates.

Input:

{% inlinecss %}
<html>
    <head>
        <style type="text/css">
            h1 { color: red }
        </style>
    </head>
    <body>
        <h1>Hello, world!</h1>
    </body>
</html>
{% endinlinecss %}

Output:

<html>
    <head>
        <style type="text/css">
            h1 { color:red }
        </style>
    </head>
    <body>
        <h1 style="color: red;">Hello, world!</h1>
    </body>
</html>

Critical CSS

You can inline entire local CSS files in to the <head> of a document with the {% criticalcss %} twig tag.

{% extends "_layout.twig" %}

{% criticalcss 'home' %}

The .css extension is added automatically. By default the plugin prefixes the @webroot/ alias, but this can be configured in a config file. You can also switch critical CSS on and off entirely for each environment:

/config/style-inliner.php

<?php

return [
    'criticalCss' => true,
    'criticalPrefix' => '@webroot/resources/',
];

For added flexibility the Critical CSS can be printed anywhere via:

{{ craft.styleinliner.printcriticalcss('fullwidth') | raw }}