Fai*_*wan 3 jekyll netlify netlify-cms
我想在我的Jekyll网站上使用Netlify CMS,我有这样的布局:
{% for skills in page.skills %}
<div class="guide-skill">
<div class="guide-skill-fill">
{% for i in (1..15) %}
<div class="{% if skills.levels contains i %}fill{% endif %} skill-check"><p>{{ i }}</p></div>
{% endfor %}
</div>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
以及我在使用此布局的文本编辑器中编写的页面的前端问题:
skills:
- levels:
- 1
Run Code Online (Sandbox Code Playgroud)
代码工作正常,fill类正确添加.
但是当我使用Netlify CMS和列表小部件时,它会将字符串而不是数字返回到levels列表中,如下所示:
skills:
- levels:
- '1'
Run Code Online (Sandbox Code Playgroud)
所以代码不起作用,如何让它返回数字?
i,但它给了我一个错误valueType : "int",没用 - label: "Hero Skills"
name: "skills"
widget: "list"
required: false
fields:
- {label: "Skill Number", name: "number", widget: "number"}
- {label: "Levels", name: "levels", widget: "list"}
Run Code Online (Sandbox Code Playgroud)
内置窗口小部件都不能输出数字列表(不是字符串),但是当内置窗口小部件不起作用时,您总是可以使用自定义窗口小部件.自定义小部件是React组件,我们为那些不使用模块系统的人发布全局挂钩(createClass,h).更多文档:https://www.netlifycms.org/docs/custom-widgets/#registerwidget
对于您的特定情况,您可以从文档示例中修改"类别"窗口小部件,以仅处理数字并输出它们.在index.htmlNetlify CMS文件的body标签末尾添加:
<script>
var NumberListControl = createClass({
handleChange: function(e) {
var value = e.target.value.replace(/[^0-9, ]/, '');
this.props.onChange(value.split(',').map(function(val) {
var trimmed = val.trim();
return trimmed ? parseInt(trimmed, 10) : trimmed;
}));
},
render: function() {
var value = this.props.value;
return h('input', {
type: 'text',
value: value ? value.join(', ') : '',
onChange: this.handleChange,
className: this.props.classNameWrapper,
});
}
});
var NumberListPreview = createClass({
render: function() {
return h('ul', {},
this.props.value.map(function(val, index) {
return h('li', {key: index}, val);
})
);
}
});
CMS.registerWidget('number_list', NumberListControl, NumberListPreview);
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |