HTML 类型字段的输出逐字打印标签 (BOLT-CMS / Twig)

Posted

技术标签:

【中文标题】HTML 类型字段的输出逐字打印标签 (BOLT-CMS / Twig)【英文标题】:Output from field of type HTML prints tags verbatim (BOLT-CMS / Twig) 【发布时间】:2018-08-21 17:38:44 【问题描述】:

在 Bolt CMS 中,我有一个这样定义的字段:

contenttypes.yaml

details:    # thats my new content type
  name: (...)
  (...)
  fields:
    (...)
    contentblocks:
      type: block
      label: Content
      fields:
        freetext:
          label: Formatted Text
          fields:
            content:
              type: html
  (...)

然而,现在当我在我的模板中显示这个时......

% setcontent nameAddr = 'data/name-addr' %
% for group in nameAddr.contentblocks %
  % if group.block == 'freetext' %
    group.content
  % endif %
% endfor %

...我在页面中得到这样的输出(通过视图源):

<p>a<br />
<br />
b</p>

所以标签以某种方式逐字打印。

(我没有在所见即所得模式下输入标签。)

我有点困惑,因为一切似乎都与文档 (1) (2) 相同。

如果有人可以帮助我,那就太好了。干杯。

【问题讨论】:

【参考方案1】:
group.content | raw

见https://twig.symfony.com/doc/2.x/filters/raw.html

Bolt 使用 Twig 模板引擎。因此,所有默认的树枝 |filters 也可以在 Bolt 中使用。其中大部分在 纯 phpjavascript。可用的过滤器有:abs、batch、 大写,转换编码,日期,日期修改,默认,转义, 首先,格式,加入,json_encode,键,最后,长度,较低,合并, nl2br,number_format,原始,替换,反向,圆形,切片,排序, 拆分,striptags,title,trim,upper,url_encode。

【讨论】:

没有任何效果,很遗憾。 autoescape 没有任何效果,所以我认为答案不应该是“尝试autoescape 或其他”。 已更新,最初我保留了自动转义,因为它可以解决类似的问题,但你是对的。【参考方案2】:

您必须使用raw 过滤器,如:

group.content | raw

cf this question 和 raw 的文档。

【讨论】:

以上是关于HTML 类型字段的输出逐字打印标签 (BOLT-CMS / Twig)的主要内容,如果未能解决你的问题,请参考以下文章

Unity Bolt插件 基本使用

修改Bolt CMS中的内容记录

逐字打印

LaTeX、波浪线和逐字模式

从句子中逐字打印

强化记忆之php