0

我需要能够在使用分页从全局数据返回的内容中使用自定义简码。

为了说明我正在尝试做的事情,请考虑以下数据源:

./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, consectetur adipiscing elit. 
    Nam dignissim. 
    
    {% jumpto %}

    Cras faucibus at mauris 
    varius imperdiet. `
    },
  ]
}

** 注意 ** 注意{% 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到模板中,以便将其视为模板代码?

4

1 回答 1

1

我相信目前不支持通过简码插入的内容中的嵌套简码。如果 CMS 输入没有像当前默认值那样正确转义,这样的事情可能会导致奇怪的无限递归,并且会增加 XSS 或注入漏洞的可能性。


要执行您想要的操作,可以添加一个自定义过滤器并在您的 njk 文件中使用它来对内容进行后处理。

{{ article.content | processNestedShortcodes}}

或者,如果您的实际用例与您上面给出的示例代码一样简单,则将内容输入分成两部分会更简单,并将您的 njk 模板定义为:

{{ article.content1 }}

{% jumpto %}

{{ article.content2 }}

于 2020-09-15T09:01:07.820 回答