主题适配
目前此插件为主题端提供了 /friends
路由,模板为 friends.html
,也提供了 Finder API,可以将瞬间列表渲染到任何地方。
模板变量
路由信息
- 模板路径:/templates/friends.html
- 访问路径:/friends
变量
- friends
变量类型
- UrlContextListResult<FriendPostVo>
示例
<div>
<div th:each="friend : ${friends.items}" th:with="spec = ${friend.spec}">
<a th:href="${spec.postLink}" target="_blank" th:text="${spec.title}"></a>
<div>
<img th:src="${spec.logo}" alt="avatar">
<a th:href="${spec.authorUrl}" target="_blank">
<span th:text="${spec.author}"></span>
</a>
</div>
</div>
<div th:if="${friends.hasPrevious() || friends.hasNext()}">
<a th:href="@{${friends.prevUrl}}">
<span>上一页</span>
</a>
<span th:text="${friends.page}"></span>
<a th:href="@{${friends.nextUrl}}">
<span>下一页</span>
</a>
</div>
</div>
Finder API
listAll()
描述
获取全部订阅文章内容。
参数
无
返回值
List<FriendPostVo>
示例
<div>
<div th:each="friend : ${friendFinder.listAll()}" th:with="spec = ${friend.spec}">
<a th:href="${spec.postLink}" target="_blank" th:text="${spec.title}"></a>
<div >
<img th:src="${spec.logo}" alt="avatar">
<a th:href="${spec.authorUrl}" target="_blank">
<span th:text="${spec.author}"></span>
</a>
</div>
</div>
</div>
list(page, size)
描述
根据分页参数获取订阅文章内容。
参数
- page: int - 分页页码,从 1 开始
- size: int - 分页条数
返回值
示例
<th:block th:with="friends = ${friendFinder.list(1, 10)}">
<div>
<div th:each="friend : ${friends.items}" th:with="spec = ${friend.spec}">
<a th:href="${spec.postLink}" target="_blank" th:text="${spec.title}"></a>
<div >
<img th:src="${spec.logo}" alt="avatar">
<a th:href="${spec.authorUrl}" target="_blank">
<span th:text="${spec.author}"></span>
</a>
</div>
</div>
</div>
<div>
<span th:text="${friends.page}"></span>
</div>
</th:block>
listByLinkName(page, size, linkName)
描述
根据链接标识和分页参数订阅文章内容。
参数
- page: int - 分页页码,从 1 开始
- size: int - 分页条数
- linkName:string - 链接的唯一标识 metadata.name。
返回值
示例
<th:block th:with="friends = ${friendFinder.list(1, 10, 'link-GaPdF')}">
<div>
<div th:each="friend : ${friends.items}" th:with="spec = ${friend.spec}">
<a th:href="${spec.postLink}" target="_blank" th:text="${spec.title}"></a>
<div >
<img th:src="${spec.logo}" alt="avatar">
<a th:href="${spec.authorUrl}" target="_blank">
<span th:text="${spec.author}"></span>
</a>
</div>
</div>
</div>
<div>
<span th:text="${friends.page}"></span>
</div>
</th:block>
类型定义
FriendPostVo
{
"metadata": {
"name": "string", // 唯一标识
"generateName": "string",
"version": 0,
"creationTimestamp": "2024-01-16T16:13:17.925131783Z", // 创建时间
},
"apiVersion": "friend.moony.la/v1alpha1",
"kind": "FriendPost",
"spec": {
"authorUrl": "string", // 作者链接
"author": "string", // 作者名称
"logo": "string", // 作者logo
"title": "string", // 标题
"postLink": "string", // 链接
"description": "string", // 内容
"pubDate": "date", // 文章发布时间
}
}
ListResult
{
"page": 0, // 当前页码
"size": 0, // 每页条数
"total": 0, // 总条数
"items": "List<#FriendPostVo>", // 订阅文章列表数据
"first": true, // 是否为第一页
"last": true, // 是否为最后一页
"hasNext": true, // 是否有下一页
"hasPrevious": true, // 是否有上一页
"totalPages": 0 // 总页数
}
UrlContextListResult
{
"page": 0, // 当前页码
"size": 0, // 每页条数
"total": 0, // 总条数
"items": "List<#FriendPostVo>", // 订阅文章列表数据
"first": true, // 是否为第一页
"last": true, // 是否为最后一页
"hasNext": true, // 是否有下一页
"hasPrevious": true, // 是否有上一页
"totalPages": 0, // 总页数
"prevUrl": "string", // 上一页链接
"nextUrl": "string" // 下一页链接
}