撇号-CMS 渲染小部件模板

Apostrophe-CMS Render Widget Templating

我一直在研究一种实用程序,可以根据小部件所在的页面更改在其他小部件中显示的小部件。例如,我只希望能够在编辑器位于特殊 "anchor" 页面时添加特殊的 "anchor" 小部件,但他们还需要能够将它们添加到两列小部件中我创建。由于我不希望该选项出现在两列小部件中,除非它们仍在 "anchor" 页面上,因此我设置了一项服务,将小部件选项传递给 apos.area,具体取决于小部件和页面信息。

我 运行 遇到的问题是,当我向页面添加小部件时,小部件上的模板代码似乎没有 运行。具体来说,我向小部件添加了一个 {{data.page.type}} 字符串以进行测试。当我第一次添加小部件时,如果我不重新加载,文本就不会显示。乍一看,我假设可能是因为data.page在render-widget期间不可用,所以无法查看页面类型。这是正确的吗?除了重写呈现方法以考虑页面之外,还有什么解决方法吗?

谢谢!

这就是问题所在,是的:render-widget 不知道该页面。小部件最初是为了自给自足,部分原因是为了更容易缓存,但人们希望他们知道页面的情况比我们预期的要多。

每次调用 apos.singleton 或 apos.area 时,您都可以将您真正需要的页面信息作为选项传递给小部件。不要传递整个页面,因为那样会在标记中产生大量 JSON。

当然,这是额外的工作,因此并不令人满意。因此,考虑使用 nunjucks 宏来传递替换直接 apos.area 和 apos.singleton 调用所需的内容。

我们正在考虑在小部件中添加对访问 data.page 的支持。这是一个相当深刻的变化。