twikoojs/twikoo

请求适配主题渲染、图床存储策略

GC-ZF opened this issue · 8 comments

GC-ZF commented

你好作者,平常没用过代码块,今天发现和butterfly主题适配有问题hexo-theme-butterfly#1001,在butterfly中,代码块无法正常显示
image
如果使用```后面必须加一个字母,才会显示代码框。

关于图床,用了好久twikoo了,也没注意过图床设置,今天刚好看见了,看到支持杜老师的7bu,他是用兰空做的,刚好我自己服务器里也搭建过我自己用的。我就尝试了一下,发现居然自己搭的也可以用(十分感谢作者有这么好的评论系统)。

image

因为杜老师他没有开放用户的存储策略设置(只有管理员才能设置),我有好多个存储策略(兰空的存储策略是用来设置上传的图片url地址,和上传到服务器的哪个路径下无关),他只默认上传该用户下第一个存储策略。所以希望可以增加存储策略设置,比如这个插件兰空picgo,留空是上传默认策略,但也可以通过自定义用户存储策略
image

比如#347 中提供的策略相关/strategies,当然,这不是唯一的解决办法,因为图床是自用的,我可以新建一个账号单独存放twikoo图片,如果修改过于麻烦,就算了,图片不算是刚需

代码块确实是 twikoo 渲染的没错,但 twikoo 不控制渲染出来的 CSS 样式,twikoo 只会将代码块渲染成类似如下 HTML:

<pre><code>hello,world
hello,twikoo
</code></pre>

至于代码块的样式,应该跟随主题才对,出现如题的状况,应该是主题没有为 <code> 写 CSS。

这也不是甩锅给主题——twikoo 如果默认提供代码块默认样式,恐怕会影响在某些其他页面(如 vuepress)下的表现。

建议添加自定义 CSS 解决,示例如下,可以自己修改修改。

.twikoo code,
.twikoo pre {
    -moz-osx-font-smoothing: auto;
    -webkit-font-smoothing: auto;
    font-family: 'JetBrains Mono','Source Code Pro',Menlo,SFMono-Regular,Consolas,Roboto Mono,'Courier New',monospace,'Microsoft YaHei';
}
.twikoo pre {
    -webkit-overflow-scrolling: touch;
    background-color: #f5f5f5;
    color: #4a4a4a;
    font-size: .875em;
    overflow-x: auto;
    padding: 1.25rem 1.5rem;
    white-space: pre;
    word-wrap: normal;
}
.twikoo code {
    background-color: transparent;
    color: currentColor;
    font-size: 1em;
    padding: 0;
}

2022-08-03_18-18-56

至于你说的

使用```后面必须加一个字母,才会显示代码框。

这个字母代表代码块的语言,加上字母后触发了相关语言的代码高亮功能,所以会套上样式。

图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。

代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48

GC-ZF commented

图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。

代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48

十分感谢!

GC-ZF commented

图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。

代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48

不好意思,打扰了,我翻了翻vercel和一些引擎搜索,没找到云函数在哪改?
另外,试了一下私有部署,这个是网络问题么?
image

fork 本仓库,加上自己的代码,修改一下 npm 包名,然后用 github actions 发一个版,再部署自己的版本。

如果实在不会操作,我可以在下个版本加上这个功能,你只需到 vercel 里配置一下即可。

  async uploadImageToLskyPro ({ photo, fileName, config, res, imageCdn }) {
    // 自定义兰空图床(v2)URL
    const formData = new FormData()
    formData.append('file', fn.base64UrlToReadStream(photo, fileName))
+   if (process.env.TWIKOO_LSKY_STRATEGY_ID) {
+     formData.append('strategy_id', parseInt(process.env.TWIKOO_LSKY_STRATEGY_ID))
+   }
    const url = `${imageCdn}/api/v1/upload`

另外,你贴的私有部署的报错信息已经在 1.6.2 版本中修复了。

1.6.4 增加了环境变量 TWIKOO_LSKY_STRATEGY_ID,你可以直接访问 vercel - 你的环境 - settings - environment variables 页面添加这个环境变量以指定图床策略。

GC-ZF commented

1.6.4 增加了环境变量 TWIKOO_LSKY_STRATEGY_ID,你可以直接访问 vercel - 你的环境 - settings - environment variables 页面添加这个环境变量以指定图床策略。

Nice!!!太感谢了!以前没用过npm打包,下午大概看了下,然后按你说的部署成功了,就已经很好了。但是以后更新都得来仓库合并代码,修改package.json,打包release。现在直接加了新功能,双倍快乐!!!再次感谢!