feat: ADD variable for URLs #29
This commit is contained in:
parent
7a8ecafc3a
commit
c3ef992a89
1 changed files with 30 additions and 40 deletions
70
picopaper.py
70
picopaper.py
|
|
@ -40,6 +40,7 @@ class SSGGGenerator:
|
||||||
self.hide_title = HIDE_TITLE
|
self.hide_title = HIDE_TITLE
|
||||||
self.logo_path = LOGO_PATH
|
self.logo_path = LOGO_PATH
|
||||||
self.strip_image_exif = STRIP_IMAGE_EXIF
|
self.strip_image_exif = STRIP_IMAGE_EXIF
|
||||||
|
self.base_url = BASE_URL.rstrip('/')
|
||||||
|
|
||||||
# Setup Jinja2
|
# Setup Jinja2
|
||||||
self.env = Environment(loader=FileSystemLoader(self.templates_dir))
|
self.env = Environment(loader=FileSystemLoader(self.templates_dir))
|
||||||
|
|
@ -166,6 +167,27 @@ class SSGGGenerator:
|
||||||
|
|
||||||
return posts
|
return posts
|
||||||
|
|
||||||
|
def common_context(self, page_url):
|
||||||
|
"""Template variables shared by every page.
|
||||||
|
|
||||||
|
page_url is the current page's site-relative path (leading slash).
|
||||||
|
Templates can build absolute links from it, e.g. a share button:
|
||||||
|
{{ base_url }}{{ page_url }} or {{ page_absolute_url }}
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
'blog_title': self.blog_title,
|
||||||
|
'blog_description': self.blog_description,
|
||||||
|
'navbar_items': self.navbar_items,
|
||||||
|
'hide_logo': self.hide_logo,
|
||||||
|
'hide_title': self.hide_title,
|
||||||
|
'logo_path': self.logo_path,
|
||||||
|
'rss_feed_enabled': ENABLE_RSS_FEED,
|
||||||
|
'rss_feed_path': RSS_FEED_PATH,
|
||||||
|
'base_url': self.base_url,
|
||||||
|
'page_url': page_url,
|
||||||
|
'page_absolute_url': f"{self.base_url}{page_url}",
|
||||||
|
}
|
||||||
|
|
||||||
def generate_index(self, posts, section_name=None, all_posts=None):
|
def generate_index(self, posts, section_name=None, all_posts=None):
|
||||||
"""Generate index.html with all posts (or section-specific index)"""
|
"""Generate index.html with all posts (or section-specific index)"""
|
||||||
template = self.env.get_template('index.tmpl')
|
template = self.env.get_template('index.tmpl')
|
||||||
|
|
@ -173,25 +195,21 @@ class SSGGGenerator:
|
||||||
if section_name:
|
if section_name:
|
||||||
title = f"{section_name} - {self.blog_title}"
|
title = f"{section_name} - {self.blog_title}"
|
||||||
output_path = self.output_dir / 'section' / section_name / 'index.html'
|
output_path = self.output_dir / 'section' / section_name / 'index.html'
|
||||||
|
page_url = f"/section/{section_name}/"
|
||||||
elif self.blogroll_path:
|
elif self.blogroll_path:
|
||||||
title = self.blog_title
|
title = self.blog_title
|
||||||
output_path = self.output_dir / self.blogroll_path / 'index.html'
|
output_path = self.output_dir / self.blogroll_path / 'index.html'
|
||||||
|
page_url = f"/{self.blogroll_path}/"
|
||||||
else:
|
else:
|
||||||
title = self.blog_title
|
title = self.blog_title
|
||||||
output_path = self.output_dir / 'index.html'
|
output_path = self.output_dir / 'index.html'
|
||||||
|
page_url = "/"
|
||||||
|
|
||||||
html = template.render(
|
html = template.render(
|
||||||
title=title,
|
title=title,
|
||||||
blog_title=self.blog_title,
|
|
||||||
blog_description=self.blog_description,
|
|
||||||
navbar_items=self.navbar_items,
|
|
||||||
posts=posts,
|
posts=posts,
|
||||||
all_posts=all_posts or posts,
|
all_posts=all_posts or posts,
|
||||||
hide_logo=self.hide_logo,
|
**self.common_context(page_url)
|
||||||
hide_title=self.hide_title,
|
|
||||||
logo_path=self.logo_path,
|
|
||||||
rss_feed_enabled=ENABLE_RSS_FEED,
|
|
||||||
rss_feed_path=RSS_FEED_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
@ -218,16 +236,9 @@ class SSGGGenerator:
|
||||||
|
|
||||||
html = template.render(
|
html = template.render(
|
||||||
title=title,
|
title=title,
|
||||||
blog_title=self.blog_title,
|
|
||||||
blog_description=self.blog_description,
|
|
||||||
navbar_items=self.navbar_items,
|
|
||||||
sections=section_list,
|
sections=section_list,
|
||||||
all_posts=all_posts or [],
|
all_posts=all_posts or [],
|
||||||
hide_logo=self.hide_logo,
|
**self.common_context("/section/")
|
||||||
hide_title=self.hide_title,
|
|
||||||
logo_path=self.logo_path,
|
|
||||||
rss_feed_enabled=ENABLE_RSS_FEED,
|
|
||||||
rss_feed_path=RSS_FEED_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
@ -247,16 +258,9 @@ class SSGGGenerator:
|
||||||
|
|
||||||
html = template.render(
|
html = template.render(
|
||||||
title=title,
|
title=title,
|
||||||
blog_title=self.blog_title,
|
|
||||||
blog_description=self.blog_description,
|
|
||||||
navbar_items=self.navbar_items,
|
|
||||||
posts=posts,
|
posts=posts,
|
||||||
all_posts=all_posts or posts,
|
all_posts=all_posts or posts,
|
||||||
hide_logo=self.hide_logo,
|
**self.common_context(f"/{subpath}/")
|
||||||
hide_title=self.hide_title,
|
|
||||||
logo_path=self.logo_path,
|
|
||||||
rss_feed_enabled=ENABLE_RSS_FEED,
|
|
||||||
rss_feed_path=RSS_FEED_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
@ -271,16 +275,9 @@ class SSGGGenerator:
|
||||||
|
|
||||||
html = template.render(
|
html = template.render(
|
||||||
title=f"{post['title']} - {self.blog_title}",
|
title=f"{post['title']} - {self.blog_title}",
|
||||||
blog_title=self.blog_title,
|
|
||||||
blog_description=self.blog_description,
|
|
||||||
navbar_items=self.navbar_items,
|
|
||||||
post=post,
|
post=post,
|
||||||
all_posts=all_posts or [],
|
all_posts=all_posts or [],
|
||||||
hide_logo=self.hide_logo,
|
**self.common_context(post['url'])
|
||||||
hide_title=self.hide_title,
|
|
||||||
logo_path=self.logo_path,
|
|
||||||
rss_feed_enabled=ENABLE_RSS_FEED,
|
|
||||||
rss_feed_path=RSS_FEED_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create directory for the post slug (with parents for nested paths)
|
# Create directory for the post slug (with parents for nested paths)
|
||||||
|
|
@ -300,16 +297,9 @@ class SSGGGenerator:
|
||||||
|
|
||||||
html = template.render(
|
html = template.render(
|
||||||
title=f"{post['title']} - {self.blog_title}",
|
title=f"{post['title']} - {self.blog_title}",
|
||||||
blog_title=self.blog_title,
|
|
||||||
blog_description=self.blog_description,
|
|
||||||
navbar_items=self.navbar_items,
|
|
||||||
post=post,
|
post=post,
|
||||||
all_posts=all_posts or [],
|
all_posts=all_posts or [],
|
||||||
hide_logo=self.hide_logo,
|
**self.common_context("/")
|
||||||
hide_title=self.hide_title,
|
|
||||||
logo_path=self.logo_path,
|
|
||||||
rss_feed_enabled=ENABLE_RSS_FEED,
|
|
||||||
rss_feed_path=RSS_FEED_PATH
|
|
||||||
)
|
)
|
||||||
|
|
||||||
output_path = self.output_dir / 'index.html'
|
output_path = self.output_dir / 'index.html'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue