前提是选择的主题在Front-matter
中支持cover和thumbnail,主题之间对于这两个属性的定义可能并不用,如果不适用,只需要根据逻辑修改脚本即可。
1. Hexo模版
在scaffolds
文件夹下,有三个md文件即模版文件,平时我们hexo new post "title"
的时候就是基于post.md
生成的。
1 2 3 4
| scaffolds draft.md page.md post.md
|
将其修改为如下内容,补充属性,并添加2个特殊的字符串COVER_PLACEHOLDER
和THUMBNAIL_PLACEHOLDER
,作为占位符,方便替换。
1 2 3 4 5 6 7 8 9 10 11 12
| --- title: {{ title }} date: {{ date }} comments: true cover: COVER_PLACEHOLDER thumbnail: THUMBNAIL_PLACEHOLDER tags: - 未分类 categories: - 未分类 description: ---
|
2. 准备封面和缩略图
在source文件夹下新建gallery文件夹,并放入5张封面图和5张缩略图,封面建议1920*1080,缩略图建议200*200 。封面和缩略图是一一对应的。
1 2 3 4 5 6 7 8 9 10 11
| source\gallery defaultCover1.png defaultCover2.png defaultCover3.png defaultCover4.png defaultCover5.png defaultThumbnail1.png defaultThumbnail2.png defaultThumbnail3.png defaultThumbnail4.png defaultThumbnail5.png
|
3. 新建博文脚本
我们不再手动hexo new post
来创建博文,而是使用脚本,可以在前后多一些自定义事件。
windows
windows系统可以使用以下powershell脚本来创建新博文MD,这会随机使用某一套封面和缩略图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| $timestamp = Get-Date -Format "yyyy-MM-dd-HH-mm-ss"
hexo new post $timestamp
$file = "source/_posts/$timestamp.md"
$randomIndex = Get-Random -Minimum 1 -Maximum 6 $cover = "/gallery/defaultCover$randomIndex.png" $thumbnail = "/gallery/defaultThumbnail$randomIndex.png"
$mdContent = Get-Content $file -Raw -Encoding utf8
$mdContent = $mdContent -replace 'cover: COVER_PLACEHOLDER', "cover: $cover" $mdContent = $mdContent -replace 'thumbnail: THUMBNAIL_PLACEHOLDER', "thumbnail: $thumbnail"
Set-Content -Path $file -Value $mdContent -Encoding utf8
Write-Output "Post created: $file" Write-Output "Cover image: $cover" Write-Output "Thumbnail image: $thumbnail"
|
Linux
Liunx系统可以使用这个脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #!/bin/bash
timestamp=$(date +%Y-%m-%d-%H-%M-%S)
hexo new post "$timestamp"
file="source/_posts/$timestamp.md"
randomIndex=$(( (RANDOM % 5) + 1 )) cover="/gallery/defaultCover${randomIndex}.png" thumbnail="/gallery/defaultThumbnail${randomIndex}.png"
sed -i "s|cover: COVER_PLACEHOLDER|cover: $cover|" "$file" sed -i "s|thumbnail: THUMBNAIL_PLACEHOLDER|thumbnail: $thumbnail|" "$file"
echo "Post created: $file" echo "Cover image: $cover" echo "Thumbnail image: $thumbnail"
|
4. 效果展示