dv.paragraph(
dv.pages("").file.etags.distinct()
.sort(t => dv.pages(t).tag, 'asc')
.map(
t => {
return `[${t}](${t})`+"("+dv.pages(t).length+")"
}
).array().join(" ")
)
以上代码可以实现获取库内所有标签,请教怎么获取指定文件夹内的标签?
求大佬赐教~
dv.paragraph(
dv.pages("").file.etags.distinct()
.sort(t => dv.pages(t).tag, 'asc')
.map(
t => {
return `[${t}](${t})`+"("+dv.pages(t).length+")"
}
).array().join(" ")
)
以上代码可以实现获取库内所有标签,请教怎么获取指定文件夹内的标签?
求大佬赐教~
// 指定文件夹 这里改成 👇 你的文件夹名
const filter = `"文件夹路径"`;
// 获取所有tags
let tags = [];
dv.pages(filter).map(p=>p.file.tags.values.forEach(tag=>tags.push(tag)));
// 去重
tags = [...new Set(tags)];
// 按嵌前缀排序
const sortByPrefix = (arr) => {
return arr.sort((a, b) => {
// 分割字符串获取前缀
const prefixA = a.split('/')[0];
const prefixB = b.split('/')[0];
// 比较前缀
if (prefixA !== prefixB) {
return prefixA.localeCompare(prefixB); // 按照前缀字母顺序排序
} else {
// 如果前缀相同,则比较整个字符串
return a.localeCompare(b);
}
});
}
// 按前缀排序
tags = sortByPrefix(tags);
// 输出标签内容
let content = "";
let lastTagPrefix = "";
tags.forEach(item => {
const itemPrefix = item.split("/")[0];
if(itemPrefix !== lastTagPrefix){
if(lastTagPrefix !== "") content += "\n\n";
lastTagPrefix = itemPrefix;
}
content += item + " ";
});
dv.el("div", content);
在论坛扒到了以上代码,可以获取指定文件夹内的标签,不过排列是一行一个标签,怎样才能让标签在一行里面挨着显示,根据宽度自动换行排列?