Add navigation settings, fix page generation

This commit is contained in:
Christoph Hagen
2025-01-02 11:56:51 +01:00
parent 922ba4ebe7
commit 4d4275e072
43 changed files with 921 additions and 581 deletions

View File

@@ -106,20 +106,6 @@ extension Content {
}
}
// MARK: Paths to items
private func makeCleanAbsolutePath(_ path: String) -> String {
("/" + path).replacingOccurrences(of: "//", with: "/")
}
func absoluteUrlPrefixForTag(_ tag: Tag, language: ContentLanguage) -> String {
makeCleanAbsolutePath(settings.paths.tagsOutputFolderPath + "/" + tag.localized(in: language).urlComponent)
}
func absoluteUrlToTag(_ tag: Tag, language: ContentLanguage) -> String {
absoluteUrlPrefixForTag(tag, language: language) + ".html"
}
// MARK: Find items by id
func page(_ pageId: String) -> Page? {
@@ -145,7 +131,7 @@ extension Content {
// MARK: Generation input
func navigationBar(in language: ContentLanguage) -> [NavigationBar.Link] {
settings.navigationItems.map {
settings.navigation.navigationItems.map {
.init(text: $0.title(in: language),
url: $0.absoluteUrl(in: language))
}
@@ -197,9 +183,6 @@ extension Content {
continue
}
for language in ContentLanguage.allCases {
guard page.hasContent(in: language) else {
continue
}
generateInternal(page, in: language)
}
}
@@ -213,14 +196,12 @@ extension Content {
for language in ContentLanguage.allCases {
guard shouldGenerateWebsite else { return }
let results = results.makeResults(for: .feed, in: language)
let generator = PostListPageGenerator(
let source = FeedGeneratorSource(
language: language,
content: self,
results: results,
showTitle: false,
pageTitle: settings.localized(in: language).title,
pageDescription: settings.localized(in: language).description,
pageUrlPrefix: settings.localized(in: language).feedUrlPrefix)
results: results)
let generator = PostListPageGenerator(source: source)
generator.createPages(for: posts)
}
@@ -249,16 +230,12 @@ extension Content {
let posts = posts.filter { $0.tags.contains(tag) }
guard posts.count > 0 else { continue }
let localized = tag.localized(in: language)
let urlPrefix = absoluteUrlPrefixForTag(tag, language: language)
let generator = PostListPageGenerator(
let source = TagPageGeneratorSource(
language: language,
content: self,
results: results,
showTitle: true,
pageTitle: localized.name,
pageDescription: localized.description ?? "",
pageUrlPrefix: urlPrefix)
tag: tag)
let generator = PostListPageGenerator(source: source)
generator.createPages(for: posts)
}
}