Generate pages for individual tags
This commit is contained in:
parent
20ecef3b3f
commit
2072f88711
4 changed files with 35 additions and 7 deletions
|
@ -370,6 +370,22 @@ method generate-tags-page($db, @tags) {
|
||||||
"<!doctype html>$html"
|
"<!doctype html>$html"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
method generate-tag-page($db, $tag) {
|
||||||
|
my $head = self.generate-head(Nil, $db.meta);
|
||||||
|
my $body = body [
|
||||||
|
self.site-header: $db.meta;
|
||||||
|
self.generate-tag-blurb($db, $tag, 4);
|
||||||
|
];
|
||||||
|
|
||||||
|
my $html =
|
||||||
|
html :lang<en>, [
|
||||||
|
$head,
|
||||||
|
$body
|
||||||
|
];
|
||||||
|
|
||||||
|
"<!doctype html>$html"
|
||||||
|
}
|
||||||
|
|
||||||
sub icon($icon) {
|
sub icon($icon) {
|
||||||
i(:class("bx bx-$icon"))
|
i(:class("bx bx-$icon"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,12 @@ class PostDB {
|
||||||
# Generate the tags pages
|
# Generate the tags pages
|
||||||
my @tags = %!posts.values.map(*.tags).flat.unique;
|
my @tags = %!posts.values.map(*.tags).flat.unique;
|
||||||
$out-dir.add('tags.html').spurt: $config.generate-tags-page(self, @tags);
|
$out-dir.add('tags.html').spurt: $config.generate-tags-page(self, @tags);
|
||||||
|
my $tags-dir = $out-dir.add('tags/');
|
||||||
|
mkdir $tags-dir unless $tags-dir.e;
|
||||||
|
for @tags -> $tag {
|
||||||
|
$tags-dir.add("$tag.html").spurt:
|
||||||
|
$config.generate-tag-page(self, $tag);
|
||||||
|
}
|
||||||
# Render the rss/atom feed
|
# Render the rss/atom feed
|
||||||
my $atom-path = $out-dir.add('atom.xml');
|
my $atom-path = $out-dir.add('atom.xml');
|
||||||
my $atom = posts-to-atom self;
|
my $atom = posts-to-atom self;
|
||||||
|
|
|
@ -53,16 +53,22 @@ a:visited {
|
||||||
.site-tagline {
|
.site-tagline {
|
||||||
color: var(--dim-0);
|
color: var(--dim-0);
|
||||||
}
|
}
|
||||||
.post-body, .post-header, .post-blurbs, .tags, .tag-blurb-post {
|
.post-body, .post-header, .post-blurbs, .tags, .tags .tag-blurb-post {
|
||||||
background-color: var(--bg-0);
|
background-color: var(--bg-0);
|
||||||
}
|
}
|
||||||
.post-blurb, .tag-blurb {
|
.post-blurb, .tags .tag-blurb {
|
||||||
background-color: var(--bg-1);
|
background-color: var(--bg-1);
|
||||||
}
|
}
|
||||||
.post-title, .post-blurbs > h1 {
|
:not(.tags) .tag-blurb {
|
||||||
|
background-color: var(--bg-0);
|
||||||
|
}
|
||||||
|
:not(.tags) .tag-blurb-post {
|
||||||
|
background-color: var(--bg-1);
|
||||||
|
}
|
||||||
|
.post-title, .post-blurbs h1 {
|
||||||
color: var(--green);
|
color: var(--green);
|
||||||
}
|
}
|
||||||
.post-body > h2, .post-body > h3, .post-body > h4 {
|
.post-body h2, .post-body h3, .post-body h4 {
|
||||||
color: var(--fg-1);
|
color: var(--fg-1);
|
||||||
}
|
}
|
||||||
blockquote {
|
blockquote {
|
||||||
|
|
|
@ -83,11 +83,11 @@ body, .post {
|
||||||
border-radius: var(--box-radius);
|
border-radius: var(--box-radius);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.post-body > p {
|
.post-body p {
|
||||||
margin: auto var(--box-margin-horz);
|
margin: auto var(--box-margin-horz);
|
||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
}
|
}
|
||||||
.post-title > h1 {
|
.post-title h1 {
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ body, .post {
|
||||||
.post-read-time {
|
.post-read-time {
|
||||||
text-decoration: underline dotted;
|
text-decoration: underline dotted;
|
||||||
}
|
}
|
||||||
.post-body > h2, .post-body > h3, .post-body > h4 {
|
.post-body h2, .post-body h3, .post-body h4 {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.post-blurbs {
|
.post-blurbs {
|
||||||
|
|
Loading…
Add table
Reference in a new issue