请求适配主题渲染、图床存储策略
GC-ZF opened this issue · 8 comments
你好作者,平常没用过代码块,今天发现和butterfly主题适配有问题hexo-theme-butterfly#1001,在butterfly中,代码块无法正常显示
如果使用```后面必须加一个字母,才会显示代码框。
关于图床,用了好久twikoo了,也没注意过图床设置,今天刚好看见了,看到支持杜老师的7bu,他是用兰空做的,刚好我自己服务器里也搭建过我自己用的。我就尝试了一下,发现居然自己搭的也可以用(十分感谢作者有这么好的评论系统)。
因为杜老师他没有开放用户的存储策略设置(只有管理员才能设置),我有好多个存储策略(兰空的存储策略是用来设置上传的图片url地址,和上传到服务器的哪个路径下无关),他只默认上传该用户下第一个存储策略。所以希望可以增加存储策略设置,比如这个插件兰空picgo,留空是上传默认策略,但也可以通过自定义用户存储策略
比如#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;
}
至于你说的
使用```后面必须加一个字母,才会显示代码框。
这个字母代表代码块的语言,加上字母后触发了相关语言的代码高亮功能,所以会套上样式。
图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。
代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48
图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。
代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48
十分感谢!
图床上传加策略 ID 参数,需求小众,不会开发,你可以通过修改云函数代码的方式增加这个参数。
代码位置: https://github.com/imaegoo/twikoo/blob/main/src/server/function/twikoo/utils/image.js#L48
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 页面添加这个环境变量以指定图床策略。
1.6.4 增加了环境变量 TWIKOO_LSKY_STRATEGY_ID,你可以直接访问 vercel - 你的环境 - settings - environment variables 页面添加这个环境变量以指定图床策略。
Nice!!!太感谢了!以前没用过npm打包,下午大概看了下,然后按你说的部署成功了,就已经很好了。但是以后更新都得来仓库合并代码,修改package.json,打包release。现在直接加了新功能,双倍快乐!!!再次感谢!