From 22c0c9df9cbbb99c8e49335ef476f767a3f9e64c Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 16 Aug 2026 15:49:12 +0800 Subject: [PATCH] fix(widgets): remove announcement outer card --- assets/js/core/ajax-list.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/assets/js/core/ajax-list.js b/assets/js/core/ajax-list.js index ec651911..081f257c 100644 --- a/assets/js/core/ajax-list.js +++ b/assets/js/core/ajax-list.js @@ -155,14 +155,32 @@ if (next) old.replaceWith(next); } + // Some widgets keep the rendered post grid inside an outer ajaxpager that + // also owns pagination/loading controls. Preserve that grid when replacing + // or appending AJAX items instead of flattening cards into the outer panel. + function findItemHost(container) { + if (!container || !container.children) return container; + for (var i = 0; i < container.children.length; i++) { + var child = container.children[i]; + if ( + child.matches && + child.matches(".posts-row.post-grid, .aksrt-home-widget__post-grid") + ) { + return child; + } + } + return container; + } + function inject(container, payload, options) { options = options || {}; var replace = options.replace !== false; if (!container) return; var itemsHtml = payload.itemsHtml || payload.html || ""; + var itemHost = findItemHost(container); if (replace) { - container.querySelectorAll(".ajax-item").forEach(function (n) { + itemHost.querySelectorAll(".ajax-item").forEach(function (n) { n.remove(); }); // If container itself holds only items, clear non-loader children. @@ -180,19 +198,19 @@ }); } if (itemsHtml) { - var pag = container.querySelector(".ajax-pag"); + var pag = itemHost.querySelector(".ajax-pag"); if (pag) { pag.insertAdjacentHTML("beforebegin", itemsHtml); } else { - container.insertAdjacentHTML("beforeend", itemsHtml); + itemHost.insertAdjacentHTML("beforeend", itemsHtml); } } } else if (itemsHtml) { - var pag2 = container.querySelector(".ajax-pag"); + var pag2 = itemHost.querySelector(".ajax-pag"); if (pag2) { pag2.insertAdjacentHTML("beforebegin", itemsHtml); } else { - container.insertAdjacentHTML("beforeend", itemsHtml); + itemHost.insertAdjacentHTML("beforeend", itemsHtml); } }