hexo-theme-stellar/layout/_partial/main/article/read_next.ejs

80 lines
2.4 KiB
Plaintext

<%
function layoutDiv() {
var prev,next
var title = __('meta.read_next')
title_prev = __('meta.newer')
title_next = __('meta.older')
if (page.layout === 'post') {
prev = page.prev
next = page.next
} else if (page.layout === 'topic' && page.topic?.length > 0) {
const topicObject = theme.topic.tree[page.topic]
if (topicObject) {
const current_page_date = topicObject.pages.filter(p => p.path == page.path)[0].date
for (let p of topicObject.pages) {
if (p.date > current_page_date) {
if (prev == undefined || p.date < prev.date) {
prev = p
}
} else if (p.date < current_page_date) {
if (next == undefined || p.date > next.date) {
next = p
}
}
}
}
} else if (page.layout === 'wiki' && page.wiki?.length > 0) {
var title_prev = __('meta.prev');
var title_next = __('meta.next');
let proj = theme.wiki.tree[page.wiki];
if (proj) {
let ps = proj.pages?.filter(p => p.path == page.path)
if (ps?.length > 0) {
const current_page_number = ps[0].page_number || 0;
proj.pages.forEach((p, i) => {
if (p.page_number < current_page_number) {
if (prev == undefined || p.page_number > prev.page_number) {
prev = p;
}
} else if (p.page_number > current_page_number) {
if (next == undefined || p.page_number < next.page_number) {
next = p;
}
}
});
} else {
console.error('未找到当前页');
}
}
}
let el = '';
if (prev || next) {
el += '<div class="related-wrap reveal" id="read-next">';
el += '<section class="body">';
// prev
el += '<div class="item" id="prev">';
if (prev) {
el += '<div class="note">' + title_prev + '</div>';
el += '<a href="' + url_for(prev.path) + '">';
el += prev.title || prev.seo_title || prev.wiki || date(prev.date, config.date_format);
el += '</a>';
}
el += '</div>';
// next
el += '<div class="item" id="next">';
if (next) {
el += '<div class="note">' + title_next + '</div>';
el += '<a href="' + url_for(next.path) + '">';
el += next.title || next.seo_title || next.wiki || date(next.date, config.date_format);
el += '</a>';
}
el += '</div>';
el += '</section>';
el += '</div>';
}
return el;
}
%>
<%- layoutDiv(); %>