我创建了一个螺栓扩展,它提供了一个新的树枝函数foo
。twig 函数通过以下代码$this->addTwigFunction('foo', 'twigFoo');
添加到 twig 框架中。
public function twigFoo()
{
$markup = '
<hr>
Foo
<hr>';
return new 'Twig_Markup($markup, 'UTF-8');
}
我的想法是,cms的用户可以在内容类型中使用twig功能。但是当显示记录的正文时,twig 函数以纯 HTML 形式可见,例如:{{ foo }}
我认为问题是,树枝模板将在分配记录正文之前呈现。所以我的记录正文不会被树枝评估。有没有人知道如何评估女巫在记录中使用的树枝功能?此问题的最佳做法是什么?
ContentType 中的字段需要allowtwig: true
告诉 Bolt 你信任该字段/编辑器允许这样做,例如:
body:
type: html
allowtwig: true
问题是 Twig 不会在 Twig 变量中渲染 Twig。您可以创建一个转义函数来执行此操作。无论如何,这可能不是让您的 CMS 用户可以使用 Twig 的最佳主意,因为这使他们能够完全访问您的代码。无论如何,这里有一个可以帮助您的转义函数
$this->app['twig']->getExtension('core')->setEscaper('code', function($twigEnv, $string, $charset) {
$twig = clone $this->app['twig'];
$twig->setLoader(new 'Twig_Loader_String());
return $twig->render($string);
});
然后,您可以在模板中使用树枝过滤器"代码"。 例如:
{{ record.body|escape('code') }}