diff --git a/assets/images/nopic.svg b/assets/images/nopic.svg index 222adbd..78803ff 100644 --- a/assets/images/nopic.svg +++ b/assets/images/nopic.svg @@ -1,9 +1 @@ - - - - - Layer 1 - - - - \ No newline at end of file +Layer 1 \ No newline at end of file diff --git a/assets/js/loadmore.js b/assets/js/loadmore.js index 15fa857..69e165a 100644 --- a/assets/js/loadmore.js +++ b/assets/js/loadmore.js @@ -4,13 +4,10 @@ document.addEventListener('click', function (e) { e.preventDefault(); var btn = e.target.closest('.loadmore a'); var nextPage = btn.getAttribute('href'); - // 防止重复点击 if (btn.classList.contains('loading')) return false; - btn.classList.add('loading'); btn.textContent = '加载中...'; - // 发起 AJAX 请求 fetch(nextPage) .then(response => { @@ -23,22 +20,17 @@ document.addEventListener('click', function (e) { // 创建一个临时的 DOM 元素来解析返回的 HTML var parser = new DOMParser(); var htmlDoc = parser.parseFromString(data, 'text/html'); - // 找到新的文章 var newPosts = htmlDoc.querySelectorAll('.post--item'); - // 找到新的"加载更多"按钮 var newBtn = htmlDoc.querySelector('.nav-links a'); - // 获取文章列表容器和加载更多按钮 var postReadMore = document.querySelector('.nav-links'); var articleList = document.querySelector('.articleList'); - if (newPosts.length > 0) { newPosts.forEach(post => { articleList.insertBefore(post, postReadMore); }); - // 新文章淡入效果 Array.from(newPosts).forEach(post => { post.style.opacity = 0; @@ -48,7 +40,6 @@ document.addEventListener('click', function (e) { }, 10); }); } - // 更新"加载更多"按钮或移除它 if (newBtn) { btn.setAttribute('href', newBtn.getAttribute('href')); diff --git a/module/postlist.php b/module/postlist.php index c729a7b..0feb79b 100644 --- a/module/postlist.php +++ b/module/postlist.php @@ -1,28 +1,23 @@ options->sticky; // 置顶的文章id,多个用|隔开 $db = Typecho_Db::get(); $pageSize = $this->options->pageSize; - if ($sticky && !empty(trim($sticky))) { $sticky_cids = array_filter(explode('|', $sticky)); // 分割文本并过滤空值 if (!empty($sticky_cids)) { $sticky_html = " 置顶 "; // 置顶标题的 html - // 清空原有文章的队列 $this->row = []; $this->stack = []; $this->length = 0; - // 获取总数,并排除置顶文章数量 if (isset($this->currentPage) && $this->currentPage == 1) { $totalOriginal = $this->getTotal(); $stickyCount = count($sticky_cids); $this->setTotal(max($totalOriginal - $stickyCount, 0)); - // 构建置顶文章的查询 $selectSticky = $this->select()->where('type = ?', 'post'); foreach ($sticky_cids as $i => $cid) { @@ -31,21 +26,17 @@ if ($sticky && !empty(trim($sticky))) { else $selectSticky->orWhere('cid = ?', $cid); } - // 获取置顶文章 $stickyPosts = $db->fetchAll($selectSticky); - // 压入置顶文章到文章队列 foreach ($stickyPosts as &$stickyPost) { $stickyPost['title'] .= $sticky_html; $this->push($stickyPost); } - $standardPageSize = $pageSize - count($stickyPosts); } else { $standardPageSize = $pageSize; } - // 构建正常文章查询,排除置顶文章 $selectNormal = $this->select() ->where('type = ?', 'post') @@ -53,7 +44,6 @@ if ($sticky && !empty(trim($sticky))) { ->where('created < ?', time()) ->order('created', Typecho_Db::SORT_DESC) ->page(isset($this->currentPage) ? $this->currentPage : 1, $standardPageSize); - foreach ($sticky_cids as $cid) { $selectNormal->where('table.contents.cid != ?', $cid); } @@ -75,7 +65,6 @@ if ($sticky && !empty(trim($sticky))) { ->order('created', Typecho_Db::SORT_DESC) ->page(isset($this->currentPage) ? $this->currentPage : 1, $pageSize); } - // 登录用户显示私密文章 if ($this->user->hasLogin()) { $uid = $this->user->uid; @@ -83,16 +72,13 @@ if ($this->user->hasLogin()) { $selectNormal->orWhere('authorId = ? AND status = ?', $uid, 'private'); } } - $normalPosts = $db->fetchAll($selectNormal); - // 如果之前没有清空队列(没有置顶文章的情况),现在清空 if (empty($sticky) || empty(trim($sticky)) || empty($sticky_cids)) { $this->row = []; $this->stack = []; $this->length = 0; } - // 压入正常文章到文章队列 foreach ($normalPosts as $normalPost) { $this->push($normalPost);