You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SXA中使用Scriban生成HTML出现大量空白,如何进行格式化处理?

SXA Scriban模板生成HTML多余空白的解决方法

方案1:使用Scriban原生空白控制语法(推荐,无需额外配置)

Scriban模板本身支持通过语法符-裁剪标签前后的空白、换行符:

  • 给模板标签左侧加-,即{{- 表达式:裁剪表达式左侧所有空白换行
  • 给模板标签右侧加-,即表达式 -}}:裁剪表达式右侧所有空白换行

示例

原有生成多余空白的模板写法:

<div id="dv1">
  {{ if 你的判断条件 }}
    <div id="dv2">内容</div>
  {{ end }}
</div>

修改为带空白控制的写法即可解决空白问题:

<div id="dv1">
  {{- if 你的判断条件 -}}
    <div id="dv2">内容</div>
  {{- end -}}
</div>

方案2:开启SXA内置HTML压缩功能

SXA自带全局HTML压缩模块,无需修改模板即可自动清理输出HTML的多余空白:

  1. 打开Sitecore内容编辑器,定位到你的SXA站点根节点下的Settings项
  2. 找到HTML Minification配置分组
  3. 勾选Enable HTML minification选项后保存即可
    该功能会自动跳过pre、textarea等保留空白的标签,不会破坏原有内容格式。

方案3:自定义格式化处理(适用于需要自定义缩进等特殊场景)

如果需要对生成的HTML做自定义格式化(比如统一缩进对齐,而非仅压缩),可以在mvc.renderRendering管道中新增自定义处理器,拿到渲染输出的HTML字符串后,通过AngleSharp等HTML解析库完成格式化后再输出。

补充小技巧

如果仅需要处理局部内容的空白,可以通过Scriban的capture捕获内容后调用strip过滤器处理:

{% capture dv_content %}
<div id="dv1">

  <div id="dv2">内容</div>
</div>
{% endcapture %}
{{ dv_content | strip }}

strip过滤器会自动删除内容首尾的所有空白换行,同时将中间的连续空白合并为单个空格。


内容的提问来源于stack exchange,提问作者user1534066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:36:03