108 lines
5.3 KiB
HTML
108 lines
5.3 KiB
HTML
|
<th:block
|
|||
|
th:with='postItems=${posts.items},
|
|||
|
postRandomImg=${#strings.contains(theme.config.layout.postRandomImg,"?") ? theme.config.layout.postRandomImg+"&" : theme.config.layout.postRandomImg+"?"}'>
|
|||
|
|
|||
|
<!-- card,需要添加在没有图片时使用随机图片 -->
|
|||
|
<div class="recent-post-item"
|
|||
|
th:classappend="${theme.config.layout.post.cols} + ' ' +
|
|||
|
${theme.config.layout.post.postLocation} + ' ' +
|
|||
|
(${iStat.even} ? 'even' : 'odd') + ' ' +
|
|||
|
(${post.spec.pinned} ? 'pinned-post-item' : '')"
|
|||
|
th:attr="onclick='pjax.loadUrl(\''+ @{${post.status.permalink}} +'\')'"
|
|||
|
th:each="post,iStat : ${postItems}">
|
|||
|
<div class="post_cover left_radius">
|
|||
|
<a th:attr="title=${post.spec.title}" th:href="@{${post.status.permalink}}">
|
|||
|
<img class="post_bg"
|
|||
|
th:with='img = ${#strings.isEmpty(post.spec.cover) ? postRandomImg+post.spec.title : post.spec.cover}'
|
|||
|
th:alt="${post.spec.title}"
|
|||
|
th:data-lazy-src="${ isLazyload ? img : ''}"
|
|||
|
th:src="${isLazyload ? loadingImg : img}">
|
|||
|
</a>
|
|||
|
</div>
|
|||
|
<div class="recent-post-info">
|
|||
|
<div class="recent-post-info-top">
|
|||
|
<div class="recent-post-info-top-tips">
|
|||
|
<span class="sticky-warp sticky" th:if="${post.spec.pinned}">置顶</span></span>
|
|||
|
<!-- 类别非空时 -->
|
|||
|
<th:block th:if="${not #lists.isEmpty(post.categories)}">
|
|||
|
<span th:each="category : ${post.categories}" th:href="@{${category.status.permalink}}"
|
|||
|
th:text="${category.spec.displayName}" th:title="${category.spec.displayName}"
|
|||
|
class="original"></span>
|
|||
|
</th:block>
|
|||
|
<!-- <span class="lastestpost">最新</span>-->
|
|||
|
<a class="unvisited-post" th:href="@{${post.status.permalink}}" th:title="${post.spec.title}"
|
|||
|
data-pjax-state="">未读</a>
|
|||
|
</div>
|
|||
|
<a class="article-title"
|
|||
|
th:attr="title=${post.spec.title}"
|
|||
|
th:href="@{${post.status.permalink}}"
|
|||
|
th:text="${post.spec.title}">
|
|||
|
</a>
|
|||
|
<div class="content" th:text="${post.status.excerpt}"></div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="article-meta-wrap">
|
|||
|
<!-- tag -->
|
|||
|
<th:block th:if="${not #lists.isEmpty(post.tags)}">
|
|||
|
<span class="article-meta tags">
|
|||
|
<a class="article-meta__tags" event.cancelbubble
|
|||
|
onclick="window.event.cancelBubble=!0"
|
|||
|
th:each="tag : ${post.tags}"
|
|||
|
th:href="@{${tag.status.permalink}}"
|
|||
|
th:title="${tag.spec.displayName}">
|
|||
|
<span class="tags-punctuation">[[${#strings.trim(tag.spec.displayName)}]]</span>
|
|||
|
</a>
|
|||
|
</span>
|
|||
|
</th:block>
|
|||
|
<!-- 创建时间 -->
|
|||
|
<span class="post-meta-date" th:with="days=${(new java.util.Date().getTime()-post.spec.publishTime.toEpochMilli())/86400000}">
|
|||
|
<i class="far fa-calendar-alt"></i>
|
|||
|
<time style="display: inline;"
|
|||
|
th:datetime="${post.spec.publishTime}"
|
|||
|
th:if="${days > 30}"
|
|||
|
th:text="${#dates.format(post.spec.publishTime,'yyyy-MM-dd')}"
|
|||
|
th:title="${#dates.format(post.spec.publishTime,'yyyy-MM-dd')}+创建">
|
|||
|
</time>
|
|||
|
<time style="display: inline;"
|
|||
|
th:datetime="${post.spec.publishTime}"
|
|||
|
th:if="${days <= 30 && days > 0}"
|
|||
|
th:text="${days}+天前"
|
|||
|
th:title="${#dates.format(post.spec.publishTime,'yyyy-MM-dd')}+创建">
|
|||
|
</time>
|
|||
|
<time style="display: inline;"
|
|||
|
th:datetime="${post.spec.publishTime}"
|
|||
|
th:if="${days == 0}"
|
|||
|
th:text="最近"
|
|||
|
th:title="${#dates.format(post.spec.publishTime,'yyyy-MM-dd')}+创建">
|
|||
|
</time>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- 文章卡片擦亮效果 -->
|
|||
|
<style th:if="${theme.config.layout.articleCardPolish}">
|
|||
|
#recent-posts > .recent-post-item:not(a)::before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
left: 0;
|
|||
|
width: 100%;
|
|||
|
height: 200%;
|
|||
|
background: linear-gradient(to right, transparent, white, transparent);
|
|||
|
transform: translateX(-200%);
|
|||
|
transition: transform 0.5s linear;
|
|||
|
z-index: 1;
|
|||
|
}
|
|||
|
|
|||
|
#recent-posts > .recent-post-item:not(a):hover::before {
|
|||
|
transform: translateX(100%) skewX(-60deg);
|
|||
|
}
|
|||
|
</style>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- 分页 -->
|
|||
|
<div th:replace="~{modules/widgets/page :: page('',${posts},true,'')}"></div>
|
|||
|
|
|||
|
</th:block>
|