dg-publish=true的标签云
dg-publish=true的标签云
clippings (1) area/ide (2) area/network (3) area/backend (4) area/design (1) type/best-practice (15) scene/performance (2) area/linux (17) scene/data_process (1) type/aigc (7) area/shell (3) type/concept (2) 甲沟炎 (1) area/golang (6) chatgpt (1) area/frontend (1) area/javascript (1) type/pitfall (2) area/message-queue (1) area/mysql (1) area/database (1) area/nginx (3) area/php (1) rdb (1) excalidraw (2) area/python (1) area/productivity (7) zettelkasten (1) area/knowledge-management (3) type/methodology (3) area/mac (5) area/gtd (1) 镜像 (1) 哲学 (2) area/ops (1) type/process (1) area/game (1) area/life (1) type/experience (1) scene/entertainment (1) area/algorithm (15) 前缀和 (2) 家 (1) scene/workflow (1) tool/raycast (1)digital-garden 还是很牛的,居然是能用的
贴一下完整代码:
``dataviewjs
let tagCounts = {};
// 遍历所有包含标签的笔记,收集标签并统计出现次数
for (let page of dv.pages().where(p => p.tags && p["dg-publish"] === true)) { // 只处理包含标签的页面
let tags = page.tags.toString()
let tagArr = tags.split(',')
for (let tag of tagArr) {
tagCounts[tag] = (tagCounts[tag] || 0) + 1;
}
}
// 找到标签的最大频次,以便调整大小
let maxCount = Math.max(...Object.values(tagCounts));
// 设置字体大小范围(最小10px,最大40px)
const minSize = 10;
const maxSize = 40;
// 生成标签云,根据频次调整标签字体大小
dv.container.innerHTML = Object.entries(tagCounts)
.map(([tag, count]) => {
// 根据标签出现的频次计算字体大小
let size = minSize + ((count / maxCount) * (maxSize - minSize));
// 创建可点击的链接,链接到搜索栏
return `<span style="font-size:${size}px; margin-right:20px;">
<a href="obsidian://search?query=tag:${encodeURIComponent(tag)}" style="text-decoration:none; color:inherit;">
<strong>${tag}</strong> (${count})
</a>
</span>`;
})
.join(''); // 每个标签后换行
``