A tiny plugin for inlining files in Craft templates.
Use it like this:
<script src="{{ craft.inlin.er('/build/svg/my.svg') }}"></script>
Why? Sometimes it makes sense, performance or workflow wise, to inline resources instead of requesting them.
To include a remote file, pass in true as the second parameter:
{{ craft.inlin.er('http://example.com/remote/path.svg', true) }}
By default, Inlin will store all remote files in cache for a default of 3600 seconds. You can modify this time on the Inlin settings page.
If you want to request a remote file but disallow caching, pass in false as the third parameter:
{{ craft.inlin.er('http://example.com/remote/path.svg', true, false) }}
Understand that inserting filedata in your templates, especially when passing it through Twig's raw filter, is a potential security risk. And the path is relative to your document root, so the path could point to a file anywhere on your server. Make sure you never, ever let a third party control what is inserted. In case you're thinking "meh", insert this into your template:
{{ craft.inlin.er('/../craft/config/db.php') }}
"With great power, comes great responsibility" -Voltaire
Inlin needs to know the public document root to know where your files are located. By default
Inlin will use $_SERVER['DOCUMENT_ROOT']
, but on some server configurations this is not the correct
path.
You can set your public document root and cache duration by visiting the Inlin settings page.
- Added caching ability for remote files
- Added ability to pull remote files
- Initial release