Halo 2.0 的链接管理插件,支持在 Console 进行管理以及为主题端提供 /links
页面路由。
- 下载,目前提供以下两个下载方式:
- GitHub Releases:访问 Releases 下载 Assets 中的 JAR 文件。
- Halo 应用市场:https://halo.run/store/apps/app-hfbQg
- 安装,插件安装和更新方式可参考:https://docs.halo.run/user-guide/plugins
- 安装完成之后,访问 Console 左侧的链接菜单项,即可进行管理。
- 前台访问地址为
/links
,需要注意的是,此插件需要主题提供模板(links.html)才能访问/links
。
git clone git@github.com:halo-sigs/plugin-links.git
# 或者当你 fork 之后
git clone git@github.com:{your_github_id}/plugin-links.git
cd path/to/plugin-links
# macOS / Linux
./gradlew pnpmInstall
# Windows
./gradlew.bat pnpmInstall
# macOS / Linux
./gradlew build
# Windows
./gradlew.bat build
修改 Halo 配置文件:
halo:
plugin:
runtime-mode: development
classes-directories:
- "build/classes"
- "build/resources"
lib-directories:
- "libs"
fixedPluginPath:
- "/path/to/plugin-links"
目前此插件为主题端提供了 /links
路由,模板为 links.html
,也提供了 Finder API,可以将链接渲染到任何地方。
- 模板路径:/templates/links.html
- 访问路径:/links
groups
List<#LinkGroupVo>
<th:block th:each="group : ${groups}">
<h2 th:text="${group.spec.displayName}"></h2>
<a th:each="link : ${group.links}" :key="i" th:href="${link.spec.url}" target="_blank">
<div>
<div>
<img th:src="${link.spec.logo}" th:alt="${link.spec.displayName}" />
</div>
<div >
<div>
<p th:text="${link.spec.displayName}"></p>
<p th:text="${link.spec.description}"></p>
</div>
</div>
</div>
</a>
</th:block>
linksTitle
String
<h2 th:text="${linksTitle}"></h2>
根据 group 获取链接。
group:string
- 分组(LinkGroup)的唯一标识metadata.name
。
List<#LinkVo>
<th:block th:each="link : ${linkFinder.listBy('friends')}">
<a th:href="${link.spec.url}" target="_blank">
<div>
<div>
<img th:src="${link.spec.logo}" th:alt="${link.spec.displayName}" />
</div>
<div >
<div>
<p th:text="${link.spec.displayName}"></p>
<p th:text="${link.spec.description}"></p>
</div>
</div>
</div>
</a>
</th:block>
获取所有分组,包含链接集合。
无
List<#LinkGroupVo>
<th:block th:each="group : ${linkFinder.groupBy()}">
<h2 th:text="${group.spec.displayName}"></h2>
<a th:each="link : ${group.links}" :key="i" th:href="${link.spec.url}" target="_blank">
<div>
<div>
<img th:src="${link.spec.logo}" th:alt="${link.spec.displayName}" />
</div>
<div >
<div>
<p th:text="${link.spec.displayName}"></p>
<p th:text="${link.spec.description}"></p>
</div>
</div>
</div>
</a>
</th:block>
主题开发者可以参考 自定义标签,来为友情链接接入评论功能。
group:plugin.halo.run
kind: Plugin
name: ${pluginName}
<div th:if="${haloCommentEnabled}">
<halo:comment
group="plugin.halo.run"
kind="Plugin"
th:attr="name=${pluginName}"
/>
</div>
{
"metadata": {
"name": "string", // 唯一标识
"labels": {
"additionalProp1": "string"
},
"annotations": {
"additionalProp1": "string"
},
"creationTimestamp": "2022-11-20T13:06:38.512Z", // 创建时间
},
"spec": {
"url": "string", // 链接
"displayName": "string", // 显示名称
"description": "string", // 描述
"logo": "string", // Logo
"priority": 0, // 排序字段
}
}
{
"metadata": {
"name": "string", // 唯一标识
"labels": {
"additionalProp1": "string"
},
"annotations": {
"additionalProp1": "string"
},
"creationTimestamp": "2022-11-20T13:06:38.512Z", // 创建时间
},
"spec": {
"displayName": "string", // 显示名称
"priority": 0, // 排序字段
"links": [ // 链接集合,即 Link 的 metadata.name 的集合
"string"
]
},
"links": "List<#LinkVo>" // 链接集合
}
根据 Halo 的元数据表单定义文档和模型元数据文档,Halo 支持为部分模型的表单添加元数据表单,此插件同样适配了此功能,如果你作为主题开发者,需要为链接或者链接分组添加额外的字段,可以参考上述文档并结合下面的 TargetRef 列表进行适配。
对应模型 | group | kind |
---|---|---|
链接 | core.halo.run | Link |
链接分组 | core.halo.run | LinkGroup |