【问题标题】:html_entity_decode for twig (opencart)用于树枝的 html_entity_decode (opencart)
【发布时间】:2017-08-31 15:44:58
【问题描述】:

我试图在我的产品页面(opencart v3)上输出产品的属性。

该属性称为“technicaldetails”,使用以下代码可以正常工作:

{% if attribute_groups %}
  {% for attribute_group in attribute_groups %}
    {% if attribute_group.name == 'technicaldetails' %}
      {% for attribute in attribute_group.attribute %}
        {{ attribute.text }}
      {% endfor %}
    {% endif %}
  {% endfor %}
{% endif %}

但技术细节字段中存储了无样式列表。这会输出完整的 html 而不是呈现列表。

我尝试使用 {{ attribute.text|e }}{{ attribute.text|raw }} 以及我能找到的许多其他替代方案。但每次都只是抛出 html 而不是渲染它..

在 php 中这曾经可以工作。

<?php echo html_entity_decode($attribute['text']); ?>

所以我现在如何解码 html,因为我不能在 twig 中使用 php 并且在 twig 中也没有 html_entity_decode :(

期待一些帮助:)

非常感谢

谢谢。

【问题讨论】:

  • attribute.text 以 html 格式存储在 DB 中。它被编码了,这就是我使用 html_entity_decode() 函数并且以前可以工作的原因。但是现在 opencart 使用 twig 而我没有知道解决这个问题的方法:(
  • 它是存储为原始 HTML 还是编码的 HTML?就像当您直接查看数据库时,标签存储为&amp;lt;&amp;gt;&amp;lt;&amp;gt;?如果答案是后者,您可能需要创建一个 htmlspecialchars_decode 自定义 Twig 过滤器
  • 这是它在数据库中的样子(直接从那里复制)&lt;ul class='technicaldetails'&gt; &lt;li&gt;1&lt;/li&gt; &lt;li&gt;2&lt;/li&gt; &lt;li&gt;3&lt;/li&gt; &lt;li&gt;4&lt;/li&gt; &lt;/ul&gt;
  • 使用 |raw 应该可以工作,除非 OpenCart 正在对您使用的任何内容进行额外的转义。或者,出于安全原因,他们不允许您尝试做的事情?尝试制作一个 Twig 过滤器并使用它
  • |raw 给出了同样的结果。 |e 也是如此

标签: twig opencart


【解决方案1】:

只需在twig 中注册html_entity_decode 函数即可。 最简单的方法是查看twig的加载位置并添加以下代码,

$twig->addFilter(new \Twig_Simple_Filter, 'html_entity_decode', 'html_entity_decode');

之后,您可以在 twig 模板中执行以下操作

{{ attribute.text|html_entity_decode }}

更新:对于 Opencart 3.0.3.7 版本的过滤器应该是这样的:

$twig->addFilter(new \Twig\TwigFilter('html_entity_decode','html_entity_decode'));

【讨论】:

  • 工作就像一个魅力!多谢!现在只需要看看如何制作它,以便更新不会再次删除它:D
【解决方案2】:

查找文件

document_root/system/library/template/twig.php

紧接着

$this->twig = new \Twig_Environment($loader, $config);

添加以下代码

$twig->addFilter(new \Twig_SimpleFilter('html_entity_decode', 'html_entity_decode'));

完成此操作后,您必须到管理员重新加载菜单扩展 -> 修改中的所有修改。 之后,您可以在所有 twig 文件 *.twig

中执行以下操作
{{ attribute.text|html_entity_decode }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2012-07-27
    • 2011-10-19
    相关资源
    最近更新 更多