增加快捷链接模板

This commit is contained in:
je 2023-07-30 14:20:05 +08:00
parent ae4eb238a7
commit 8947626797
12 changed files with 116 additions and 188 deletions

View File

@ -1,58 +0,0 @@
name: BUG 提交
description: 提交 Bug 反馈
title: 'bug:'
labels: [bug]
body:
- type: markdown
id: preface
attributes:
value: |
感谢你花时间填写此错误报告!在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: halo-version
validations:
required: false
attributes:
label: "是什么 Halo 版本出现了此问题?"
description: "可以在管理后台的关于页面中找到。"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "使用的 Dream 版本是多少?"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: input
id: site-url
attributes:
label: "在线博客地址"
description: "如果可以的话,请提供你的博客地址。这可能会帮助我们更好的定位问题。"
placeholder: "ex. https://blog.nineya.com"
validations:
required: false
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: what-happened
attributes:
label: "BUG 内容"
description: "较详细的描述 BUG 导致了什么问题。"
validations:
required: true
- type: textarea
id: logs
attributes:
label: "相关 Console 日志输出"
description: "浏览器界面按 `F12` 进入开发者工具,请复制并粘贴任何相关的控制台日志输出。 这将自动格式化为代码,因此无需反引号。"
render: shell
- type: textarea
id: additional-information
attributes:
label: "附加信息"
description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。"

View File

@ -1,5 +0,0 @@
blank_issues_enabled: true
contact_links:
- name: 加入主题交流群
url: https://qm.qq.com/cgi-bin/qm/qr?k=X7p7Bs21cgtkQ0dRfzmBsuWqNNQc10hn&jump_from=webapi
about: 如果问题描述起来较于复杂,欢迎加入 Dream 主题交流群进行提问。

View File

@ -1,35 +0,0 @@
name: 定制化配置
description: 提交定制化配置疑问
title: 'custom:'
labels: [custom]
body:
- type: markdown
id: preface
attributes:
value: "你好!感谢你为 Dream 提交定制化配置建议。在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。"
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "你当前使用的 Dream 版本"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: description
attributes:
label: "描述一下此定制化内容"
validations:
required: true
- type: textarea
id: additional-information
attributes:
label: "补充信息"
description: "如果你还有其他需要提供的信息或解决思路,可以在这里填写。"

View File

@ -1,41 +0,0 @@
name: 新特性建议
description: 提交新特性建议
title: 'feat:'
body:
- type: markdown
id: preface
attributes:
value: "你好!感谢你为 Dream 提交新特性建议。在开始之前,我们非常推荐阅读一遍[《开源最佳实践》](https://github.com/LinuxSuRen/open-source-best-practice),这会在很大程度上提高我们彼此的效率。"
- type: markdown
id: environment
attributes:
value: "## 环境信息"
- type: input
id: halo-version
validations:
required: false
attributes:
label: "你当前使用的 Halo 版本"
description: "可以在管理后台的关于页面中找到。"
- type: input
id: dream-version
validations:
required: false
attributes:
label: "你当前使用的 Dream 版本"
description: "可以在主题 `theme.yaml` 文件中找到。"
- type: markdown
id: details
attributes:
value: "## 详细信息"
- type: textarea
id: description
attributes:
label: "描述一下此特性"
validations:
required: true
- type: textarea
id: additional-information
attributes:
label: "附加信息"
description: "如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。"

View File

@ -15,30 +15,11 @@
本仓库为 `Halo 2.x` 主题仓库,如果你使用的是 `Halo 1.x` 请前往https://github.com/nineya/halo-theme-dream 本仓库为 `Halo 2.x` 主题仓库,如果你使用的是 `Halo 1.x` 请前往https://github.com/nineya/halo-theme-dream
## 一、预览 ## 一、预览
本人为原作者主题进行二次开发
![玖涯博客](https://cdn.jsdelivr.net/gh/nineya/halo-theme-dream2.0@master/preview.png)
预览:[主题预览](https://github.com/nineya/halo-theme-dream/discussions/72) 预览:[主题预览](https://github.com/nineya/halo-theme-dream/discussions/72)
> 如果你有计划长期使用 `Dream` 主题,也来[这里](https://github.com/nineya/halo-theme-dream/discussions/72)留下你的博客链接吧。
## 二、版本适配关系
## 二、说明
梦之城,童话梦境,动漫类型博客主题。
关于主题使用上的一些问题可以参见 [主题使用手册-基础篇](https://blog.nineya.com/archives/94.html)
如有疑问,欢迎加入 <a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=X7p7Bs21cgtkQ0dRfzmBsuWqNNQc10hn&jump_from=webapi">Dream 主题交流群638168592</a>
欢迎参与主题开发的一些<a href="https://github.com/nineya/halo-theme-dream/discussions">问题探讨</a>
欢迎关注微信公众号《玖涯菜菜子》,主题版本更新消息与要点说明将在公众号发布。
![微信公众号](https://blog.nineya.com/upload/2023/05/未标题-2.png)
## 三、版本适配关系
| 主题版本 | 适配Halo版本 | 测试用Halo版本 | | 主题版本 | 适配Halo版本 | 测试用Halo版本 |
| ----------- | --------------------------- | -------------- | | ----------- | --------------------------- | -------------- |
@ -46,9 +27,7 @@
## 四、安装 & 更新 ## 三、安装 & 更新
1. 进入主题 `Release` 界面https://github.com/nineya/halo-theme-dream2.0/releases 下载主题压缩包 `halo-theme-dream.zip` 压缩包文件; 1. 进入主题 `Release` 界面https://github.com/nineya/halo-theme-dream2.0/releases 下载主题压缩包 `halo-theme-dream.zip` 压缩包文件;
2. 进入博客后台管理 `主题->主题管理->安装主题`,选择下载的 `halo-theme-dream.zip` 安装包进行上传; 2. 进入博客后台管理 `主题->主题管理->安装主题`,选择下载的 `halo-theme-dream.zip` 安装包进行上传;
@ -57,7 +36,7 @@
## 五、参与主题开发 ## 四、主题开发
> 推荐使用 IDEA 进行主题开发,能够比较好的支持 FreeMarker。 > 推荐使用 IDEA 进行主题开发,能够比较好的支持 FreeMarker。
@ -74,11 +53,4 @@
- `npm run build --devel` 开发模式进行主题打包,`js` 和 `css` 不会被做压缩和混淆处理,方便排查问题。 - `npm run build --devel` 开发模式进行主题打包,`js` 和 `css` 不会被做压缩和混淆处理,方便排查问题。
- `npm run release --tag=$version` 发布模式执行主题打包操作,将自动更新主题中的版本号,并使用这个版本标签重新创建 `FreeCDN` 清单文件。 - `npm run release --tag=$version` 发布模式执行主题打包操作,将自动更新主题中的版本号,并使用这个版本标签重新创建 `FreeCDN` 清单文件。
## 六、打赏项目
感谢您对本项目的喜爱,您的打赏是对本项目最好的支持!
![打赏项目](https://blog.nineya.com/upload/2022/08/funding.png)

View File

@ -93,6 +93,12 @@ spec:
label: 关闭 label: 关闭
- value: "" - value: ""
label: 跟随默认配置 label: 跟随默认配置
- $formkit: text
name: link_group_name
label: 链接页指定分组
value: ""
placeholder: '请输入链接分组'
help: '当模板选择快捷链接时,可填选该项,目前值获取只能在链接分组配置后,去数据库查看。'
- $formkit: text - $formkit: text
name: tips name: tips
label: 文章提示 label: 文章提示

View File

@ -1,7 +1,7 @@
apiVersion: v1alpha1 apiVersion: v1alpha1
kind: Setting kind: Setting
metadata: metadata:
name: theme-dream-setting name: theme-pika-setting
spec: spec:
forms: forms:
- group: basic_info - group: basic_info

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -1,19 +1,24 @@
<html lang="zh" xmlns:th="https://www.thymeleaf.org" <html lang="zh" xmlns:th="https://www.thymeleaf.org"
th:class="${theme.config.basic_style.theme_style}" th:class="${theme.config.basic_style.theme_style}"
th:fragment="layout (title, canonical, content, isPost)"> th:fragment="layout (title, canonical, content, isPost)">
<!-- 这个是没有样式的 -->
<th:block th:if="${!#strings.equals('',param._pjax)}" <th:block th:if="${!#strings.equals('',param._pjax)}"
th:with="contributor = ${contributorFinder.getContributor(theme.config.basic_info.metadata_name)}"> th:with="contributor = ${contributorFinder.getContributor(theme.config.basic_info.metadata_name)}">
<th:block th:replace="~{common/head :: head}"/> <th:block th:replace="~{common/head :: head}"/>
<body> <body>
<div class="column-main"> <div class="column-main">
<th:block th:replace="${content}"/> <th:block th:replace="${content}"/>
column-main123
</div> </div>
common/scripts
<th:block th:replace="~{common/scripts}"/> <th:block th:replace="~{common/scripts}"/>
</body> </body>
</th:block> </th:block>
<!-- 有样式的 -->
<th:block th:unless="${!#strings.equals('',param._pjax)}" <th:block th:unless="${!#strings.equals('',param._pjax)}"
th:with="stats = ${siteStatsFinder.getStats()}, th:with="stats = ${siteStatsFinder.getStats()},
contributor = ${contributorFinder.getContributor(theme.config.basic_info.metadata_name)}"> contributor = ${contributorFinder.getContributor(theme.config.basic_info.metadata_name)}">
<!--菜单-->
<th:block th:replace="~{common/head :: head}"/> <th:block th:replace="~{common/head :: head}"/>
<body> <body>
<th:block th:replace="~{common/navbar}"/> <th:block th:replace="~{common/navbar}"/>
@ -23,13 +28,17 @@
<section class="section"> <section class="section">
<div th:class="${theme.config.basic_style.sidebar_column != 'all' ? 'container two-column' : 'container' }"> <div th:class="${theme.config.basic_style.sidebar_column != 'all' ? 'container two-column' : 'container' }">
<div class="columns"> <div class="columns">
<!--中间的主题内容-->
<div class="column column-main"> <div class="column column-main">
<!--显示什么外部传入-->
<th:block th:replace="${content}"/> <th:block th:replace="${content}"/>
</div> </div>
<!--左边-侧边栏-->
<th:block <th:block
th:if="${theme.config.basic_style.sidebar_column!='only-right' && theme.config.basic_style.sidebar_column!='module-left'}"> th:if="${theme.config.basic_style.sidebar_column!='only-right' && theme.config.basic_style.sidebar_column!='module-left'}">
<th:block th:replace="~{common/widget :: widget('left')}"/> <th:block th:replace="~{common/widget :: widget('left')}"/>
</th:block> </th:block>
<!--右边边-侧边栏-->
<th:block <th:block
th:if="${theme.config.basic_style.sidebar_column!='only-left' && theme.config.basic_style.sidebar_column!='module-right'}"> th:if="${theme.config.basic_style.sidebar_column!='only-left' && theme.config.basic_style.sidebar_column!='module-right'}">
<th:block th:replace="~{common/widget :: widget('right')}"/> <th:block th:replace="~{common/widget :: widget('right')}"/>

View File

@ -1,7 +1,8 @@
<!--文章主体-->
<th:block xmlns:th="https://www.thymeleaf.org" <th:block xmlns:th="https://www.thymeleaf.org"
th:fragment="article (post, type)" th:fragment="article (post, type)"
th:with="updateInterval = ${T(java.lang.Math).floor((#dates.createNow().getTime()/1000.0 - post.status.lastModifyTime.getEpochSecond())/86400.0).intValue()}"> th:with="updateInterval = ${T(java.lang.Math).floor((#dates.createNow().getTime()/1000.0 - post.status.lastModifyTime.getEpochSecond())/86400.0).intValue()}">
<!--头部图片-->
<div th:if="${!#strings.isEmpty(post.spec.cover)}" class="card widget"> <div th:if="${!#strings.isEmpty(post.spec.cover)}" class="card widget">
<div class="cover-image" th:style="'background-image: url(' + ${post.spec.cover} + ')'"> <div class="cover-image" th:style="'background-image: url(' + ${post.spec.cover} + ')'">
<div th:if="${type == 'Post' && !#lists.isEmpty(post.categories)}" class="category"> <div th:if="${type == 'Post' && !#lists.isEmpty(post.categories)}" class="category">
@ -21,19 +22,22 @@
</div> </div>
</div> </div>
</div> </div>
<!--失效提示-->
<div th:if="${!#strings.isEmpty(theme.config.post.invalid_tips_day) && updateInterval > T(java.lang.Long).parseLong(theme.config.post.invalid_tips_day)}" <div th:if="${!#strings.isEmpty(theme.config.post.invalid_tips_day) && updateInterval > T(java.lang.Long).parseLong(theme.config.post.invalid_tips_day)}"
class="card tips brightness"><i class="fa fa-times click-close" data-close=".tips"></i>本文最后更新于 class="card tips brightness"><i class="fa fa-times click-close" data-close=".tips"></i>本文最后更新于
[[${#dates.format(post.status.lastModifyTime,'yyyy-MM-dd')}]],距今已有 [[${updateInterval}]] [[${#dates.format(post.status.lastModifyTime,'yyyy-MM-dd')}]],距今已有 [[${updateInterval}]]
天,若文章内容或图片链接失效,请留言反馈。 天,若文章内容或图片链接失效,请留言反馈。
</div> </div>
<!--提示文本1-->
<div th:if="${!#strings.isEmpty(post.metadata.annotations.get('tips'))}" class="card tips brightness"><i <div th:if="${!#strings.isEmpty(post.metadata.annotations.get('tips'))}" class="card tips brightness"><i
class="fa fa-times click-close" data-close=".tips"></i>[[${post.metadata.annotations.tips}]] class="fa fa-times click-close" data-close=".tips"></i>[[${post.metadata.annotations.tips}]]
</div> </div>
<!--内容主题-->
<div class="card"> <div class="card">
<div class="card-content main"> <div class="card-content main">
<!--头部图片为空时,显示文本-->
<th:block th:if="${#strings.isEmpty(post.spec.cover)}"> <th:block th:if="${#strings.isEmpty(post.spec.cover)}">
<h1 class="title" th:text="${post.spec.title}"></h1> <h1 class="title" th:text="${post.spec.title}"></h1>
<div class="meta"> <div class="meta">
@ -53,18 +57,21 @@
<hr/> <hr/>
</th:block> </th:block>
<!--内容-->
<div th:data-id="${post.metadata.name}" th:data-target="${type}" class="main-content article" <div th:data-id="${post.metadata.name}" th:data-target="${type}" class="main-content article"
th:utext="${post.content.content}"> th:utext="${post.content.content}">
</div> </div>
<!---->
<th:block th:replace="~{main/admire}"/> <th:block th:replace="~{main/admire}"/>
<!--为文章时显示分类-->
<div th:if="${type == 'Post' && !#lists.isEmpty(post.tags)}" class="article-operation"> <div th:if="${type == 'Post' && !#lists.isEmpty(post.tags)}" class="article-operation">
<div class="level-item"> <div class="level-item">
<a th:each=" tag : ${post.tags}" th:href="${tag.status.permalink}" <a th:each=" tag : ${post.tags}" th:href="${tag.status.permalink}"
th:text="${tag.spec.displayName}"></a>&nbsp; th:text="${tag.spec.displayName}"></a>&nbsp;
</div> </div>
</div> </div>
<!--版权信息和分享-->
<th:bolck th:if="${enableCopyright || enableShare}"> <th:bolck th:if="${enableCopyright || enableShare}">
<hr/> <hr/>
<th:block th:if="${enableCopyright}"> <th:block th:if="${enableCopyright}">

67
templates/quick_link.html Normal file
View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<th:block xmlns:th="https://www.thymeleaf.org"
th:insert="~{common/layout :: layout (title = ${singlePage.spec.title + ' - ' + site.title}, canonical = @{/links}, content = ~{::content (${singlePage})}, isPost = false)}">
<th:block th:fragment="content (post)" th:with="defaultAvatar = ${#strings.defaultString(post.metadata.annotations.links_default_avatar, #theme.assets('/img/avatar.svg'))}">
<!--头部图片-->
<div th:if="${!#strings.isEmpty(post.spec.cover)}" class="card widget">
<div class="cover-image" th:style="'background-image: url(' + ${post.spec.cover} + ')'">
<div class="details">
<h1 class="title" th:text="${post.spec.title}"></h1>
<ul class="breadcrumb">
<li th:text="${#dates.format(post.spec.publishTime, 'yyyy-MM-dd HH:mm')}"></li>
<li><i class="fa fa-eye"></i>[[${post.stats.visit}]]</li>
<li th:if="${post.spec.allowComment}" class="is-hidden-mobile"><i class="fa fa-comments-o"></i>[[${post.stats.comment}]]
</li>
<li><i class="fa fa-thumbs-o-up"></i>[[${post.stats.upvote}]]</li>
<li><i class="fa fa-pencil"></i>[[${#strings.length(#strings.trim(post.content.content))}]]</li>
</ul>
</div>
</div>
</div>
<!--未指定分组时-->
<div class="card">
<div class="card-content main">
<h1 class="title" th:text="${contributor.displayName} + '收藏栏'"></h1>
<div class="main-content">
<th:block th:each="group : ${linkFinder.groupBy()}">
<div th:if="${!#lists.isEmpty(group.links)}" class="links">
<h3 class="link-title"
th:text="${#strings.defaultString(group.spec.displayName, '秘密')}"
th:id="'toc' + ${groupStat.index}"></h3>
<ul class="link-items">
<li th:each="link : ${group.links}">
<a class="links-item" th:href="${link.spec.url}" rel="noopener noreferrer"
target="_blank"
th:title="${link.spec.description}">
<img th:if="${#strings.isEmpty(link.spec.logo)}" class="not-gallery"
th:title="${link.spec.displayName}" th:src="${defaultAvatar}"
th:alt="${link.spec.displayName}">
<img th:unless="${#strings.isEmpty(link.spec.logo)}" class="not-gallery"
th:title="${link.spec.displayName}" th:src="${defaultAvatar}"
th:data-url="${link.spec.logo}"
th:data-default="${defaultAvatar}"
onload="if(!this.finish){this.finish=true;this.src=this.getAttribute('data-url')}"
onerror="this.onerror='';if (this.finish) {this.src=this.getAttribute('data-default')} else {this.finish=true;this.src=this.getAttribute('data-url')}"
th:alt="${link.spec.displayName}">
<span class="link-name" th:text="${link.spec.displayName}"></span>
<div class="link-desc"
th:text="${#strings.defaultString(link.spec.description, '暂无介绍')}"></div>
</a>
</li>
</ul>
</div>
</th:block>
</div>
</div>
</div>
<div class="card card-content" id="comment-wrapper"
th:if="${pluginFinder.available('PluginCommentWidget') && enableComment}">
<h3 class="comment-title">评论</h3>
<div class="widget-comment" th:data-id="${theme.config.page_config.link_comment_id}"
data-target="SinglePage"></div>
</div>
</th:block>
</th:block>

View File

@ -2,26 +2,32 @@ apiVersion: theme.halo.run/v1alpha1
kind: Theme kind: Theme
metadata: metadata:
# 主题id唯一 # 主题id唯一
name: theme-dream name: theme-pika
spec: spec:
# 主题名称 # 主题名称
displayName: Dream displayName: pika
author: author:
# 作者名称 # 作者名称
name: nineya name: jecyp
# 作者网址 # 作者网址
website: https://blog.nineya.com website: https://www.jecyp.com
# 主题描述 # 主题描述
description: '梦之城,童话梦境' description: '我的世界'
# 主题logo地址 # 主题logo地址
logo: /themes/theme-dream/assets/img/logo.png logo: /themes/theme-pika/assets/img/logo.png
# 主题地址 # 主题地址
website: https://github.com/nineya/halo-theme-dream2.0 website: https://www.gitea.jecyp.com/nineya/halo-theme-dream2.0
# 主题github开源地址 # 主题github开源地址
repo: https://github.com/nineya/halo-theme-dream2.0.git repo: https://www.gitea.jecyp.com/nineya/halo-theme-dream2.0.git
settingName: theme-dream-setting settingName: theme-pika-setting
configMapName: theme-dream-configMap configMapName: theme-pika-configMap
# 版本号 # 版本号
version: 1.0.4 version: 0.0.1
# 最低支持的 Halo 版本 # 最低支持的 Halo 版本
require: ">=2.0.0" require: ">=2.0.0"
# 独立页面的自定义模板配置
customTemplates:
page:
- name: 快捷链接
description: 链接收藏页面
file: quick_link.html