added post list template
This commit is contained in:
parent
437aff51e7
commit
2a9508e50b
3 changed files with 32 additions and 5 deletions
|
@ -71,7 +71,10 @@ class ZonaBuilder:
|
|||
|
||||
def _build(self):
|
||||
assert self.items
|
||||
templater = Templater(self.layout.templates)
|
||||
post_list: list[Item] = [item for item in self.items if item.post]
|
||||
templater = Templater(
|
||||
template_dir=self.layout.templates, post_list=post_list
|
||||
)
|
||||
self.item_map = {item.source.resolve(): item for item in self.items}
|
||||
# print(item_map)
|
||||
for item in self.item_map.values():
|
||||
|
|
13
src/zona/data/templates/post_list.html
Normal file
13
src/zona/data/templates/post_list.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<center><h1>{{ metadata.title }}</h1></center>
|
||||
{% if post_list %}
|
||||
<ul>
|
||||
{% for item in post_list %}
|
||||
<li>{{ item.metadata.title }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
from pathlib import Path
|
||||
from typing import Literal
|
||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
from zona.models import Item
|
||||
from zona.markdown import md_to_html
|
||||
|
@ -23,7 +24,7 @@ def get_footer(template_dir: Path) -> str | None:
|
|||
|
||||
|
||||
class Templater:
|
||||
def __init__(self, template_dir: Path):
|
||||
def __init__(self, template_dir: Path, post_list: list[Item]):
|
||||
self.env: Environment = Environment(
|
||||
loader=FileSystemLoader(template_dir),
|
||||
autoescape=select_autoescape(["html", "xml"]),
|
||||
|
@ -31,18 +32,28 @@ class Templater:
|
|||
self.template_dir: Path = template_dir
|
||||
self.header: str | None = get_header(template_dir)
|
||||
self.footer: str | None = get_footer(template_dir)
|
||||
self.post_list: list[Item] = post_list
|
||||
|
||||
def render_item(self, item: Item, content: str) -> str:
|
||||
env = self.env
|
||||
meta = item.metadata
|
||||
assert meta is not None
|
||||
template = env.get_template(meta.template)
|
||||
header = self.header if self.header and meta.header else False
|
||||
footer = self.footer if self.footer and meta.footer else False
|
||||
template = env.get_template(
|
||||
meta.template
|
||||
if meta.template.endswith(".html")
|
||||
else meta.template + ".html"
|
||||
)
|
||||
header: str | Literal[False] = (
|
||||
self.header if self.header and meta.header else False
|
||||
)
|
||||
footer: str | Literal[False] = (
|
||||
self.footer if self.footer and meta.footer else False
|
||||
)
|
||||
return template.render(
|
||||
content=content,
|
||||
url=item.url,
|
||||
metadata=meta,
|
||||
header=header,
|
||||
footer=footer,
|
||||
post_list=self.post_list,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue