mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 18:52:56 +00:00
dev day #81
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
'use strict';
|
||||
(function(){
|
||||
async function updateHeroFromLatest() {
|
||||
try {
|
||||
const res = await fetch('/api/blog/latest?limit=8', {credentials:'omit'});
|
||||
if (!res.ok) throw new Error('HTTP '+res.status);
|
||||
let items = await res.json();
|
||||
if (!Array.isArray(items) || items.length === 0) items = [];
|
||||
|
||||
// Update background images of zoom slider slides if present
|
||||
const slides = document.querySelectorAll('.lte-slider-zoom .zs-slides .zs-slide');
|
||||
// If slides are not yet initialized by the plugin, try again shortly
|
||||
if (!slides || slides.length === 0) {
|
||||
setTimeout(updateHeroFromLatest, 600);
|
||||
return;
|
||||
}
|
||||
|
||||
// Track which IDs are used in the carousel
|
||||
const usedIds = [];
|
||||
|
||||
// Slide 0 is always the intro post 0000
|
||||
const slide0 = slides[0];
|
||||
if (slide0) {
|
||||
usedIds.push('0000');
|
||||
slide0.style.backgroundImage = `url('img/blog/0000.png')`;
|
||||
const content0 = document.querySelector(`.lte-zs-slider-inner.lte-zs-slide-0`);
|
||||
if (content0) {
|
||||
const btn0 = content0.querySelector('a.lte-btn');
|
||||
if (btn0) btn0.setAttribute('href', 'blog/0000.html');
|
||||
// Do not alter existing H2 text; designers may have custom text
|
||||
}
|
||||
}
|
||||
|
||||
// Fill remaining slides with latest posts, skipping 0000
|
||||
const rest = items.filter(it => it && it.id !== '0000');
|
||||
const max = Math.min(rest.length, Math.max(0, slides.length - 1));
|
||||
for (let i = 0; i < max; i++) {
|
||||
const it = rest[i];
|
||||
if (it && it.id) usedIds.push(it.id);
|
||||
const slide = slides[i+1];
|
||||
if (!slide) continue;
|
||||
slide.style.backgroundImage = `url('${it.image}')`;
|
||||
const content = document.querySelector(`.lte-zs-slider-inner.lte-zs-slide-${i+1}`);
|
||||
if (content) {
|
||||
const header = content.querySelector('h2.lte-header');
|
||||
if (header) header.textContent = it.title || '';
|
||||
const btn = content.querySelector('a.lte-btn');
|
||||
if (btn) btn.setAttribute('href', it.link);
|
||||
}
|
||||
}
|
||||
|
||||
// Expose used IDs so other widgets can exclude them (e.g., 4-post grid)
|
||||
window.CAROUSEL_BLOG_IDS = usedIds;
|
||||
} catch (e) {
|
||||
console.error('home-autofill hero update error', e);
|
||||
}
|
||||
}
|
||||
|
||||
function onReady(fn){
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn); else fn();
|
||||
}
|
||||
|
||||
onReady(() => {
|
||||
// Delay a bit to allow zoomslider to initialize, then update
|
||||
setTimeout(updateHeroFromLatest, 500);
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user