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.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'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue