striker 6f2cfdd63d feat: счётчики с consent, политика, фиксы дизайна
Дизайн-фиксы:
- Перенесены картинки из старого 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/
2026-05-21 02:07:08 +03:00

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 постов 20092015, мигрированы из 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). Архив 20092015 остаётся на сайте для людей, но в форумы не вбрасывается одной волной.

Разработка

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
anotherreflections.ru v2 � Astro 5 static site (markdown + RSS for IPB importer)
Readme 578 KiB
Languages
Astro 41.9%
CSS 23.5%
JavaScript 18.4%
TypeScript 15.2%
Dockerfile 1%