header.wp-block-template-part, footer.wp-block-template-part, .wp-block-post-title, .wp-block-spacer, .entry-header, .site-header, .site-footer, #masthead, #colophon, .ast-breadcrumbs-wrapper, .wp-block-navigation { display: none !important; } html, body { margin: 0 !important; padding: 0 !important; width: 100% !important; max-width: 100% !important; overflow-x: hidden !important; background-color: #f0f2f5 !important; font-family: ‘Inter’, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif !important; color: #050505 !important; } .wp-site-blocks, .wp-block-post-content, .entry-content, .is-layout-constrained, .is-layout-flow, .wp-block-group, main, #wp–skip-link–target, .entry-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)), .ast-container, #primary, #content, .site-content { padding: 0 !important; margin: 0 !important; max-width: 100% !important; width: 100% !important; } h1, h2, h3, h4, h5, h6 { font-family: ‘Manrope’, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif !important; letter-spacing: -0.01em !important; } :root { –fb-blue: #1877f2; –fb-blue-hover: #166fe5; –fb-bg: #f0f2f5; –fb-card: #ffffff; –fb-text-primary: #050505; –fb-text-secondary: #65676b; –fb-border: #cbd5e1; –fb-hover: #f2f2f2; –fb-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } .mm-fb-wrapper { background-color: var(–fb-bg); min-height: 100vh; display: flex; flex-direction: column; } .mm-fb-topbar { position: sticky; top: 0; z-index: 1000; height: 56px; background: var(–fb-card); box-shadow: 0 1px 3px rgba(0,0,0,0.1); display: flex; align-items: center; justify-content: space-between; padding: 0 16px; box-sizing: border-box; } .mm-fb-top-left { display: flex; align-items: center; } .mm-fb-top-brand-box { display: flex; flex-direction: column; align-items: center; justify-content: center; text-decoration: none; width: 260px; } .mm-logo-row { display: flex; align-items: center; justify-content: center; gap: 4px; } .mm-logo-moe { font-family: ‘PT Serif’, Georgia, serif; font-size: 20px; font-weight: 700; color: #1877f2; letter-spacing: 0.04em; text-transform: uppercase; line-height: 1.1; } .mm-logo-misto { font-family: ‘PT Serif’, Georgia, serif; font-size: 19px; font-weight: 700; color: #0f172a; letter-spacing: 0.04em; text-transform: uppercase; border: 1.5px solid #0f172a; padding: 0 5px; border-radius: 2px; line-height: 1.1; display: inline-block; } .mm-logo-sub-tag { font-size: 9.5px; font-weight: 700; color: #65676b; letter-spacing: 0.08em; text-transform: uppercase; margin-top: 2px; text-align: center; font-family: ‘Inter’, sans-serif; display: block; } .mm-fb-top-center { display: flex; align-items: center; gap: 6px; height: 100%; } .mm-fb-tab-item { display: flex; align-items: center; justify-content: center; padding: 0 16px; height: 100%; color: var(–fb-text-secondary); text-decoration: none; font-size: 14.5px; font-weight: 700; border-bottom: 3px solid transparent; transition: all 0.15s ease; } .mm-fb-tab-item:hover { background-color: var(–fb-hover); color: var(–fb-text-primary); } .mm-fb-tab-item.active { color: var(–fb-blue); border-bottom: 3px solid var(–fb-blue); } .mm-fb-top-right { display: flex; align-items: center; gap: 8px; } .mm-fb-action-btn { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 12px; border-radius: 6px; font-size: 13px; font-weight: 700; text-decoration: none; } .mm-fb-container { max-width: 1360px; width: 100%; margin: 16px auto; padding: 0 16px; display: grid; grid-template-columns: 280px 1fr 300px; gap: 16px; align-items: start; box-sizing: border-box; } .mm-fb-sidebar-left { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 72px; } .mm-fb-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; } .mm-fb-sidebar-right { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 72px; } .mm-fb-card { background: var(–fb-card); border-radius: 8px; box-shadow: var(–fb-shadow); border: 1px solid var(–fb-border); box-sizing: border-box; } @media (max-width: 1200px) and (min-width: 981px) { .mm-fb-container { grid-template-columns: 250px 1fr 270px; gap: 12px; padding: 0 10px; } } @media (max-width: 980px) { .mm-fb-topbar { height: 52px !important; padding: 0 10px !important; gap: 6px !important; } .mm-fb-top-left { flex-shrink: 0 !important; } .mm-fb-top-brand-box { width: auto !important; align-items: flex-start !important; } .mm-logo-moe { font-size: 16px !important; } .mm-logo-misto { font-size: 15px !important; padding: 0 3px !important; } .mm-logo-sub-tag { display: none !important; } .mm-fb-top-center { gap: 4px !important; flex-shrink: 0 !important; margin: 0 auto !important; display: flex !important; } .mm-fb-tab-item { padding: 0 12px !important; font-size: 14px !important; display: flex !important; align-items: center !important; } .mm-fb-top-right { gap: 4px !important; flex-shrink: 0 !important; } .mm-fb-action-btn { height: 30px !important; padding: 0 8px !important; font-size: 11.5px !important; } .mm-fb-action-btn:last-child { display: none !important; } .mm-fb-container { display: flex !important; flex-direction: column !important; padding: 0 10px !important; margin: 10px auto !important; gap: 12px !important; } .mm-fb-sidebar-left, .mm-fb-sidebar-right { width: 100% !important; position: static !important; display: flex !important; } } @media (max-width: 480px) { .mm-fb-topbar { padding: 0 6px !important; } .mm-fb-tab-item { padding: 0 8px !important; font-size: 13px !important; } .mm-fb-action-btn { padding: 0 6px !important; font-size: 11px !important; } } @media (min-width: 821px) { #mm-daily-extended-details > summary { display: none !important; } #mm-daily-extended-details > div { border-top: none !important; } }

МОЄ МІСТО — інформаційний портал міста Глобине

💡 Маєте новину чи пропозицію для громади?
Написати ▾
function submitFeedback_mm_fb() { var msgEl = document.getElementById(‘mm-fb-msg’); var contactEl = document.getElementById(‘mm-fb-contact’); var btn = document.getElementById(‘mm-fb-btn’); var msg = msgEl ? msgEl.value.trim() : ”; var contact = contactEl ? contactEl.value.trim() : ”; if (!msg) { alert(‘Будь ласка, напишіть текст повідомлення.’); if (msgEl) msgEl.focus(); return; } btn.disabled = true; btn.textContent = ‘Надсилаємо…’; fetch(‘/wp-json/mm/v1/submit-feedback’, { method: ‘POST’, headers: { ‘Content-Type’: ‘application/json’ }, body: JSON.stringify({ message: msg, contact: contact, page: ‘Головна сторінка’ }) }) .then(function(res) { return res.json(); }) .then(function(data) { btn.disabled = false; btn.textContent = ‘Надіслати’; if (msgEl) msgEl.value = ”; if (contactEl) contactEl.value = ”; var box = document.getElementById(‘mm-quick-feedback-box’); if (box) box.style.display = ‘none’; alert(‘✅ Дякуємо! Ваше повідомлення успішно надіслано.’); }) .catch(function(err) { btn.disabled = false; btn.textContent = ‘Надіслати’; alert(‘Повідомлення надіслано. Дякуємо!’); }); }
🇺🇦 Важливо

Підтримка Сил Оборони — справа щодня

🤝 Армія тримає фронт. Тил тримає армію. Кожен внесок — це наближення нашої перемоги.
Знайдіть свій спосіб допомогти через перевірені благодійні фонди та офіційні рахунки Збройних Сил.
(function () { function decodeHtml(html) { var txt = document.createElement(‘textarea’); txt.innerHTML = html || ”; return txt.value; } function cleanExcerpt(raw) { if (!raw) return ”; var decoded = decodeHtml(raw); var div = document.createElement(‘div’); div.innerHTML = decoded; var text = (div.textContent || div.innerText || ”).replace(/s+/g, ‘ ‘).trim(); if (text.length > 220) { text = text.substring(0, 217).replace(/s+S*$/, ”) + ‘…’; } return text; } function extractDay(title, slug) { var m = (title || ”).match(/[Дд]еньs*(d+)/i) || (slug || ”).match(/den[-_]?(d+)/i) || (slug || ”).match(/(d{3,4})/); return m ? parseInt(m[1], 10) : null; } function formatUaDate(iso) { try { var d = new Date(iso); return d.toLocaleDateString(‘uk-UA’, { day: ‘numeric’, month: ‘long’, year: ‘numeric’ }); } catch (e) { return ”; } } function txt(id, v) { var el = document.getElementById(id); if (el && v != null) el.textContent = v; } function href(id, v) { var el = document.getElementById(id); if (el && v) { el.setAttribute(‘href’, v); el.setAttribute(‘target’, ‘_blank’); el.setAttribute(‘rel’, ‘noopener’); } } function apply(post) { if (!post) return; var title = decodeHtml(post.title && post.title.rendered ? post.title.rendered : ”); var day = extractDay(title, post.slug); var dateStr = formatUaDate(post.date); var excerpt = cleanExcerpt(post.excerpt && post.excerpt.rendered ? post.excerpt.rendered : ”); var url = post.link || ‘/war-chronicle/’; var media = post._embedded && post._embedded[‘wp:featuredmedia’] && post._embedded[‘wp:featuredmedia’][0]; var img = document.getElementById(‘mm-home-img’); if (img) { if (media && media.source_url) { img.src = media.source_url + (media.source_url.indexOf(‘?’) !== -1 ? ‘&’ : ‘?’) + ‘v=’ + Date.now(); } img.alt = title || ‘Хроніка війни’; } if (day) { txt(‘mm-home-day-badge’, ‘ДЕНЬ ‘ + day); txt(‘mm-home-prev’, ‘← День ‘ + (day – 1)); var prevUrl = url.replace(/den[-_]?(d+)/i, function (m, n) { return m.replace(n, String(parseInt(n, 10) – 1)); }).replace(/(d{3,4})(?!.*d)/, function (m) { return String(parseInt(m, 10) – 1); }); if (prevUrl === url) prevUrl = ‘/war-chronicle/?day=’ + (day – 1); href(‘mm-home-prev’, prevUrl); var ar = document.getElementById(‘mm-home-archive’); if (ar) ar.textContent = ‘Архів хроніки (‘ + day + ‘ днів)’; } if (dateStr) { txt(‘mm-home-date-str’, ‘🗓 ‘ + dateStr + ‘ • Щоденний оперативний аналіз’); } if (excerpt) { txt(‘mm-home-excerpt’, excerpt); } href(‘mm-home-img-link’, url); href(‘mm-home-read-link’, url); href(‘mm-home-archive’, ‘/war-chronicle/’); } function load() { fetch(‘/wp-json/wp/v2/posts?categories=3&per_page=1&orderby=date&order=desc&_embed=1&_t=’ + Date.now(), { cache: ‘no-store’ }) .then(function (r) { if (!r.ok) throw new Error(‘HTTP ‘ + r.status); return r.json(); }) .then(function (posts) { if (posts && posts.length) { apply(posts[0]); } }) .catch(function (err) { console.warn(‘War chronicle load error:’, err); txt(‘mm-home-day-badge’, ‘ДЕНЬ 1640’); txt(‘mm-home-date-str’, ‘🗓 22 серпня 2026 • Щоденний оперативний аналіз’); txt(‘mm-home-excerpt’, ‘Протягом минулої доби Сили оборони знешкодили штурмові групи окупантів на Покровському, Торецькому та інших напрямках, завдали нищівних ударів по пунктах управління та скупченнях живої сили ворога…’); href(‘mm-home-read-link’, ‘/2026/08/22/yak-zahyshhalasya-ukrayina-den-1640/’); href(‘mm-home-img-link’, ‘/2026/08/22/yak-zahyshhalasya-ukrayina-den-1640/’); href(‘mm-home-prev’, ‘/2026/08/21/yak-zahyshhalasya-ukrayina-den-1639/’); var ar = document.getElementById(‘mm-home-archive’); if (ar) ar.textContent = ‘Архів хроніки (1640 днів)’; }); } load(); function kyivNow() { try { return new Date(new Date().toLocaleString(‘en-US’, { timeZone: ‘Europe/Kyiv’ })); } catch (e) { return new Date(); } } setInterval(function () { var now = kyivNow(); if (now.getHours() >= 8 && now.getMinutes() % 10 === 0) { load(); } }, 60000); })();
📰

Стрічка новин громади

Громада та місто
(function () { var list = document.getElementById(‘mm-news-feed-list’); var button = document.getElementById(‘mm-load-more-btn’); var text = document.getElementById(‘mm-load-more-text’); var spinner = document.getElementById(‘mm-load-more-spinner’); if (!list || !button) return; var page = 1; var totalPages = 1; var loading = false; function clean(value) { var el = document.createElement(‘div’); el.innerHTML = value || ”; return el.textContent || ”; } function createCard(post) { var article = document.createElement(‘article’); article.className = ‘mm-fb-card’; article.style.cssText = ‘padding:14px 16px;background:#fff;’; var link = post.link; var title = clean(post.title.rendered); var excerpt = clean(post.excerpt.rendered); var date = new Date(post.date).toLocaleDateString(‘uk-UA’, { day: ‘numeric’, month: ‘long’, year: ‘numeric’ }); var media = post._embedded && post._embedded[‘wp:featuredmedia’] && post._embedded[‘wp:featuredmedia’][0]; var imageBox = document.createElement(‘div’); imageBox.style.cssText = ‘flex:0 0 110px;width:110px;height:85px;border-radius:6px;overflow:hidden;background:#f1f5f9;border:1px solid #e2e8f0;’; // ФІКС: fallback на inline-зображення з post.content.rendered, якщо немає featured_media. // Давні публікації (до 22.08.2026) не мають featured_media, але мають inline-зображення. var imgUrl = (media && media.source_url) ? media.source_url : ”; if (!imgUrl && post.content && post.content.rendered) { var m = post.content.rendered.match(/]+src=[“‘]([^”‘]+)[“‘]/i); if (m) imgUrl = m[1]; } // ФІКС: fallback на _mm_image_url meta (інфографіки в archive_images/) — // для публікацій без featured_media і без inline-зображень. if (!imgUrl && post.meta && post.meta._mm_image_url) { imgUrl = post.meta._mm_image_url; } if (imgUrl) { var image = document.createElement(‘img’); image.src = imgUrl; image.alt = title; image.style.cssText = ‘width:100%;height:100%;object-fit:cover;display:block;’; imageBox.appendChild(image); } else { imageBox.style.display = ‘flex’; imageBox.style.alignItems = ‘center’; imageBox.style.justifyContent = ‘center’; imageBox.textContent = ‘Новина’; } var imageLink = document.createElement(‘a’); imageLink.href = link; imageLink.style.textDecoration = ‘none’; imageLink.appendChild(imageBox); var content = document.createElement(‘div’); content.style.cssText = ‘flex:1 1 0;min-width:0;’; var meta = document.createElement(‘div’); meta.style.cssText = ‘display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;flex-wrap:wrap;gap:4px;’; var category = document.createElement(‘span’); category.textContent = ‘Міський архів’; category.style.cssText = ‘font-size:11px;font-weight:700;color:#1877f2;background:#f0f7ff;padding:1px 6px;border-radius:4px;border:1px solid #dbeafe;’; var dateEl = document.createElement(‘span’); dateEl.textContent = date; dateEl.style.cssText = ‘font-size:11.5px;color:#64748b;’; meta.appendChild(category); meta.appendChild(dateEl); var heading = document.createElement(‘h3’); heading.style.cssText = ‘font-family:Manrope,sans-serif;font-size:15.5px;font-weight:800;line-height:1.35;margin:0 0 6px;’; var titleLink = document.createElement(‘a’); titleLink.href = link; titleLink.textContent = title; titleLink.style.cssText = ‘color:#0f172a;text-decoration:none;’; heading.appendChild(titleLink); var paragraph = document.createElement(‘p’); paragraph.textContent = excerpt; paragraph.style.cssText = ‘font-size:13px;color:#334155;line-height:1.45;margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;’; var readLink = document.createElement(‘a’); readLink.href = link; readLink.textContent = ‘Читати повністю’; readLink.style.cssText = ‘font-size:12.5px;font-weight:700;color:#1877f2;text-decoration:none;’; content.appendChild(meta); content.appendChild(heading); content.appendChild(paragraph); content.appendChild(readLink); var row = document.createElement(‘div’); row.style.cssText = ‘display:flex;gap:14px;align-items:flex-start;’; row.appendChild(imageLink); row.appendChild(content); article.appendChild(row); return article; } function setLoading(value) { loading = value; button.disabled = value; text.textContent = value ? ‘Завантаження…’ : ‘Показати ще публікації’; spinner.style.display = value ? ‘inline’ : ‘none’; } function loadPosts() { if (loading || page > totalPages) return; setLoading(true); fetch(‘/wp-json/wp/v2/categories?slug=miskyj-arhiv’) .then(function (response) { if (!response.ok) throw new Error(‘Категорію не знайдено’); return response.json(); }) .then(function (categories) { if (!categories.length) throw new Error(‘Категорія порожня’); return fetch( ‘/wp-json/wp/v2/posts?categories=’ + categories[0].id + ‘&per_page=6&page=’ + page + ‘&_embed=1’ ); }) .then(function (response) { if (!response.ok && response.status !== 400) { throw new Error(‘Не вдалося завантажити публікації’); } totalPages = parseInt( response.headers.get(‘X-WP-TotalPages’) || ‘1’, 10 ); return response.json(); }) .then(function (posts) { posts.forEach(function (post) { list.appendChild(createCard(post)); }); page += 1; if (page > totalPages || !posts.length) { button.style.display = ‘none’; } }) .catch(function () { if (!list.children.length) { list.textContent = ‘Не вдалося завантажити публікації.’; } }) .finally(function () { setLoading(false); }); } button.addEventListener(‘click’, loadPosts); loadPosts(); })();
© 2020–2026 «МОЄ МІСТО — Глобине» • Інформаційний портал міста
Спільнота взаємодопомоги та новин Глобинської громади