代码片段建议加入主题白名单和主题黑名单

本贴最后更新于 324 天前,其中的信息可能已经时移世易

这样可以根据需要决定是否在某些主题下使用或不使用。

当白名单生效时,黑名单不生效。

因为不知道会不会考虑加上,这里贡献一下自己的垃圾代码,仅供其他用户可使用 😂

conf.json 中只引用这一个 js 代码片段,me.js

{ "id": "20231112173922-gr62fl0", "name": "me_js", "type": "js", "enabled": true, "content": "import(\"/snippets/me.js\")" }

me.js 内容

let me = {}; // https://github.com/siyuan-note/siyuan/blob/master/app/src/config/util/snippets.ts me.loadStyle = function ( innerHTML ) { let style = document.createElement('style'); style.innerHTML = innerHTML; document.head.insertAdjacentElement("beforeend", style); } me.loadScript = function(content, scriptType='module'){ let scriptElement = document.createElement("script"); scriptElement.type = scriptType; scriptElement.text = content; document.head.appendChild(scriptElement); } // 白名单主题执行 me.callWhiteList = function(themeArr=[], callback=nul){ let curTheme = window.siyuan.config.appearance[window.siyuan.config.appearance.mode?"themeDark":"themeLight"] ; if(themeArr.includes(curTheme)){ if (typeof callback === 'function') setTimeout(callback, 0); } } // 黑名单主题执行 me.callBlackList = function(themeArr=[], callback=nul){ let curTheme = window.siyuan.config.appearance[window.siyuan.config.appearance.mode?"themeDark":"themeLight"] ; if(!themeArr.includes(curTheme)){ if (typeof callback === 'function') setTimeout(callback, 0); } } me.start = async function(){ //读取配置 function readConfig(config){ return () =>{ if(config["type"] == "css"){ me.loadStyle(config["content"], config["name"]); return; } if(config["type"] == "js"){ // eval(config["content"]); me.loadScript(config["content"], config["scriptType"]); } } } // 执行配置文件的js和css const response = await fetch("/snippets/me_conf.json"); me.configList = await response.json(); me.configList.forEach(item => { if(!item["enabled"]){ return; } // 白名单优先,有白的时候不用黑。 item["whiteList"] = item["whiteList"] || []; if(item["whiteList"].length > 0){ me.callWhiteList(item["whiteList"], readConfig(item)); return; } // 有白名单时,黑名单不生效。 me.callBlackList(item["blackList"], readConfig(item)); }); } me.start();

并在 \snippets 目录配置 me_conf.json :如下图:

格式为:

{ "name":"列表项折叠", "type":"css", "enabled":false, "memo":"备注一下xxx", "whiteList":["Rem Craft","和blackList互斥用一个就行"], "blackList":["Rem Craft","toy"], "content":"@import url('/snippets/列表项折叠.css')" },

image.png

  • 思源笔记

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

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

    25969 引用 • 107684 回帖
1 操作
kobi 在 2024-07-27 20:42:37 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
kobi
❤️❤️快速整理笔记,最重要的功能应当是什么呢❗❓

推荐标签 标签

  • Follow
    4 引用 • 12 回帖 • 3 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 189 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 114 回帖 • 172 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 6 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 153 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖 • 1 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 643 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 349 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 11 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    298 引用 • 763 回帖
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 737 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 796 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Visio
    1 引用 • 2 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 4 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    371 引用 • 1856 回帖 • 1 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 241 关注
  • CodeMirror
    2 引用 • 17 回帖 • 167 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖 • 1 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    326 引用 • 1395 回帖
  • RemNote
    2 引用 • 16 回帖 • 20 关注