diff --git a/src/templates/article.html b/src/templates/article.html
index 4b6844a..8fb16e6 100644
--- a/src/templates/article.html
+++ b/src/templates/article.html
@@ -25,6 +25,12 @@
{article_content}
+
+
Further Reading
+
+
+ {article_children_cards}
+
diff --git a/src/templates/article_card.html b/src/templates/article_card.html
index cd7ae54..e8dd226 100644
--- a/src/templates/article_card.html
+++ b/src/templates/article_card.html
@@ -3,6 +3,8 @@
{article_title}
+ {article_preview}
+
diff --git a/stsg/build.py b/stsg/build.py
index 1a40251..fe0066e 100644
--- a/stsg/build.py
+++ b/stsg/build.py
@@ -37,6 +37,7 @@ class Template:
self.article: str = (self.folder / "article.html").read_text()
self.overview: str = (self.folder / "overview.html").read_text()
self.translation_card: str = (self.folder / "translation_card.html").read_text()
+ self.article_card: str = (self.folder / "article_card.html").read_text()
@@ -68,16 +69,28 @@ class ArticleTranslation:
self.priority: int = _language_info.get("priority", 0)
self.title = get_first_header_content(self.article_content, fallback=self.language_name)
+
+ self.article_cards = ""
+
+
+ def post_init(self):
+ """
+ the initializing that takes place after the creation of the tree
+ """
+ article_card_strings = []
+ for child in self.article_overview.child_articles:
+ if self.language_code in child.article_translations_map:
+ article_card_strings.append(child.article_translations_map[self.language_code].get_article_card())
+
+ self.article_cards = "\n".join(article_card_strings)
-
def build(self):
self.dist_path.mkdir(parents=True, exist_ok=True)
with Path(self.dist_path, "index.html").open("w") as f:
f.write(self.get_article())
-
def _get_values(self, return_foreign_articles: bool = True) -> Dict[str, str]:
r = {
"article_content": self.article_content,
@@ -91,6 +104,7 @@ class ArticleTranslation:
"article_language_name": self.language_name,
"article_language_code": self.language_code,
"article_language_flag": self.language_flag,
+ "article_children_cards": self.article_cards,
}
if return_foreign_articles:
@@ -106,12 +120,13 @@ class ArticleTranslation:
return res
def get_article(self) -> str:
- global TEMPLATE
return replace_values(TEMPLATE.article, self._get_values())
- def get_overview_card(self) -> str:
- global TEMPLATE
+ def get_translation_card(self) -> str:
return replace_values(TEMPLATE.translation_card, self._get_values())
+
+ def get_article_card(self) -> str:
+ return replace_values(TEMPLATE.article_card, self._get_values())
class ArticleOverview:
@@ -157,7 +172,11 @@ class ArticleOverview:
# the tree is built
self.article_translations.sort(key=lambda a: a.priority, reverse=True)
- self.overview_cards = "\n".join(a.get_overview_card() for a in self.article_translations)
+ self.translation_cards = "\n".join(a.get_translation_card() for a in self.article_translations)
+ self.article_cards = "\n".join(c.get_article_card() for c in self.child_articles)
+
+ for at in self.article_translations:
+ at.post_init()
logger.info("found %s at %s with the translations %s", self.slug, ".".join(list(self.location_in_tree)), ",".join(self.article_translations_map.keys()))
@@ -181,7 +200,8 @@ class ArticleOverview:
"article_datetime": self.article_written.strftime(config.formatting.datetime_format),
"article_datetime_iso": self.article_written.isoformat(),
"article_overview_url": self.url,
- "article_translation_cards": self.overview_cards,
+ "article_translation_cards": self.translation_cards,
+ "article_children_cards": self.article_cards,
}
if return_foreign_articles:
@@ -200,6 +220,9 @@ class ArticleOverview:
global TEMPLATE
return replace_values(TEMPLATE.overview, self._get_values())
+ def get_article_card(self) -> str:
+ return replace_values(TEMPLATE.article_card, self._get_values())
+
# GLOBALS
logger = logging.getLogger("stsg.build")