webdog documentation | github

resources

resources are a highly configurable aspect of webdog used for taggable things which generally follow a similar layout across entries. for instance, a blog or photo album.

for instructions on how to add a resource via the cli, see the commands page.

resource config

each resource added has its own configuration inside of the main site config file with the following properties:

source_path

the source path for where the resources of this type are located, relative to <site_path>/resources/.

output_path_resources

the path prefix for a resource, i.e. “blog” for /blog/<post id> or “i” for /i/<image id>. can be shared with output_path_lists for them to have the same prefix.

output_path_lists

the path prefix for other resource pages, like the overview or tags. i.e. “blog” for /blog/tags/<tag> or “images” for /images/tags/<tag>. can be shared with output_path_resources for them to have the same prefix.

resource_template

the template to use for the main page of a resource item.

this template is provided the resource’s properties (defined below) as variables. this should change to be r.<property> before the first crates.io release to avoid conflicts with page properties.

resource_list_template

the template to use for a list of resources.

this template is provided with the following properties:

previous

if this property exists, it can be used as ./{{previous}} to get a link to the previous list page.

next

if this property exists, it can be used as ./{{next}} to get a link to the next list page.

resources

a array of the resources to be rendered on this page. each resource in the array contains the resource properties as defined below.

tag_list_template

the template to use for a list of tags assigned to the resource.

this template is provided with the following properties:

title

the title of the tag list.

this property will be renamed before the crates.io release to fix its conflict with page titles.

links

array of the links available for this list, containing the following properties:

link

the link to actually use for the link.

title

the link’s title.

rss

the resource type’s rss info. if not present, no rss feed will be built.

consists of the following properties:

template

the template used to render the resource type’s rss feed’s html content.

this template is provided a single resource’s properties as its properties.

title

the title for the resource type’s rss feed.

description

the description for the resource type’s rss feed.

list_title

the title to use for a list of resources of this type.

tag_list_title

the title to use for a list of tags for this resource t ype.

resource_name_plural

the name of this resource type if it is plural.

resources_per_page

how many resources of this type to display per page when content is paginated.

timestamp_format

format to display timestamps as, as defined by version 2 of the rust time crate’s format description.

defining a resource

resources are made up of markdown files with yaml front matter. for instance:

---
title: resource title
timestamp: 2024-11-13T00:55:46.888967374Z
tags: [first tag, second tag]
---

# hiiiiiii :3

the front matter metadata may contain the following properties:

title

the resource’s title, as displayed in the browser tab.

timestamp

the timestamp to use as the resource’s publishing time. probably shouldn’t be altered after publishing publicly, but it won’t break anything.

the timestamp follows the RFC 3339 format. use the webdog now command to get a timestamp of the proper format easily.

tags

array of the resource’s tags. tags are used to group resources together and are at present required.

cdn_file (optional)

special property which will take a relative url and add the cdn prefix as defined in the site config to it.

desc (optional)

property for a resource’s short description.

draft (optional)

whether the resource is a draft and should be excluded from normal builds. defaults to false.

other properties

resources may add extra properties which will get passed to the various resource templates later. simply add the property like it was any other property.

extra properties

in addition to the resource properties, resources may receive additional properties from webdog as follows:

readable_timestamp

the resource’s timestamp in the timestamp format provided in the resource type’s config.