homepage
This commit is contained in:
parent
d6006a0227
commit
70671e5a43
17 changed files with 519 additions and 14 deletions
94
.github/workflows/docker.yml
vendored
Normal file
94
.github/workflows/docker.yml
vendored
Normal file
|
@ -0,0 +1,94 @@
|
|||
name: docker
|
||||
|
||||
on:
|
||||
# workflow_run:
|
||||
# workflows: [crane]
|
||||
push:
|
||||
branches: [main]
|
||||
# types:
|
||||
# - completed
|
||||
# schedule:
|
||||
# - cron: 0 0 * * 1
|
||||
# # Publish semver tags as releases.
|
||||
# tags: [ 'v*.*.*' ]
|
||||
# pull_request:
|
||||
# branches: [ "main" ]
|
||||
|
||||
env:
|
||||
# Use docker.io for Docker Hub if empty
|
||||
REGISTRY: ghcr.io
|
||||
# github.repository as <account>/<repo>
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-based-on-the-conclusion-of-another-workflow
|
||||
# if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
# This is used to complete the identity challenge
|
||||
# with sigstore/fulcio when running outside of PRs.
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Install Nix
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client login nex https://nix.nexveridian.com ${{ secrets.ATTIC_TOKEN }} || true
|
||||
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client cache create NexVeridian-web || true
|
||||
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client use NexVeridian-web || true
|
||||
|
||||
# Set up BuildKit Docker container builder to be able to build
|
||||
# multi-platform images and export cache
|
||||
# https://github.com/docker/setup-buildx-action
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
# Login against a Docker registry except on PR
|
||||
# https://github.com/docker/login-action
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GHCR_TOKEN }}
|
||||
|
||||
# Extract metadata (tags, labels) for Docker
|
||||
# https://github.com/docker/metadata-action
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
# Build Nix package
|
||||
- name: Build Nix package
|
||||
run: nix build .#my-docker
|
||||
|
||||
# https://github.com/orgs/community/discussions/25768#discussioncomment-3249183
|
||||
- name: Downcase REPO
|
||||
run: |
|
||||
echo "REPO=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV}
|
||||
|
||||
- name: Strip REPO Username
|
||||
run: |
|
||||
STRIP_REPO_USERNAME=$(echo "${{ env.REPO }}" | sed 's/nexveridian\///')
|
||||
echo "STRIP_REPO_USERNAME=${STRIP_REPO_USERNAME}" >> ${GITHUB_ENV}
|
||||
|
||||
# https://github.com/docker/build-push-action/issues/538
|
||||
- name: Push and tag Docker image
|
||||
run: |
|
||||
docker load < result
|
||||
docker tag ${{ env.STRIP_REPO_USERNAME }}:latest ${{ env.REGISTRY }}/${{ env.REPO }}:latest
|
||||
docker push ${{ env.REGISTRY }}/${{ env.REPO }}:latest
|
||||
|
||||
- run: |
|
||||
for i in {1..10}; do
|
||||
nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push NexVeridian-web /nix/store/*/ && break || [ $i -eq 5 ] || sleep 5
|
||||
done
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
public
|
||||
result
|
||||
|
|
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
|||
Source code for NexVeridian.com built using [Zola](https://github.com/getzola/zola)
|
|
@ -1,5 +1,5 @@
|
|||
# The URL the site will be built for
|
||||
base_url = "https://nexveridian.com"
|
||||
base_url = "https://blog.nexveridian.com/"
|
||||
|
||||
# The site title and description; used in feeds by default.
|
||||
title = ""
|
||||
|
@ -38,15 +38,15 @@ menu_items = [
|
|||
|
||||
# each of these is optional, name and url are required
|
||||
# $BASE_URL is going to be substituted by base_url from configuration
|
||||
{ name = "blog", url = "$BASE_URL" },
|
||||
{ name = "home", url = "$BASE_URL" },
|
||||
|
||||
# tags should only be enabled if you have "tags" taxonomy
|
||||
# see documentation below for more details
|
||||
{ name = "blog", url = "$BASE_URL/archive" },
|
||||
{ name = "tags", url = "$BASE_URL/tags" },
|
||||
{ name = "archive", url = "$BASE_URL/archive" },
|
||||
{ name = "about me", url = "$BASE_URL/about" },
|
||||
|
||||
{ name = "resume", url = "$BASE_URL/Elijah_McMorris_Resume.pdf" },
|
||||
{ name = "resume", url = "$BASE_URL/Elijah_McMorris_Resume.pdf", newtab = true },
|
||||
]
|
||||
|
||||
show_only_description = true
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
+++
|
||||
paginate_by = 3
|
||||
sort_by = "date"
|
||||
title = "NexVeridian"
|
||||
template = "index.html"
|
||||
+++
|
||||
|
|
6
content/blog/_index.md
Normal file
6
content/blog/_index.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "Blog"
|
||||
sort_by = "date"
|
||||
template = "section.html"
|
||||
paginate_by = 3
|
||||
+++
|
|
@ -1,6 +1,7 @@
|
|||
+++
|
||||
title = "Welcome to Terminimal Theme for Zola"
|
||||
date = 2019-02-04
|
||||
# description = "A showcase post for the Terminimal theme."
|
||||
|
||||
[taxonomies]
|
||||
tags = ["zola", "theme", "showcase"]
|
||||
|
@ -16,7 +17,7 @@ Code block (using "boron" theme):
|
|||
class HelloPrinter:
|
||||
def __init__(self, thing):
|
||||
self.thing = thing
|
||||
|
||||
|
||||
def __call__(self):
|
||||
print(f"Hello, {self.thing}!")
|
||||
|
|
@ -3,11 +3,11 @@ title = "About Me"
|
|||
path = "about"
|
||||
+++
|
||||
|
||||
I recently finished BAS in Software Development, Im looking for a Software Engineering positions, I live in Kirkland WA, I'm a US citizen. I've contributed multiple substantial code PRs to JupyterLab and Loco.rs, created an official extension for Loco.rs adding OpenAPI integration, and I have several open source projects on my resume. My strongest programming languages: Rust, TypeScript, Python, and I also use Nix for a lot of my projects.
|
||||
I recently finished BAS in Software Development, Im looking for Software Engineering positions, I live in Kirkland WA, I'm a US citizen. I've contributed multiple substantial code PRs to JupyterLab and Loco.rs, created an official extension for Loco.rs adding OpenAPI integration, and I have several open source projects on my resume. My strongest programming languages: Rust, TypeScript, Python, and I also use Nix for a lot of my projects.
|
||||
|
||||
# Contact Me:
|
||||
- [Email](mailto:nexveridian@gmail.com)
|
||||
- [NexVeridian.com](https://nexveridian.com)
|
||||
- [Calendly](https://calendly.com/nexveridian/main)
|
||||
- [GitHub.com](https://github.com/NexVeridian)
|
||||
- [LinkedIn](https://www.linkedin.com/in/nexveridian)
|
||||
- [Calendly](https://calendly.com/nexveridian/main)
|
||||
- [X](https://x.com/nexveridian)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
+++
|
||||
title = "Archive"
|
||||
title = "Blog"
|
||||
path = "archive"
|
||||
template = "archive.html"
|
||||
+++
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
# Create a Docker image with static-web-server to serve the site
|
||||
my-docker = pkgs.dockerTools.buildImage {
|
||||
name = "my-zola";
|
||||
name = "nexveridian-web";
|
||||
tag = "latest";
|
||||
created = "now";
|
||||
|
||||
|
|
4
justfile
4
justfile
|
@ -7,7 +7,7 @@ update:
|
|||
docker:
|
||||
nix build .#packages.x86_64-linux.my-docker
|
||||
docker load < ./result
|
||||
docker rm -f my-zola
|
||||
docker run -d --rm -p 80:80 --name my-zola my-zola:latest
|
||||
docker rm -f nexveridian-web
|
||||
docker run -d --rm -p 80:80 --name nexveridian-web nexveridian-web:latest
|
||||
rm -rf result
|
||||
docker image prune -f
|
||||
|
|
94
static/css/custom.css
Normal file
94
static/css/custom.css
Normal file
|
@ -0,0 +1,94 @@
|
|||
/* Custom styles for NexVeridian website */
|
||||
|
||||
:root {
|
||||
/* Main theme colors */
|
||||
/* --background: #1F222A; */
|
||||
--background-secondary: #191b22;
|
||||
/* --color: white;
|
||||
--color-secondary: #a9b7c6; */
|
||||
/* --accent: rgb(120, 226, 160); */
|
||||
/* --accent-alpha-70: rgba(120, 226, 160, 0.7); */
|
||||
/* --accent-alpha-20: rgba(120, 226, 160, 0.2); */
|
||||
/* --border-color: rgba(255, 255, 255, 0.1); */
|
||||
}
|
||||
|
||||
.project-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.project-box {
|
||||
background-color: var(--background-secondary);
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.project-box-link {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.project-box-link:hover .project-box {
|
||||
transform: translateY(-5px);
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.project-box p {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.view-project {
|
||||
display: inline-block;
|
||||
margin-top: auto;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.project-tags {
|
||||
color: var(--color-secondary);
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 15px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.project-tags::before {
|
||||
/* content: ":: "; */
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.recent-posts {
|
||||
background-color: var(--background-secondary);
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
border-bottom: 2px solid var(--accent);
|
||||
padding-bottom: 10px;
|
||||
margin-bottom: 20px;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.view-all {
|
||||
display: block;
|
||||
text-align: left;
|
||||
margin-top: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Additional overrides to ensure theme consistency */
|
||||
/* body {
|
||||
background-color: var(--background);
|
||||
color: var(--color);
|
||||
} */
|
19
templates/archive.html
Normal file
19
templates/archive.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block extra_head %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/custom.css") }}">
|
||||
{% endblock extra_head %}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">{{ page.title }}</h1>
|
||||
|
||||
{% set blog_section = get_section(path="blog/_index.md") %}
|
||||
|
||||
{{ post_macros::list_posts(pages=blog_section.pages) }}
|
||||
</div>
|
||||
{% endblock content %}
|
194
templates/index.html
Normal file
194
templates/index.html
Normal file
|
@ -0,0 +1,194 @@
|
|||
{% import "macros/date.html" as date_macros -%}
|
||||
{% import "macros/head.html" as head_macros -%}
|
||||
{% import "macros/menu.html" as menu_macros -%}
|
||||
{% import "macros/post.html" as post_macros -%}
|
||||
{% import "macros/title.html" as title_macros -%}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{%- if config.default_language -%}{{ config.default_language }}{%- else -%}en{%- endif -%}">
|
||||
|
||||
<head>
|
||||
<title>{%- block title %}{{ config.title }}{% endblock title -%}</title>
|
||||
{{ head_macros::head(config=config) }}
|
||||
|
||||
{%- block open_graph %}{{ head_macros::open_graph(config=config) }}{% endblock open_graph -%}
|
||||
|
||||
{%- if config.generate_feeds %}
|
||||
{%- for feed in config.feed_filenames %}
|
||||
{%- if feed is containing('atom') %}
|
||||
<link rel="alternate" type="application/atom+xml" title="{{ config.title }} Atom Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
||||
{%- endif %}
|
||||
|
||||
{%- if feed is containing('rss') %}
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ config.title }} RSS Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
{%- endif -%}
|
||||
|
||||
{%- if config.extra.favicon %}
|
||||
<link rel="shortcut icon" type="{{ config.extra.favicon_mimetype | default(value="image/x-icon") | safe }}" href="{{ config.extra.favicon | safe }}">
|
||||
{% endif -%}
|
||||
|
||||
{%- block extra_head %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/custom.css") }}">
|
||||
{% endblock extra_head -%}
|
||||
</head>
|
||||
|
||||
<body class="">
|
||||
<div class="container">
|
||||
{% block header %}
|
||||
<header class="header">
|
||||
<div class="header__inner">
|
||||
<div class="header__logo">
|
||||
{%- if config.extra.logo_home_link %}
|
||||
{% set logo_link = config.extra.logo_home_link %}
|
||||
{% else %}
|
||||
{% set logo_link = config.base_url %}
|
||||
{% endif -%}
|
||||
<a href="{{ logo_link | safe }}" style="text-decoration: none;">
|
||||
<div class="logo">
|
||||
{% block logo_content %}
|
||||
{%- if config.extra.logo_text %}
|
||||
{{ config.extra.logo_text }}
|
||||
{% else %}
|
||||
Terminimal theme
|
||||
{% endif -%}
|
||||
{% endblock logo_content %}
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% block header_menu %}
|
||||
{{ menu_macros::menu(config=config, current_path=current_path) }}
|
||||
{% endblock header_menu %}
|
||||
</header>
|
||||
{% endblock header %}
|
||||
|
||||
<div class="content">
|
||||
{% block content %}
|
||||
<div class="posts">
|
||||
<h2 class="section-title">Open Source Contributions and Projects</h2>
|
||||
|
||||
<div class="project-grid">
|
||||
<a href="https://github.com/loco-rs/loco-openapi-Initializer" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">Loco OpenAPI</h3>
|
||||
<p class="project-tags">Rust</p>
|
||||
<p>Created an official extension for Loco.rs adding OpenAPI integration</p>
|
||||
<p>Automatically generates the OpenAPI specification and documentation for the routes</p>
|
||||
<p>Serves the OpenAPI documentation using either Swagger-ui, Redoc, or Scalar</p>
|
||||
<span class="view-project">View Source Code →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/jupyterlab/jupyterlab/issues?q=state%3Aclosed%20is%3Apr%20author%3A@me%20is%3Amerged" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">JupyterLab Contributions</h3>
|
||||
<p class="project-tags">TypeScript</p>
|
||||
<p>[#16341] Added button to find/shut down kernels not attached to open notebooks</p>
|
||||
<p>[#16265] Implemented checkbox to skip kernel restart dialog</p>
|
||||
<p>[#16208] Fixed cell output area clearing in notebooks</p>
|
||||
<span class="view-project">View PRs →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/loco-rs/loco/issues?q=state%3Aclosed%20is%3Apr%20author%3A@me%20is%3Amerged" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">Loco.rs Contributions</h3>
|
||||
<p class="project-tags">Rust</p>
|
||||
<p>[#1360] Added YAML response support for routes</p>
|
||||
<p>[#1093] Enabled parallel test execution, reducing test time by 65-90%</p>
|
||||
<p>[#1204] Made background worker tests parallel with different database names</p>
|
||||
<P>+8 more PRs</P>
|
||||
<span class="view-project">View PRs →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://nexveridian.com/ARK" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">ARK Invest ETF Tracker</h3>
|
||||
<p class="project-tags">Next.js, TypeScript</p>
|
||||
<p>Retrieves the data from an API and visualizes it in an interactive chart, showing the holding over time for the ETFs</p>
|
||||
<span class="view-project">View Project →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://api.nexveridian.com/" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">Ark Invest API Rust</h3>
|
||||
<p class="project-tags">Rust, Polars, Axum, Redoc</p>
|
||||
<p>A REST API providing JSON data on the holdings of 25 ETFs, and automatically updates daily</p>
|
||||
<span class="view-project">View Source Code →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/NexVeridian/wikidata-to-surrealdb" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">Wikidata To SurrealDB</h3>
|
||||
<p class="project-tags">Rust</p>
|
||||
<p>A tool for converting Wikidata BZ2 or JSON data dumps, to a SurrealDB database</p>
|
||||
<span class="view-project">View Source Code →</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://s.nexveridian.com" class="project-box-link">
|
||||
<div class="project-box">
|
||||
<h3 class="post-title">Next Url Shortener</h3>
|
||||
<p class="project-tags">Next.js, TypeScript</p>
|
||||
<p>A URL shortener using Next.js server actions, Postgres or SurrealDB, Shadcn/ui, and Tailwind</p>
|
||||
<span class="view-project">View Project →</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2 class="section-title">Recent Blog Posts</h2>
|
||||
<div class="recent-posts">
|
||||
{% set blog_section = get_section(path="blog/_index.md") %}
|
||||
{% for page in blog_section.pages | slice(end=2) %}
|
||||
<div class="post on-list">
|
||||
{{ post_macros::header(page=page) }}
|
||||
{{ post_macros::content(page=page, summary=true, show_only_description=page.extra.show_only_description | default(value=true)) }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<a href="{{ get_url(path="blog") }}" class="view-all">View All Posts →</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
</div>
|
||||
|
||||
{% block footer %}
|
||||
<footer class="footer">
|
||||
<div class="footer__inner">
|
||||
{%- if config.extra.copyright_html %}
|
||||
<div class="copyright copyright--user">{{ config.extra.copyright_html | safe }}</div>
|
||||
{% else %}
|
||||
<div class="copyright">
|
||||
{%- if config.extra.author %}
|
||||
<span>© {{ date_macros::now_year() }} {{ config.extra.author }}</span>
|
||||
{% else %}
|
||||
<span>© {{ date_macros::now_year() }} Powered by <a href="https://www.getzola.org/">Zola</a></span>
|
||||
{% endif -%}
|
||||
|
||||
<span class="copyright-theme">
|
||||
<span class="copyright-theme-sep">:: </span>
|
||||
<a href="https://github.com/NexVeridian/NexVeridian-web">Source Code</a>
|
||||
</span>
|
||||
|
||||
<span class="copyright-theme">
|
||||
<span class="copyright-theme-sep">:: </span>
|
||||
Theme: <a href="https://github.com/pawroman/zola-theme-terminimal/">Terminimal</a> by pawroman
|
||||
</span>
|
||||
</div>
|
||||
{% endif -%}
|
||||
</div>
|
||||
</footer>
|
||||
{% endblock footer %}
|
||||
|
||||
</div>
|
||||
{%- block extra_body %}
|
||||
{% endblock extra_body -%}
|
||||
</body>
|
||||
|
||||
</html>
|
45
templates/section.html
Normal file
45
templates/section.html
Normal file
|
@ -0,0 +1,45 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block extra_head %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/custom.css") }}">
|
||||
{% endblock extra_head %}
|
||||
|
||||
{% block content %}
|
||||
<div class="posts">
|
||||
<h1 class="post-title">{{ section.title }}</h1>
|
||||
|
||||
{%- if paginator %}
|
||||
{%- set show_pages = paginator.pages -%}
|
||||
{% else %}
|
||||
{%- set show_pages = section.pages -%}
|
||||
{% endif -%}
|
||||
|
||||
{%- for page in show_pages %}
|
||||
<div class="post on-list">
|
||||
{{ post_macros::header(page=page) }}
|
||||
{{ post_macros::content(page=page, summary=true, show_only_description=page.extra.show_only_description | default(value=false)) }}
|
||||
</div>
|
||||
{% endfor -%}
|
||||
|
||||
<div class="pagination">
|
||||
<div class="pagination__buttons">
|
||||
{%- if paginator.previous %}
|
||||
<span class="button previous">
|
||||
<a href="{{ paginator.previous | safe }}">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">Newer posts</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif -%}
|
||||
{%- if paginator.next %}
|
||||
<span class="button next">
|
||||
<a href="{{ paginator.next | safe }}">
|
||||
<span class="button__text">Older posts</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
{% endif -%}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
25
templates/tags/list.html
Normal file
25
templates/tags/list.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ title_macros::title(page_title="Tags", main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block extra_head %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/custom.css") }}">
|
||||
{% endblock extra_head %}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">all tags</h1>
|
||||
|
||||
<ul>
|
||||
{% for term in terms %}
|
||||
<li class="tag-list">
|
||||
<a href="{{ term.permalink | safe }}">
|
||||
{{ term.name }} ({{ term.pages | length }} post{{ term.pages | length | pluralize }})
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock content %}
|
25
templates/tags/single.html
Normal file
25
templates/tags/single.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{%- block title -%}
|
||||
{% set title = "Tag: " ~ term.name %}
|
||||
{{ title_macros::title(page_title=title, main_title=config.title) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block extra_head %}
|
||||
<link rel="stylesheet" href="{{ get_url(path="css/custom.css") }}">
|
||||
{% endblock extra_head %}
|
||||
|
||||
{% block content %}
|
||||
<div class="post">
|
||||
<h1 class="post-title">
|
||||
tag: #{{ term.name }}
|
||||
({{ term.pages | length }} post{{ term.pages | length | pluralize }})
|
||||
</h1>
|
||||
|
||||
<a href="{{ config.base_url | safe }}/tags/">
|
||||
Show all tags
|
||||
</a>
|
||||
|
||||
{{ post_macros::list_posts(pages=term.pages) }}
|
||||
</div>
|
||||
{% endblock content %}
|
Loading…
Add table
Add a link
Reference in a new issue