如何用Nunjucks将Eleventy front matter逗号分隔字符串转为数组
解决方案
可以直接在当前Nunjucks文件中实现需求,使用Nunjucks内置的字符串、数组处理过滤器即可完成转换,无需额外配置Eleventy。
修改后的完整模板代码
--- permalink: '../search.json' eleventyExcludeFromCollections: true --- [ {% for post in collections.plantas %} {% set listItems = post.data.mylistfield | split(', ') %} { "mylistfield": [{{ listItems | map('json') | join(', ') }}] }{% if not loop.last %},{% endif %} {% endfor %} ]
核心逻辑说明
split(', '):将front matter中逗号加空格分隔的字符串,直接拆分为数组格式map('json'):自动给每个数组元素添加双引号,同时转义元素内的特殊字符(如引号、斜杠),保证生成的JSON语法合法join(', '):将处理好的数组元素拼接为符合JSON数组规范的内容
兼容优化方案
如果你的front matter中mylistfield的分隔符存在格式不统一的情况(比如逗号后无空格、多空格),可以调整拆分逻辑兼容不同格式:
{% set listItems = post.data.mylistfield | replace(', ', ',') | trim | split(',') %}
内容的提问来源于stack exchange,提问作者Diego de Sousa
相关产品推荐
相关产品推荐

