如何在Shopware的sw_include Twig函数中应用过滤器?
解决Shopware中sw_include无法应用内容过滤器的问题
核心原因
sw_include是Shopware自定义的Twig标签(用{% %}包裹),和原生Twig的include函数({{ }}包裹)逻辑不同:
- 你之前用
|format()能生效,是因为这个过滤器是作用在模板路径字符串上,只是替换路径里的占位符,属于字符串操作; - 但
sw_sanitize、striptags这类过滤器是要处理模板渲染后的HTML内容,sw_include标签是直接输出内容,没有返回值供过滤器处理,所以你的写法相当于给路径字符串加了过滤器,完全没作用到渲染结果上。
可行解决方案
方案1:捕获渲染内容到变量后再过滤
先把sw_include的渲染结果存到变量里,再对变量应用过滤器输出:
{% set renderedContent %} {% sw_include '@Storefront/storefront/component/delivery-information.html.twig' %} {% endset %} {{ renderedContent|striptags }}
如果要用Shopware自带的sw_sanitize,直接替换过滤器即可:
{{ renderedContent|sw_sanitize }}
方案2:改用原生Twig include函数(需验证兼容性)
如果模板没有依赖sw_include的特殊特性(比如某些Shopware专属的模板解析逻辑),可以直接用原生include函数,这样就能直接链式调用过滤器:
{{ include('@Storefront/storefront/component/delivery-information.html.twig')|striptags }}
内容的提问来源于stack exchange,提问作者Michael_sfx
相关产品推荐
相关产品推荐

