问题描述
我需要能够在使用分页从全局数据返回的内容中使用自定义的简码。
为说明我要执行的操作,请考虑以下数据源:
./ site / data / article.js
module.exports = () => {
return [
{
"title": "Page 1","description": "Description for page 1","permalink": "/sample/page1","content": `## Sample Page 1
Lorem ipsum dolor sit amet,consectetur adipiscing elit.
Nam dignissim.
{% jumpto %}
Cras faucibus at mauris
varius imperdiet. `
},{
"title": "Page 2","description": "Description for page 2","permalink": "/sample/page2","content": `## Sample Page 2
Lorem ipsum dolor sit amet,]
}
**注意**请注意,上面的代码中使用了{% jumpto %}
这是商品数据的模板...
./ site / articles.njk
---
pagination:
data: articles
size: 1
alias: article
addAllPagesToCollections: true
layout: article
permalink: "{{ article.permalink }}/"
templateEngineOverride: md,njk
eleventyComputed:
title: "{{ article.title }}"
description: "{{ article.description }}"
---
{{ article.content }}
渲染后,它不会处理从{% jumpto %}
返回的article.content
短代码。
是否有某种方法可以将article.content
注入模板,以便将其视为模板代码?
解决方法
我认为,目前不支持通过短代码本身插入的内容中的
嵌套短代码。这样的事情可能导致奇怪的无限递归,并且如果CMS输入没有像当前默认值那样正确地转义,则可能会增加XSS或注入漏洞的可能性。
要执行所需的操作,可以添加一个custom filter并将其用于njk文件中以对内容进行后处理。
{{ article.content1 }}
{% jumpto %}
{{ article.content2 }}
或者,如果您的实际用例与您在上面给出的示例代码一样简单,则将内容输入分为两部分并将njk模板定义为:
protected AmtAppender(String name,Filter filter,Layout<? extends Serializable> layout,boolean ignoreExceptions) {
super(name,filter,layout,ignoreExceptions);
// TODO Auto-generated constructor stub
}