6f2cfdd63d88957936747ca1a434f947d4b82a1f
Дизайн-фиксы: - Перенесены картинки из старого WP в public/wp-content/uploads/ (header_bg.gif + 3 размера NY-baner.png 2014/12). migrate-wp.mjs обновлён: корректно обрабатывает <a><img></a>, переписывает абсолютные URL anotherreflections.ru/wp-content/... в относительные - Description в frontmatter теперь чистый plain text — без markdown-разметки - Слаги 11/95/152 → kto-my, s-23-fevralya-2011, s-nastupayushhim-novym-2012-godom - Hero-метрика: «N лет онлайн» → «с 2006 года» (последний пост 2015, активной жизни «20 лет» нет) - Drop cap (буквица) — только для постов длиннее 240 символов (короткие посты раньше выглядели обрезанными) Аналитика и конфиденциальность: - Яндекс.Метрика (counter 13938862, webvisor) и Google gtag (GT-PH39R3X) перенесены со старого WP - Cookie consent banner — самописный, без зависимостей: счётчики грузятся только после явного «Принять». Выбор хранится в localStorage + cookie ar-consent на 12 месяцев. Уведомление в духе 152-ФЗ - /privacy/ — полная политика конфиденциальности: что собираем (через Метрику и GA), для чего, как cookies устроены, права пользователя, контакт для запросов на удаление - В футере добавлены ссылки «Политика конфиденциальности» и «Контакты» - sitemap.txt + llms.txt включают /privacy/
anotherreflections.ru — v2
Главный сайт-портал ролевой группы «Иные Отражения» — переделан со старого WordPress (тема darkness-10) на статический Astro 5.
Стек
- Astro 5 + Content Collections (markdown)
- @astrojs/rss — RSS-фиды (общий + per-category), формат под IPB RSS Importer
- @astrojs/sitemap — sitemap.xml автоматически
- sanitize-html — очистка HTML тела поста для
<content:encoded>в RSS
Содержимое
src/content/posts/*.md— 50 постов 2009–2015, мигрированы из WP (frontmatter включаетlegacyIdдля трассировки иcategorySlugsдля категорий)src/content/pages/*.md— 6 страниц:/o-nas/,/nashi-druzya/, страницы про игрыsrc/content/_categories.json— справочник категорий из WP (10 шт.)_wp-export.json— исходный дамп WP, оставлен в репо для трассируемости миграции; не используется в build
Структура URL
/— главная (лента всех постов)/<slug>/— пост или статическая страница/category/<slug>/— лента категории/feed.xml— общий RSS/category/<slug>/feed.xml— RSS категории/sitemap-index.xml— sitemap
URL постов совпадают с историческими WP-slug, т.к. permalink_structure='/%postname%/'. Никаких 301-редиректов не требуется — slug сохранены 1:1.
RSS для IPB Importer
Фид заточен под ACP → Community → RSS Feeds → Add Feed:
- RSS 2.0 strict,
<pubDate>в RFC-822, абсолютные<link> <guid isPermaLink="true">= URL поста — IPB по нему дедуплицирует темы при повторных сканах<content:encoded>с CDATA — полное HTML тело поста, IPB подставит его в тело темы<lastBuildDate>обновляется при каждом build — Importer проверяет, изменился ли фид- Cutoff: фид отдаёт только посты с
pubDate >= RSS_CUTOFF(см.src/consts.ts). Архив 2009–2015 остаётся на сайте для людей, но в форумы не вбрасывается одной волной.
Разработка
npm install
npm run dev # http://localhost:4321
npm run build # → dist/
npm run preview
Миграция (одноразово, уже выполнено)
npm run migrate # _wp-export.json → src/content/{posts,pages}/*.md
Скрипт scripts/migrate-wp.mjs конвертирует HTML тела постов в markdown (минимальный конвертер без внешних зависимостей: <a>/<strong>/<em>/<li>/<ul>/<blockquote>/<br>/<p> + HTML entities).
Деплой
Контейнер nginx:alpine на web.hhivp.com, шаблон по образцу stbolshevik.ru (CI/CD: Gitea → SSH-деплой на свободный порт). См. CLAUDE.md после первого деплоя.
История
- v1: WordPress 6.9 + тема
darkness-10+ 23 активных плагина, БДanotherreflctions_ru(sic) наdb.hhivp.com, контейнерanotherreflections-ru:4080наweb.hhivp.com. Репо:git.striker.su/striker/anotherreflections-website(веткаfeat/dockerize). Оставлен для отката. - v2 (этот репо): Astro 5 static, 2026-05-20.
Description
Languages
Astro
41.9%
CSS
23.5%
JavaScript
18.4%
TypeScript
15.2%
Dockerfile
1%