Drupal 8 双字段 HTML

Drupal 8 Double Field HTML

我正在使用 Drupal 8 和 Double Field 模块。我希望第二个字段允许 HTML 标签,但目前标签直接作为文本输出在页面上。没有无法转义 HTML 标签的字段格式。

在这个模块的问题中,the author suggests "overriding theme_double_field()",但我不知道该怎么做。

如何为双字段的第二个字段启用 HTML 标签?

似乎有 support in the works,但补丁尚未准备好包含在模块中。您的最佳选择可能有助于完成补丁工作。

默认情况下,twig 模板中的所有字符串都会被转义。这就是您丢失格式的原因。您可以通过两种方式避免这种情况:

  1. 在预处理函数中使用 FormattableMarkup 将可格式化的字符串变量传递给您的 twig 模板。
  2. 在 Twig 模板中使用 raw 过滤器。

Double Field 提供了几种格式化程序,但假设您使用最简单的 Unformatted list 格式化程序,它使用 double_field_item 主题来呈现双字段项。

然后第一个解决方案是为double_field_item主题编写自己的预处理函数:

use Drupal\Component\Render\FormattableMarkup;

function mytheme_preprocess_double_field_item(&$variables) {
  $item = $variables['elements']['#item'];
  $second_value = new FormattableMarkup($item->second, []);
  $variables['item']['second'] = $second_value;
}

另一种解决方案是覆盖主题中的 double-field-item.html.twig 模板:

{% for subfield, subitem in item %}
    {% if subitem %}
        <div class="double-field-{{ subfield }}">
            {% if settings[subfield].prefix %}
                <span class="double-field-prefix">{{ settings[subfield].prefix }}</span>
            {% endif %}
            {{ subitem|raw }}
            {% if settings[subfield].suffix %}
                <span class="double-field-suffix">{{ settings[subfield].suffix }}</span>
            {% endif %}
        </div>
    {% endif %}
{% endfor %}

任意选择:)