Generate open graph meta tags
This commit is contained in:
@ -7,20 +7,28 @@ struct FeedGeneratorSource: PostListPageGeneratorSource {
|
||||
|
||||
let results: PageGenerationResults
|
||||
|
||||
var showTitle: Bool {
|
||||
false
|
||||
}
|
||||
|
||||
var postsPerPage: Int {
|
||||
content.settings.posts.postsPerPage
|
||||
}
|
||||
|
||||
var pageTitle: String {
|
||||
content.settings.posts.localized(in: language).title
|
||||
var pageTitle: String? {
|
||||
nil // Don't show title in page
|
||||
}
|
||||
|
||||
var pageDescription: String {
|
||||
content.settings.posts.localized(in: language).description
|
||||
private var linkPreview: LinkPreview {
|
||||
content.settings.posts.localized(in: language).linkPreview
|
||||
}
|
||||
|
||||
var linkTitle: String? {
|
||||
linkPreview.title
|
||||
}
|
||||
|
||||
var linkDescription: String? {
|
||||
linkPreview.description
|
||||
}
|
||||
|
||||
var linkImage: FileResource? {
|
||||
linkPreview.image
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,7 +17,15 @@ final class PostListPageGenerator {
|
||||
}
|
||||
|
||||
private func pageUrl(in language: ContentLanguage, pageNumber: Int) -> String {
|
||||
"\(source.pageUrlPrefix(for: language))/\(pageNumber)"
|
||||
let base = source.content.settings.general.url + source.pageUrlPrefix(for: language)
|
||||
guard pageNumber > 1 else {
|
||||
return base
|
||||
}
|
||||
return base + "/\(pageNumber)"
|
||||
}
|
||||
|
||||
private func filePath(in language: ContentLanguage, pageNumber: Int) -> String {
|
||||
"\(source.pageUrlPrefix(for: language))/\(pageNumber).html"
|
||||
}
|
||||
|
||||
func createPages(for posts: [Post]) {
|
||||
@ -82,18 +90,23 @@ final class PostListPageGenerator {
|
||||
// Includes leading slash
|
||||
let languageButtonUrl = pageUrl(in: language.next, pageNumber: pageIndex)
|
||||
|
||||
// Includes leading slash
|
||||
let pageUrl = pageUrl(in: language, pageNumber: pageIndex)
|
||||
|
||||
let fileContent = feedPageGenerator.generatePage(
|
||||
language: language,
|
||||
posts: posts,
|
||||
title: source.pageTitle,
|
||||
description: source.pageDescription,
|
||||
showTitle: source.showTitle,
|
||||
title: source.linkTitle,
|
||||
description: source.linkDescription,
|
||||
image: source.linkImage,
|
||||
pageUrl: pageUrl,
|
||||
pageTitle: source.pageTitle,
|
||||
pageNumber: pageIndex,
|
||||
totalPages: pageCount,
|
||||
languageButtonUrl: languageButtonUrl,
|
||||
linkPrefix: source.pageUrlPrefix(for: language))
|
||||
// Includes leading slash
|
||||
let filePath = pageUrl(in: language, pageNumber: pageIndex) + ".html"
|
||||
|
||||
let filePath = self.filePath(in: language, pageNumber: pageIndex)
|
||||
guard save(fileContent, to: filePath) else {
|
||||
source.results.unsavedOutput(filePath, source: .feed)
|
||||
return
|
||||
|
@ -7,11 +7,13 @@ protocol PostListPageGeneratorSource {
|
||||
|
||||
var results: PageGenerationResults { get }
|
||||
|
||||
var showTitle: Bool { get }
|
||||
var pageTitle: String? { get }
|
||||
|
||||
var pageTitle: String { get }
|
||||
var linkTitle: String? { get }
|
||||
|
||||
var pageDescription: String { get }
|
||||
var linkDescription: String? { get }
|
||||
|
||||
var linkImage: FileResource? { get }
|
||||
|
||||
/**
|
||||
The url to the page, including a leading slash
|
||||
|
@ -9,20 +9,28 @@ struct TagPageGeneratorSource: PostListPageGeneratorSource {
|
||||
|
||||
let tag: Tag
|
||||
|
||||
var showTitle: Bool {
|
||||
true
|
||||
}
|
||||
|
||||
var postsPerPage: Int {
|
||||
content.settings.posts.postsPerPage
|
||||
}
|
||||
|
||||
var pageTitle: String {
|
||||
tag.localized(in: language).name
|
||||
var pageTitle: String? {
|
||||
linkPreview.title ?? tag.localized(in: language).name
|
||||
}
|
||||
|
||||
var pageDescription: String {
|
||||
tag.localized(in: language).linkPreview.description ?? ""
|
||||
private var linkPreview: LinkPreview {
|
||||
tag.localized(in: language).linkPreview
|
||||
}
|
||||
|
||||
var linkTitle: String? {
|
||||
linkPreview.title
|
||||
}
|
||||
|
||||
var linkDescription: String? {
|
||||
linkPreview.description
|
||||
}
|
||||
|
||||
var linkImage: FileResource? {
|
||||
linkPreview.image
|
||||
}
|
||||
|
||||
func pageUrlPrefix(for language: ContentLanguage) -> String {
|
||||
|
Reference in New Issue
Block a user