feat: ADD variable for URLs #29

This commit is contained in:
Caffeine Fueled 2026-07-04 08:13:23 +02:00
parent 7a8ecafc3a
commit c3ef992a89
Signed by: cf7
GPG key ID: CA295D643074C68C

View file

@ -40,6 +40,7 @@ class SSGGGenerator:
self.hide_title = HIDE_TITLE
self.logo_path = LOGO_PATH
self.strip_image_exif = STRIP_IMAGE_EXIF
self.base_url = BASE_URL.rstrip('/')
# Setup Jinja2
self.env = Environment(loader=FileSystemLoader(self.templates_dir))
@ -166,6 +167,27 @@ class SSGGGenerator:
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):
"""Generate index.html with all posts (or section-specific index)"""
template = self.env.get_template('index.tmpl')
@ -173,25 +195,21 @@ class SSGGGenerator:
if section_name:
title = f"{section_name} - {self.blog_title}"
output_path = self.output_dir / 'section' / section_name / 'index.html'
page_url = f"/section/{section_name}/"
elif self.blogroll_path:
title = self.blog_title
output_path = self.output_dir / self.blogroll_path / 'index.html'
page_url = f"/{self.blogroll_path}/"
else:
title = self.blog_title
output_path = self.output_dir / 'index.html'
page_url = "/"
html = template.render(
title=title,
blog_title=self.blog_title,
blog_description=self.blog_description,
navbar_items=self.navbar_items,
posts=posts,
all_posts=all_posts or posts,
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
**self.common_context(page_url)
)
output_path.parent.mkdir(parents=True, exist_ok=True)
@ -218,16 +236,9 @@ class SSGGGenerator:
html = template.render(
title=title,
blog_title=self.blog_title,
blog_description=self.blog_description,
navbar_items=self.navbar_items,
sections=section_list,
all_posts=all_posts or [],
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
**self.common_context("/section/")
)
output_path.parent.mkdir(parents=True, exist_ok=True)
@ -247,16 +258,9 @@ class SSGGGenerator:
html = template.render(
title=title,
blog_title=self.blog_title,
blog_description=self.blog_description,
navbar_items=self.navbar_items,
posts=posts,
all_posts=all_posts or posts,
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
**self.common_context(f"/{subpath}/")
)
output_path.parent.mkdir(parents=True, exist_ok=True)
@ -271,16 +275,9 @@ class SSGGGenerator:
html = template.render(
title=f"{post['title']} - {self.blog_title}",
blog_title=self.blog_title,
blog_description=self.blog_description,
navbar_items=self.navbar_items,
post=post,
all_posts=all_posts or [],
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
**self.common_context(post['url'])
)
# Create directory for the post slug (with parents for nested paths)
@ -300,16 +297,9 @@ class SSGGGenerator:
html = template.render(
title=f"{post['title']} - {self.blog_title}",
blog_title=self.blog_title,
blog_description=self.blog_description,
navbar_items=self.navbar_items,
post=post,
all_posts=all_posts or [],
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
**self.common_context("/")
)
output_path = self.output_dir / 'index.html'