【问题标题】:Drupal 8 Double Field HTMLDrupal 8 双字段 HTML
【发布时间】:2016-07-19 16:36:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: php drupal drupal-modules drupal-8


    【解决方案1】:

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

    1. 在预处理函数中使用FormattableMarkup 将可格式化的字符串变量传递给您的树枝模板。
    2. 在树枝模板中使用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 %}
    

    选择任何一个:)

    【讨论】:

    • 太棒了;第一个解决方案就像一个魅力!谢谢!
    【解决方案2】:

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

    【讨论】:

    • 有没有办法通过主题函数或者覆盖主题中的模块模板来覆盖双字段数据的显示?
    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多