1
0
mirror of synced 2025-12-21 19:06:49 -05:00

Resolve Liquid in AUTOTITLE page titles (#34382)

This commit is contained in:
Peter Bengtsson
2023-02-02 14:29:22 -05:00
committed by GitHub
parent e8be5eb877
commit acee311e5c

View File

@@ -31,7 +31,9 @@ export default function rewriteLocalLinks(context) {
// There's no languageCode or version passed, so nothing to do
if (!currentLanguage || !currentVersion) return
return (tree) => {
return async (tree) => {
const promises = []
visit(tree, matcher, (node) => {
const newHref = getNewHref(node, currentLanguage, currentVersion)
if (newHref) {
@@ -39,19 +41,29 @@ export default function rewriteLocalLinks(context) {
}
for (const child of node.children) {
if (child.value && AUTOTITLE.test(child.value)) {
child.value = getNewTitle(node.properties.href, context)
promises.push(getNewTitleSetter(child, node.properties.href, context))
}
}
})
if (promises.length) {
await Promise.all(promises)
}
return tree
}
}
function getNewTitle(href, context) {
async function getNewTitleSetter(child, href, context) {
child.value = await getNewTitle(href, context)
}
async function getNewTitle(href, context) {
const page = findPage(href, context.pages, context.redirects)
if (!page) {
throw new Error(`Unable to find Page by href '${href}'`)
}
return page.title
return await page.renderProp('title', context, { textOnly: true })
}
function getNewHref(node, languageCode, version) {