如何在Typoscript中使用嵌套split实现多层内容分割
Typoscript 两次分割字段内容的实现方案
你原有代码的核心问题是内层split缺少必要的渲染配置声明,导致按冒号分割的逻辑没有实际生效:嵌套split时必须明确指定cObjNum和当前片段读取规则,否则只会直接输出整行内容,不会执行二次拆分。
正确实现代码
30 = TEXT 30.stdWrap { field = abstract split { # 第一次分割:匹配换行符(ASCII编码10) token.char = 10 # 每行内容外层包裹p标签 wrap = <p>|</p> # 配置单行内容的渲染规则 1.current = 1 1.stdWrap { split { # 第二次分割:匹配冒号 token = : # 每个冒号拆分出的片段外层包裹span标签 wrap = <span>|</span> # 指定拆分片段的渲染规则序号 cObjNum = 1 # 读取当前拆分的片段内容 1.current = 1 } } } }
配置说明
- 外层split按换行拆分字段内容后,通过
1.current = 1逐行读取拆分结果,每行最终套入<p>标签。 - 内层split处理单行文本时,必须配置
cObjNum = 1声明使用序号1的规则渲染拆分片段,再通过1.current = 1读取冒号分割后的每一段内容,每段套入<span>标签。 - 如果需要区分冒号前后的内容样式(比如键值对场景),可以扩展内层split配置,给不同分段单独设置包裹规则:
# 内层split扩展示例:区分键值样式 1.stdWrap.split { token = : # 拆分后共2段,分别用序号1、2的规则渲染 cObjNum = 1 || 2 1.current = 1 1.wrap = <span class="key">|:</span> 2.current = 1 2.wrap = <span class="value">|</span> }
内容的提问来源于stack exchange,提问作者user500665
相关产品推荐
相关产品推荐

