https://github.com/newism/craftcms-revved-url
Rev CraftCMS asset urls with date modified timestamps
https://github.com/newism/craftcms-revved-url
craft craft-plugin craftcms craftcms-plugin
Last synced: 5 months ago
JSON representation
Rev CraftCMS asset urls with date modified timestamps
- Host: GitHub
- URL: https://github.com/newism/craftcms-revved-url
- Owner: newism
- License: mit
- Created: 2017-02-03T08:10:53.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-14T05:18:08.000Z (over 9 years ago)
- Last Synced: 2024-04-18T12:10:39.136Z (about 2 years ago)
- Topics: craft, craft-plugin, craftcms, craftcms-plugin
- Language: PHP
- Size: 19.5 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# NSM Revved URL plugin for Craft CMS
This Twig function revs asset urls with the date modified timestamp
## Installation
To install NSM Revved URL, follow these steps:
1. Download & unzip the file and place the `nsmrevvedurl` directory into your `craft/plugins` directory
2. -OR- do a `git clone https://github.com/Newism/nsmrevvedurl.git` directly into your `craft/plugins` folder. You can then update it with `git pull`
3. -OR- install with Composer via `composer require nsm/craftcms-revved-url`
4. Install plugin in the Craft Control Panel under Settings > Plugins
5. The plugin folder should be named `nsmrevvedurl` for Craft to see it. GitHub recently started appending `-master` (the branch name) to the name of the folder for zip file downloads.
NSM Revved URL works on Craft 2.4.x and Craft 2.5.x.
## Usage
### Native Assets
Its simple… just call the function and pass the asset and an optional transform
nsm_rev_asset_url(asset, transform)
Before revving:
http://example.com/uploads/images/_572x430_crop_center-center_80/James-Ellis_elevation-render-1.jpg
After revving:
http://example.com/uploads/images/_572x430_crop_center-center_80/James-Ellis_elevation-render-1.1485302752.jpg
### Imager Support
NSM Revved URL supports [Imager](https://github.com/aelvan/Imager-Craft) transforms and `craft.imager.srcset()`
by wrapping the Imager plugin functions.
#### Returned a revved URL
{{ nsm_rev_imager_url(newsImage, transform) }}
#### Returned a revved Imager model
Caution this replaces the original `url` property
{% set revvedImagerAsset = nsm_rev_imager_asset(newsImage, transform) }}
{# output the revved URL #}
{{ revvedImagerAsset.url }}
#### Returned a revved Imager model for use with `craft.imager.srcset()`
{% set revvedImagerAsset = nsm_rev_imager_asset(newsImage, [transform1, transform2]) }}
{{ craft.imager.srcset(revvedImagerAsset) }}
## Updating your server config
This plugin doesn't actually change the the filename on the server. You'll need to implement rewrite rules on your server.
#### Apache
See: https://github.com/h5bp/server-configs-apache/blob/master/dist/.htaccess#L968-L984
# ----------------------------------------------------------------------
# | Filename-based cache busting |
# ----------------------------------------------------------------------
# If you're not using a build process to manage your filename version
# revving, you might want to consider enabling the following directives
# to route all requests such as `/style.12345.css` to `/style.css`.
#
# To understand why this is important and even a better solution than
# using something like `*.css?v231`, please see:
# http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
#
# RewriteEngine On
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp|webmanifest)$ $1.$3 [L]
#
#### NGINX
See: https://github.com/h5bp/server-configs-nginx/blob/master/h5bp/location/cache-busting.conf#L1-L10
# Built-in filename-based cache busting
# This will route all requests for /css/style.20120716.css to /css/style.css
# Read also this: github.com/h5bp/html5-boilerplate/wiki/cachebusting
# This is not included by default, because it'd be better if you use the build
# script to manage the file names.
location ~* (.+)\.(?:\d+)\.(js|css|png|jpg|jpeg|gif)$ {
try_files $uri $1.$2;
}
[
](http://newism.com.au/)
Brought to you by [Leevi Graham](http://newism.com.au)