added site title and base configuration variables

This commit is contained in:
Amy G. Bowersox 2024-08-14 13:35:02 -06:00
parent 0d1e2cc9a0
commit a56555b4b1
4 changed files with 41 additions and 1 deletions

View File

@ -41,6 +41,12 @@ tldr = "clipboard-list"
todo = "circle-check"
warning = "triangle-alert"
[generate]
# The site base URL. If supplied, this will be added to a <base> element in the page metadata.
sitebase = ""
# The site title. If supplied, this will be included in page metadata and used to formulate the default title.
sitetitle = ""
[templates]
# The template directory name under the Obsidian vault. Default is ".dragonglass.tmpl".
directory = ".dragonglass.tmpl"

View File

@ -17,6 +17,12 @@ dragonglass_version
python_version
The version number of Python that's running dragonglass.
site_base:
If defined, contains the site base URL.
site_title:
If defined, contains the site title.
tags:
A list of all tags the page being rendered has, in sorted order.

View File

@ -106,6 +106,18 @@ class Context:
links_section = self.config.get("links", {})
return links_section.get("relative", False)
@property
def site_base(self) -> str | None:
"""Returns the configured site base URL."""
generate_section = self.config.get("generate", {})
return generate_section.get("sitebase", None)
@property
def site_title(self) -> str | None:
"""Returns the configured site title."""
generate_section = self.config.get("generate", {})
return generate_section.get("sitetitle", None)
@property
def url_prefix(self) -> str:
"""Returns the configured URL prefix for all URLs generated for internal links."""

View File

@ -15,7 +15,15 @@ from ._version import __version__
"""The default template used to render Markdown data."""
DEFAULT_TEMPLATE = """<html>
<head>
{% if site_title is defined %}
<title>{{ title }} - {{ site_title }}</title>
<meta property="og:site_name" content="{{ site_title }}"/>
{% else %}
<title>{{ title }}</title>
{% endif %}
{% if site_base is defined %}
<base href="{{ site_base }}"/>
{% endif %}
<link rel="stylesheet" href="{{ default_stylesheet }}"/>
{% if description|length > 0 %}
<meta name="description" content="{{ description }}"/>
@ -99,6 +107,14 @@ def template_vars(node: SourceNode, ctxt: Context) -> dict[str, Any]:
tvars["dragonglass_version"] = __version__
tvars["python_version"] = f"{sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]}"
# Add values derived from configuration.
t = ctxt.site_base
if t:
tvars["site_base"] = t
t = ctxt.site_title
if t:
tvars["site_title"] = t
# Compute backlinks for this node. Don't include nodes that aren't published.
backlinks = sorted([n for n in node.backlinks if n.publish], key=lambda n: n.page_title)
tvars['backlinks'] = [{'title': n.page_title,