diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fec052d..a632eb32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - Image processing now supports WebP - Fix `zola serve` failing for some static files - Fix `zola serve` not picking up directory renaming +- Add `path` to the taxonomy terms to be on par with pages and sections ## 0.13.0 (2021-01-09) diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index 37037f44..a5e53a15 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -413,6 +413,7 @@ mod tests { let taxonomy_item = TaxonomyItem { name: "Something".to_string(), slug: "something".to_string(), + path: "/tags/something".to_string(), permalink: "https://vincent.is/tags/something/".to_string(), pages: library.pages().keys().collect(), }; @@ -446,6 +447,7 @@ mod tests { let taxonomy_item = TaxonomyItem { name: "Something".to_string(), slug: "something".to_string(), + path: "/some-tags/something/".to_string(), permalink: "https://vincent.is/some-tags/something/".to_string(), pages: library.pages().keys().collect(), }; diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index f71d8d95..f4660d1b 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -18,6 +18,7 @@ use utils::slugs::slugify_paths; pub struct SerializedTaxonomyItem<'a> { name: &'a str, slug: &'a str, + path: &'a str, permalink: &'a str, pages: Vec>, } @@ -34,6 +35,7 @@ impl<'a> SerializedTaxonomyItem<'a> { SerializedTaxonomyItem { name: &item.name, slug: &item.slug, + path: &item.path, permalink: &item.permalink, pages, } @@ -45,6 +47,7 @@ impl<'a> SerializedTaxonomyItem<'a> { pub struct TaxonomyItem { pub name: String, pub slug: String, + pub path: String, pub permalink: String, pub pages: Vec, } @@ -73,16 +76,17 @@ impl TaxonomyItem { .collect(); let (mut pages, ignored_pages) = sort_pages_by_date(data); let item_slug = slugify_paths(name, config.slugify.taxonomies); - let permalink = if taxonomy.lang != config.default_language { - config.make_permalink(&format!("/{}/{}/{}", taxonomy.lang, taxo_slug, item_slug)) + let path = if taxonomy.lang != config.default_language { + format!("/{}/{}/{}/", taxonomy.lang, taxo_slug, item_slug) } else { - config.make_permalink(&format!("/{}/{}", taxo_slug, item_slug)) + format!("/{}/{}/", taxo_slug, item_slug) }; + let permalink = config.make_permalink(&path); // We still append pages without dates at the end pages.extend(ignored_pages); - TaxonomyItem { name: name.to_string(), permalink, slug: item_slug, pages } + TaxonomyItem { name: name.to_string(), permalink, path, slug: item_slug, pages } } pub fn serialize<'a>(&'a self, library: &'a Library) -> SerializedTaxonomyItem<'a> { @@ -338,6 +342,7 @@ mod tests { assert_eq!(tags.items[0].name, "db"); assert_eq!(tags.items[0].slug, "db"); assert_eq!(tags.items[0].permalink, "http://a-website.com/tags/db/"); + assert_eq!(tags.items[0].path, "/tags/db/"); assert_eq!(tags.items[0].pages.len(), 1); assert_eq!(tags.items[1].name, "js"); @@ -438,6 +443,7 @@ mod tests { assert_eq!(tags.items[1].name, "js"); assert_eq!(tags.items[1].slug, "js"); assert_eq!(tags.items[1].permalink, "http://a-website.com/tags/js/"); + assert_eq!(tags.items[1].path, "/tags/js/"); assert_eq!(tags.items[1].pages.len(), 2); assert_eq!(tags.items[2].name, "rust"); diff --git a/docs/content/documentation/templates/taxonomies.md b/docs/content/documentation/templates/taxonomies.md index 7999957c..e8e41536 100644 --- a/docs/content/documentation/templates/taxonomies.md +++ b/docs/content/documentation/templates/taxonomies.md @@ -13,6 +13,7 @@ First, `TaxonomyTerm` has the following fields: ```ts name: String; slug: String; +path: String; permalink: String; pages: Array; ```