[feat] create widget in front-matter

This commit is contained in:
xaoxuu 2022-11-22 22:38:01 +08:00
parent 7d10a24a4d
commit 6f48c3f477
2 changed files with 22 additions and 12 deletions

View File

@ -73,11 +73,21 @@ function layoutWidgets() {
}
if (page.sidebar) {
page.sidebar.forEach((w, i) => {
if (w in theme.data.widgets) {
let widget = theme.data.widgets[w];
if (widget && widget.layout) {
el += partial('widgets/' + widget.layout, {item: widget});
let name = ''
if (typeof w == 'string') {
name = w
} else if (typeof w == 'object' && w.layout && w.override) {
name = w.override
}
let widget = {}
if (name in theme.data.widgets) {
Object.assign(widget, theme.data.widgets[name])
}
if (typeof w == 'object' && w.layout) {
Object.assign(widget, w)
}
if (widget && widget.layout) {
el += partial('widgets/' + widget.layout, {item: widget})
}
});
}

View File

@ -1,13 +1,13 @@
<%
function layoutDiv() {
if (!item.content?.length) return ''
var el = '';
if (item.content == undefined || item.content.length == 0) {
return el;
}
el += '<div class="widget-wrap" id="markdown">';
if (item.title?.length > 0) {
el += '<div class="widget-header cap theme dis-select">';
el += '<span class="name">' + item.title + '</span>';
el += '</div>';
}
el += '<div class="widget-body fs14">';
el += markdown(item.content);
el += '</div>';