r:file
<r:file />
A tag used in a loop to output a file and it's requisite properties.
Attribute Options
image_url - See
r:image_url.
image_tag - See
r:image_tag.
alt_text - Outputs the alt text of an image as listed in a file's properties.
size - Outputs the image at a certain size. Eg 250x250. Note: you can also specify an output file type after the size. Eg: 250x250.avif.
All fields listed in a file's properties are available to be output.
Example:
<r:files labels="tag1,tag2" types="image" labels_match="any" by="title" order="asc">
<ul class="thumbnails">
<r:each>
<li>
<a href="<r:file:image_url />">
<r:file:image_tag size="250x250.webp" alt="{file:alt_text}" />
</a>
</li>
</r:each>
</ul>
</r:files>
file.{attr}
This tag references individual files and will always be used inside a
files.{attr}
loop.
Attribute options
download_url - Get the URL to download the file.
id - Get's the unique ID of the file. Returns a number (eg: 1234).
Hover over the file's preview thumbnail in Files to find the file's ID.
title - Get the file's title as is listed in the file's properties in
CleanSlate.
name - Get the file's name as is listed in the file's properties in
CleanSlate.
alt_text - Get the file's alt text as is listed in the file's properties
in CleanSlate.
filename - Get the filename as is lsited in the file's properties in
CleanSlate.
description - Get the images's description as is listed in the images's
properties in CleanSlate.
uploaded_at - Get the time the file was uploaded. Returns a valid timestamp
(eg: 2021-02-23 16:37:27 -0500). You can pass this through the date
filter (eg | date: "%Y-%m-%d") to change the output of the date string.
created_at - Get the time a file was created. Returns a valid timestamp
(eg: 2021-02-23 16:37:27 -0500).
is_image - Checks if the file is an image format.
image_dimensions - Returns the original image dimensions of a file in
a NxM format (eg: 100x150).
content - Outputs the contents of a file if it uses one of the following
formats: xml, json, html, css,
js, txt, text, csv.
File filters
date - Format a valid timestring into the format you want. See documentation
for
date
.
image_url - Output an image's fully qualified URL in a loop. You can
optionally pass it a specific size to output. Eg: {{ file | image_url }} OR {{ file | image_url: size: "250x" }} or {{ file | image_url: size: "250x500" }}. Note: you can also specify an output file type after the size. Eg: size: "250x500.avif".
image_path - Get the relative path to an image. Eg: {{ file | image_path }}.
background_styler - Output a CSS background-image as an
inline style on an element. See example below.
first_random_image_tagged_with - Get the first random image tagged with
a specific label. See example below.
get_file - Get a specific file by targeting it's ID. See example below.
Examples
Get a random image based on a label:
{% assign randomImage = site | first_random_image_tagged_with: tag: "backpage-1-thumbnail" %}
{% assign randomImage_url = randomImage | image_url: size: "1200x630.webp" %}
<img src="{{ randomImage_url }}" alt="{{ randomImage.alt_text }}">
☝️ Taking that one step further, assign a dynamic label based on the page slug:
{% assign page_slug_label = page.slug | append: "-thumbnail" %}
{% assign randomImage = site | first_random_image_tagged_with: tag: page_slug_label %}
{% assign randomImage_url = randomImage | image_url: size: "1200x630.webp" %}
<img src="{{ randomImage_url }}" alt="{{ randomImage.alt_text }}">
☝️ See more examples like these on the Get a random image, file, or blog article page.
Output markup for a lightbox gallery (extra CSS & JS required):
{% capture gallerypage %}{{ page.slug }}-gallery{% endcapture %}
{% assign images = site.files | filter_files: tags: gallerypage, types: "image" %}
{% for image in images.all %}
<div class="image-container">
<a href="{{ image | image_url: size: "960x640.webp" }}" title="{{ image.description }}">
<img src="{{ image | image_url: size: "480x320.webp" }}" alt="{{ image.alt_text }}" />
</a>
</div>
{% endfor %}
☝️ Label images PAGE-SLUG-gallery to have images output via this loop.
Change PAGE-SLUG to you're page's actual slug (eg: about-us becomes about-us-gallery).
Background styler example:
{% assign bgStyler = "backpage-1-thumbnail" | background_styler %}
<div class="my-div" {{ bgStyler }}>
<p>The CSS background image is output on the parent <code>div</code>.</p>
</div>
<!-- Returns: -->
<div class="my-div" style="background-image: url(http://example.wvu.edu/files/24271fb1-0561-4e5d-a750-0c0fdb44985d/1780x1780?cb=1614116587)">
<p>The CSS background image is output on the parent <code>div</code>.</p>
</div>
☝️ See more examples like this on the Get a random image, file, or blog article page.
Get the first random image tagged with a label:
{% assign my_random_image = site | first_random_image_tagged_with: tag: "backpage-1-thumbnail" %}
<img src="{{ my_random_image | image_url: size: "300x.webp" }}" alt="{{ my_random_image.alt_text }}" />
Get a file based off of a file ID:
{% assign myFile = site | get_file: 1234 %} <!-- 👈 Change to your file's ID -->
<p><a download href="{{ myFile.download_url }}">Download {{ myFile.title }}</a></p>
Loop through files labelled with download, wvu, or profile and return their properties:
{% assign files = site.files | filter_files: tags: "download,wvu,profile", types: "", tags_match: "any", order: "uploaded_at" %}
<ul class="files">
{% for file in files.all %}
<li class="span4">
<span>{{ forloop.index }} - </span>
<a href="{{ file.download_url }}" data-asset-id="{{ file.id }}">{{ file.title }}</a>
<small>({{ file.filename }} uploaded {{ file.uploaded_at | date: "%Y-%m-%d" }})</small>
<p>
{% if file.is_image %}
<img src="{{ file | image_url: size: "250x.webp" }}" /> <br/>
Original Image Dimensions: {{ file.image_dimensions }} <br/>
Image Path: {{ file | image_path }} <br/>
Image URL: {{ file | image_url }}
{% endif %}
</p>
</li>
{% endfor %}
</ul>
Last updated on September 30, 2022.
We welcome all questions, feedback and bug reports. If you're having an issue, we usually need the following information:
- A brief description of the issue
- A link to the page where you saw the issue
- Screenshots that illustrate the problem - How do I take a screenshot?
Kindly email CleanSlate@mail.wvu.edu for help or use the form on the request help page.