【教程】把随机题头图换成自己的图片,让思源笔记更加赏心悦目

本贴最后更新于 239 天前,其中的信息可能已经斗转星移

之前随机题头图文件夹在哪?研究半天没研究出来,今天无意中翻到了 leolee 的文章《思源笔记折腾记录-整点花里胡哨-自己定义随机头图》,很简单地就实现了,所以分享一下。

为了方便需要的人直接操作,我在这里只说明步骤,对思路感兴趣的话请去看原文。

另外,我使用 Win10 ,不了解其他操作系统。

01 把图片塞进文件夹

1 在工作空间目录下新建文件夹:/snnipets/assets/backgrounds

如果你想换个目录,可能需要改改后面的代码

image

image

2 把自己的图片放入这个文件夹

image

02 加一个代码片段

1 把这串代码复制粘贴到 主菜单 > 设置 > 外观 > 代码片段 > JS 中

注意:如果粘贴时带有版权小尾巴要手动删除

/* 自定义随机头图 JS片段 */
(() => {
    async function 生成随机背景链接() {
        let 请求响应 = await fetch('/snippets/assets/backgrounds/')
        let 临时dom = new DOMParser().parseFromString(await 请求响应.text(), "text/html")
        let 图片链接数组 = 临时dom.querySelectorAll('a')
        let 随机链接 = 图片链接数组[Math.floor(Math.random() * 图片链接数组.length)].getAttribute("href")
        随机链接 = "/snippets/assets/backgrounds/" + 随机链接
        return 随机链接
    }
    document.addEventListener('contextmenu', 更换随机背景图)
    async function 更换随机背景图(event, 元素) {
        let 触发目标 = event.target
        if (元素) {
            触发目标 = 元素
        }
        if (触发目标.tagName == 'svg' || 触发目标.tagName == 'use') {
            更换随机背景图(event, 触发目标.parentElement)
            return
        }
        if (触发目标.classList.value == "protyle-icon b3-tooltips b3-tooltips__sw") {
            let 随机链接 = await 生成随机背景链接()
               触发目标.parentElement.parentElement.querySelector('img').setAttribute("style", '')
               触发目标.parentElement.parentElement.querySelector('img').setAttribute("src", 随机链接)
            fetch('/api/attr/setBlockAttrs',
                {
                    method: 'post',
                    body: JSON.stringify({
                        id: 触发目标.parentElement.parentElement.parentElement.getAttribute("data-node-id"),
                        attrs: { 'title-img': `background-image:url(${随机链接})` }
                    })
                }
            )
        }
    }
})()

2 按以下顺序操作

image

03 开始用吧

1 左键点击文档标题上方的 随机题头图 按钮

image

2 右键点击题头图右下方的 随机 按钮(左键点击仍为原生随机题头图)

image

image

现在显示的就是刚才放在文件夹中的图片了,再次右键点击可以再随机下一张图片

如果你点击了之后它没有变,可能是随机到同一张图片了,你也可以自己改改代码让它能看起来更“随机”一点。

注:有时候图片可能没加载出来,这时候重启思源就行了

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    18962 引用 • 71106 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • GloR

    感谢分享!这么细致清楚的教程,真的太感动了!

    试了一下,代码可以成功运行~

    但是还是想请教下,指定的文件夹 是不是只能在 工作目录下呢?比如我用 billfish 软件整理了一个包含十几万张图片的图库文件夹,但这个文件夹在工作目录之外(且不能移动到工作目录下),我想指定这个文件夹为图池,但将文件夹改为绝对路径后,发现代码就无法运行了。

    👉 感觉潜在的优化空间是:指定本地任意 1 个 or 几个文件夹 为图池文件夹~ ⇐ 不过好像不太现实 😂 这么看来,如果不想在本地产生冗余图片副本的话,可能就得基于 图床 来随机了。目前已知可以基于图床填入特定的网络 url,但是如何基于指定的图床进行随机,还需要研究下

    1 回复
    1 操作
    GloR 在 2023-09-14 10:06:33 更新了该回帖
  • GloR 1 赞同

    顺便放一下隔壁 flowus 的题头图功能供参考。(其实,对于笔记软件而言,这些看上去“徒有其表”的功能却恰恰是吸引“主流用户”的加分点,因为它能大幅增加用户的效用)

    image.png

  • 我研究了 1 个小时,参考 GPT 的回答,可能有一种解决方法(超出我的能力了,没有试过,有可能不行):

    将文件资源托管到一个 Web 服务器上,并通过 HTTP 协议来访问这些资源。这样,您就可以使用相对路径或绝对 URL 来加载资源,而不是使用本地文件路径。

    1. 在本地安装一个简单的 Web 服务器:您可以使用诸如 Apache、Nginx 或 Node.js 等工具来搭建一个简单的 Web 服务器。
    2. 配置 Web 服务器:将 Web 服务器的根目录配置为您的本地文件路径(F:/Billfish 素材库 1/图片库)。这样,当您通过域名访问 Web 服务器时,它将提供位于根目录下的文件。
    3. 修改 Hosts 文件:将域名(例如 myphotos.ground)映射到您的本地 IP 地址(例如 127.0.0.1)。在 Windows 系统中,Hosts 文件位于 C:\Windows\System32\drivers\etc\hosts。打开 Hosts 文件,并在文件末尾添加一行类似于以下内容的条目:127.0.0.1 myphotos.ground
    4. 启动 Web 服务器:启动您配置的 Web 服务器,并确保它正在监听您指定的 IP 地址和端口。
    5. 把代码中的相对路径换成网址

    我觉得还是手动放一些图片到工作空间里好了,不那么费劲

    1 操作
    JeffreyChen 在 2023-09-14 11:16:38 更新了该回帖
  • jzman

    感谢分享 👍

  •         if (元素) {
                触发目标 = 元素
            }
    

    猛一看,有点恍惚。不过为啥不用拼音前缀比如 ys元素 cf触发目标