mirror of
https://github.com/StepanovPlaton/AboutMe.git
synced 2026-04-03 20:30:49 +04:00
New page
This commit is contained in:
@@ -155,6 +155,12 @@ collections:
|
||||
- { label: "Site URL", name: "siteurl", widget: "string" }
|
||||
- { label: "Tags", name: "tags", widget: "list", required: false, default: [] }
|
||||
|
||||
- name: "worth-mentioning"
|
||||
label: "Worth Mentioning"
|
||||
file: "src/content/worth-mentioning.md"
|
||||
fields:
|
||||
- { label: "Body", name: "body", widget: "markdown" }
|
||||
|
||||
|
||||
editor:
|
||||
preview: true
|
||||
@@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
@@ -7,7 +8,7 @@
|
||||
<script>
|
||||
// КРИТИЧНО: Переопределяем window.location.origin ПЕРЕД загрузкой DecapCMS
|
||||
// Это гарантирует, что DecapCMS будет использовать правильный URL без порта 8091
|
||||
(function() {
|
||||
(function () {
|
||||
const correctOrigin = 'https://stepanovplaton.ru';
|
||||
const originalLocation = window.location;
|
||||
|
||||
@@ -18,7 +19,7 @@
|
||||
// Переопределяем window.location.origin
|
||||
try {
|
||||
Object.defineProperty(window.location, 'origin', {
|
||||
get: function() {
|
||||
get: function () {
|
||||
// Если origin содержит порт 8091, возвращаем правильный origin
|
||||
if (originalOrigin.includes(':8091')) {
|
||||
return correctOrigin;
|
||||
@@ -39,7 +40,7 @@
|
||||
|
||||
// Также переопределяем host для полной совместимости
|
||||
Object.defineProperty(window.location, 'host', {
|
||||
get: function() {
|
||||
get: function () {
|
||||
const host = originalLocation.host;
|
||||
if (host.includes(':8091')) {
|
||||
return host.replace(':8091', '');
|
||||
@@ -52,7 +53,7 @@
|
||||
|
||||
// Переопределяем hostname
|
||||
Object.defineProperty(window.location, 'hostname', {
|
||||
get: function() {
|
||||
get: function () {
|
||||
return 'stepanovplaton.ru';
|
||||
},
|
||||
configurable: true,
|
||||
@@ -61,7 +62,7 @@
|
||||
|
||||
// Переопределяем port
|
||||
Object.defineProperty(window.location, 'port', {
|
||||
get: function() {
|
||||
get: function () {
|
||||
return '';
|
||||
},
|
||||
configurable: true,
|
||||
@@ -70,7 +71,7 @@
|
||||
|
||||
// Переопределяем protocol
|
||||
Object.defineProperty(window.location, 'protocol', {
|
||||
get: function() {
|
||||
get: function () {
|
||||
return 'https:';
|
||||
},
|
||||
configurable: true,
|
||||
@@ -85,13 +86,15 @@
|
||||
</script>
|
||||
<script src="https://unpkg.com/decap-cms@^3.0.0/dist/decap-cms.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
// Проверка после загрузки
|
||||
window.addEventListener('load', function() {
|
||||
window.addEventListener('load', function () {
|
||||
console.log('[DecapCMS Fix] Загружено. Текущий origin:', window.location.origin);
|
||||
console.log('[DecapCMS Fix] Текущий host:', window.location.host);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -9,9 +9,10 @@ interface Props {
|
||||
page: Page;
|
||||
class?: string;
|
||||
style?: string;
|
||||
basePath?: string; // Базовый путь для генерации URL (например, "/news" для главной страницы)
|
||||
}
|
||||
|
||||
const { page, style } = Astro.props;
|
||||
const { page, style, basePath } = Astro.props;
|
||||
|
||||
const HIDDEN = -1;
|
||||
|
||||
@@ -48,7 +49,14 @@ if (r === page.lastPage - 2) pages.push(page.lastPage - 1);
|
||||
if (r < page.lastPage) pages.push(page.lastPage);
|
||||
|
||||
const getPageUrl = (p: number) => {
|
||||
if (p === 1) return "/";
|
||||
if (p === 1) {
|
||||
// Первая страница всегда на корне
|
||||
return "/";
|
||||
}
|
||||
// Если указан basePath, используем его для всех страниц кроме первой
|
||||
if (basePath) {
|
||||
return `${basePath}/${p}/`;
|
||||
}
|
||||
return `/${p}/`;
|
||||
};
|
||||
---
|
||||
|
||||
@@ -51,6 +51,7 @@ const linkPresetNameMap: Record<string, LinkPreset> = {
|
||||
Anime: LinkPreset.Anime,
|
||||
About: LinkPreset.About,
|
||||
Friends: LinkPreset.Friends,
|
||||
WorthMentioning: LinkPreset.WorthMentioning,
|
||||
};
|
||||
|
||||
const normalizeNavbarLink = (
|
||||
|
||||
@@ -64,4 +64,10 @@ export const LinkPresets: { [key in LinkPreset]: NavbarLink } = {
|
||||
icon: "material-symbols:info",
|
||||
description: i18n(I18nKey.about),
|
||||
},
|
||||
[LinkPreset.WorthMentioning]: {
|
||||
name: i18n(I18nKey.worthMentioning),
|
||||
url: "/worth-mentioning/",
|
||||
icon: "material-symbols:star",
|
||||
description: i18n(I18nKey.worthMentioningSubtitle),
|
||||
},
|
||||
};
|
||||
@@ -1,18 +1,19 @@
|
||||
# About This Site
|
||||
# Об этом сайте
|
||||
|
||||
Twilight is a CMS integrated static blog template built with [Astro](https://astro.build) framework.
|
||||
Добро пожаловать на сайт Степанова Платона. Тут много информации обо мне, моих проектах, навыках, увлечениях, мои новости. Я хотел собрать всё это в одном месте, чтобы удобно делиться своим опытом и представляться в интернете.
|
||||
**Пишите, буду рад новым знакомым!**
|
||||
|
||||
---
|
||||
|
||||
## Достойны упоминания
|
||||
Если вам понравился этот сайт, вы так же можете [посмотреть проекты других людей, которые я считаю достойными упоминания](../worth-mentioning/)
|
||||
|
||||
---
|
||||
|
||||
## Создать свой сайт
|
||||
Если вам понравился этот сайт и вы хотите создать что-то подобное для себя, то эти репозитории вам помогут:
|
||||
|
||||
**Шаблон для Astro Twilight который лежит в основе моего сайта**
|
||||
::github{repo="Spr-Aachen/Twilight"}
|
||||
|
||||
|
||||
## Milestones
|
||||
|
||||
- Integrated content management system in [#1](https://github.com/Spr-Aachen/Twilight/pull/1)
|
||||
- Seamless wallpaper mode switching in [#2](https://github.com/Spr-Aachen/Twilight/pull/2)
|
||||
- Dynamic content container response in [#47](https://github.com/Spr-Aachen/Twilight/pull/47)
|
||||
- Seamless page component loading in [#48](https://github.com/Spr-Aachen/Twilight/pull/48)
|
||||
- Smart music playback handling in [#49](https://github.com/Spr-Aachen/Twilight/pull/49)
|
||||
- Infinite-level navigation system in [#50](https://github.com/Spr-Aachen/Twilight/pull/50)
|
||||
- Comprehensive statistics dashboard in [#51](https://github.com/Spr-Aachen/Twilight/pull/51)
|
||||
- Low-barrier configuration scheme in [#58](https://github.com/Spr-Aachen/Twilight/pull/58)
|
||||
- Dynamic breakpoint handling in [#68](https://github.com/Spr-Aachen/Twilight/pull/68)
|
||||
**Исходный код моего сайта**
|
||||
::github{repo="StepanovPlaton/AboutMe"}
|
||||
|
||||
111
src/content/worth-mentioning.md
Normal file
111
src/content/worth-mentioning.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# Посмотрите также
|
||||
|
||||
Раз уж у меня появился свой уголок в интернете, я посчитал нужным поделиться с вами классными проектами других людей. Здесь вы найдёте и другие сайты, и книги, и видеоигры, от популярных до нишевых — **всё, что я хочу показать миру**.
|
||||
|
||||
## О дварфах!
|
||||
|
||||
История моей аватарки (стилистики этого сайта, моего сервера и много чего ещё) берёт своё начало с **[легендарной игры DwarfFortress](http://www.bay12games.com/dwarves/)**. Эта игра для меня пример **гениальности, усидчивости и абсурда** в одном лице.
|
||||
|
||||
<details>
|
||||
<summary>Я не могу советовать её вам (потому что это игра не для всех), но был обязан упомянуть на своём сайте</summary>
|
||||
|
||||
Её движок настолько сложен, что долгое время к нему не могли добавить графику. За **более чем 20 лет разработки** она готова менее чем наполовину, её делают два брата на пожертвования от фанатов, и при всём этом ей вдохновлялись создатели Minecraft и Rimworld, а в 2013 Нью-Йоркский музей современного искусства включил игру в свою коллекцию.
|
||||
|
||||
Это лучший симулятор историй. Обязательно почитайте [историю крепости Боутмёрдед](https://dtf.ru/games/22946-legendy-dwarf-fortress-saga-o-padenii-kreposti-boutmerded) — эти легенды тянут на эпичный фильм от Netflix, но это просто обычная игра в DwarfFortress. Да, здесь можно тренировать дварфов бегать на костылях быстрее, чем на ногах, стреляя в них монетками. Да, на вас может напасть огромная адская автоматически сгенерированная... попа. И да, ваши дварфы могут умереть не только от гоблинов, но и от кошек, безумия, миазмов, одинаковой выпивки и даже сушняка...
|
||||
|
||||
Эта игра не для всех, но я боюсь в неё заходить, потому что потом не могу выйти.
|
||||
|
||||
И помните... Проигрывать весело!
|
||||
</details>
|
||||
|
||||
## Карандаш и Самоделкин
|
||||
|
||||
У всякой истории есть начало. Я начал свою историю отсюда: [Блог команды "Карандаш и Самоделкин"](https://karandashsamodelkin.blogspot.com). Передавайте привет маленькому мне и **большое спасибо моему отцу**!
|
||||
|
||||
## Классные сайты
|
||||
|
||||
Интернет огромен, и в нём куча страниц. Некоторые популярны, другие не очень, но эти особенно интересны:
|
||||
|
||||
+ [Онлайн книга Linux From Scratch](https://linuxfromscratch.org) — бесплатное руководство по созданию своей GNU/Linux системы из исходного кода (с нуля). Лучшее развлечение на вечер для админа.
|
||||
+ [Этаж 796](https://floor796.com) — проект русского художника, который объединил на 796 этаже космической станции всех самых знаковых персонажей, гиков, мемов, фильмов, комиксов и сериалов человечества. Тут залип на 2 часа...
|
||||
+ [SCP Foundation](https://scpfoundation.net) — открытая научно-фантастическая онлайн вселенная. Мурашки по коже, невозможно оторваться. Обязательно прочтите [SCP-079 — Старый ИИ](https://scpfoundation.net/scp-079) и [Хаб отдела антимеметики](https://scpfoundation.net/antimemetics-division-hub).
|
||||
+ [CashGo](https://cashgo.ru) — онлайн игра, тренажёр финансового интеллекта. Здесь я успел ухватить кусочек старого интернета с ламповыми форумами. Спасибо за детство, передавайте привет Оксюше, Пингвинатко, Успеху и Лису!
|
||||
+ [Неолурк](https://neolurk.org) — народная википедия.
|
||||
|
||||
## IT
|
||||
|
||||
+ [Brainfuck](https://ru.wikipedia.org/wiki/Brainfuck) — эзотерический язык программирования из 8 команд.
|
||||
+ [KISS](https://ru.wikipedia.org/wiki/KISS_(принцип)) — делай проще, тупица.
|
||||
+ [Быстрый обратный квадратный корень](https://ru.wikipedia.org/wiki/Быстрый_обратный_квадратный_корень) — магическая функция приближённого вычисления $1/\sqrt{x}$ из Quake.
|
||||
+ [В††](https://neolurk.org/wiki/В%2B%2B) — язык программирования русских богатырей.
|
||||
+ [Suckless](https://suckless.org) — эталон минимализма. Обязательно зацените [dwm](https://dwm.suckless.org) и [st](https://st.suckless.org).
|
||||
+ [9600 бод и все-все-все](https://lib.ru/ANEKDOTY/9600.txt) — Винни Пух стал хакером времён FIDONET.
|
||||
+ [Nand2Tetris](https://www.nand2tetris.org) — собираем 16-битный компьютер из логических блоков, пишем компилятор, операционную систему и видеоигры. Курс от MIT.
|
||||
|
||||
## Видеоигры
|
||||
|
||||
+ [DwarfFortress](https://ru.wikipedia.org/wiki/Dwarf_Fortress) — симулятор строительства и управления пьяными дварфами. Лучший генератор историй.
|
||||
+ [Chrono Trigger](https://ru.wikipedia.org/wiki/Chrono_Trigger) — лучшая JRPG из мира ретро-видеоигр. Хочу поделиться этой игрой как дань уважения винтажным видеоиграм и разработчикам, которые их писали (на ассемблере!!). Chrono Trigger — венец творения той эпохи!
|
||||
+ [Doom](https://ru.wikipedia.org/wiki/Doom) - легендарная игра, одна из первых псевдотрёхмерных видеоигр от первого лица.
|
||||
+ [Baldur's Gate III](https://ru.wikipedia.org/wiki/Baldur's_Gate_3) — лучшая RPG от легендарной Larian Studios. Если когда-нибудь пойду в GameDev, то только к ним.
|
||||
+ [Lode Runner](https://ru.wikipedia.org/wiki/Lode_Runner) — люблю эту игру (версию под ZXSpectrum). Одна из тысяч игр той эпохи. Я однажды даже [написал её клон](https://rutracker.org/forum/viewtopic.php?t=5885455). Когда-нибудь я всё же пройду её до конца...
|
||||
+ [Elite](https://ru.wikipedia.org/wiki/Elite) — космический симулятор, который помещался на ленту в 22Кб. 8 галактик по 256 планет в каждой.
|
||||
+ [НЕВЕРьвХУДо](https://ru.wikipedia.org/wiki/The_Neverhood) — приключение-головоломка из пластилина. [Саундтрек обязателен к прослушиванию](https://youtu.be/Wh4WnHlsbvM?si=VMTHX2Itt5Vwxr1b).
|
||||
+ [.kkrieger](https://ru.wikipedia.org/wiki/.kkrieger) — 3D видеоигра размером в 96 килобайт.
|
||||
|
||||
## Кино и сериалы
|
||||
|
||||
+ [Теория большого взрыва](https://www.kinopoisk.ru/series/306084/) — `Всё становится лучше с Bluetooth!`
|
||||
+ [Компьютерщики](https://www.kinopoisk.ru/series/386715/) — `Алло, техподдержка. Вы пробовали выключить и снова включить?`
|
||||
+ [Mr. Freeman](https://www.kinopoisk.ru/series/630080/) — `Большим можно оставаться и будучи маленьким`
|
||||
+ [Масяня](https://www.kinopoisk.ru/series/447446/) — [Как-то один енот жил толстый как барсуууук...](https://www.youtube.com/watch?v=GWpF9LIhXhk)
|
||||
+ [Revolution OS](https://www.youtube.com/watch?v=n1F_MfLRlX0) — история OpenSource и ядра Linux в озвучке Дмитрия Бачило.
|
||||
|
||||
## Книги
|
||||
|
||||
Я не очень люблю читать книги, но просто обожаю слушать их аудиоверсии. Это книги которые кажутся мне классными. Я специально не стал писать их в список, иначе просто не смог бы определить порядок. Некоторые из них полезные, некоторые развлекательные, некоторые известные, другие нет. Может быть ты найдёшь здесь что-то для себя!
|
||||
|
||||
| | | |
|
||||
|---|---|---|
|
||||
| Азимов Айзек — Основание (цикл) | Адамс Дуглас — Автостопом по галактике | Арриан Флавий — Энхиридион (Краткое руководство к нравственной жизни) |
|
||||
| Бабайкин — На пенсию в 35 лет | Богомазов Валентин — 3017 (цикл) | Валерьев Андрей — Фаранг (цикл) |
|
||||
| Вейр Энди — Марсианин | Вейр Энди — Проект «Аве Мария» | Гессе Герман — Сиддхартха |
|
||||
| Дивoв Олег — Лучший экипаж Солнечной | Дивoв Олег — Техподдержка | Дик Филип Киндред — Убик |
|
||||
| Дик Филип Киндред — Мечтают ли андроиды об электроовцах? | Дорофеев Максим — Джедайские техники | Злотников Роман — Руигат (цикл) |
|
||||
| Ильин Владимир — Шериф | Казанцев Сергей — Баг | Каменистый Артем — Исчадие техно (цикл) |
|
||||
| Каменистый Артем — Самый странный нуб (трилогия) | Каменистый Артем — Альфа-ноль (цикл) | Кинг Стивен — Долгая прогулка |
|
||||
| Кинг Стивен — Бегущий человек | Кларк Артур — 2001: Космическая одиссея (цикл) | Клейсон Джордж — Самый богатый человек в Вавилоне |
|
||||
| Кострица Евгений — Рарник (цикл) | Кравец Сергей — Спираль времени (цикл) | Лем Станислав — Сказки роботов |
|
||||
| Лукьяненко Сергей — Линия грёз (цикл) | Лю Цысинь — Задача трех тел (трилогия) | Лю Цысинь — Блуждающая земля |
|
||||
| Марков Алексей — Хулиномика | Марков Алексей — Жлобология | Мэнсон Марк — Всё хреново: книга о надежде |
|
||||
| Мэнсон Марк — Тонкое искусство пофигизма | Мэнсон Марк — Мужские правила | Оруэлл Джордж — 1984 |
|
||||
| Пелевин Виктор — Тайные виды на гору Фудзи | Пелевин Виктор — Омон Ра | Пильюччи Массимо — Как быть стоиком |
|
||||
| Рейнольдс Аластер — Дождь забвения | Ринпоче Йонге Мингьюр — Будда, мозг и нейрофизиология счастья | Ринпоче Йонге Мингьюр — Радостная мудрость |
|
||||
| Рус Дмитрий — Играть, чтобы жить (цикл) | Рэнд Айн — Атлант расправил плечи | Саберхаген Фред — Берсеркер |
|
||||
| Смородинский Георгий — Семнадцатое обновление (цикл) | Смородинский Георгий — Черный барон (цикл) | Смородинский Георгий — Перекресток одиночества |
|
||||
| Стругацкие Аркадий и Борис — Трудно быть богом | Стругацкие Аркадий и Борис — Понедельник начинается в субботу | Стругацкие Аркадий и Борис — Пикник на обочине |
|
||||
| Тармашев Сергей — Ареал (цикл) | Тармашев Сергей — Древний (цикл) | Тармашев Сергей — Каждому своё (цикл) |
|
||||
| Тармашев Сергей — Тьма (цикл) | Франкл Виктор — Сказать жизни «Да!» | Фромм Эрих — Искусство любить |
|
||||
| Хаксли Олдос — О дивный новый мир | Харари Юваль Ной — Sapiens: Краткая история человечества | Харари Юваль Ной — Homo Deus: Краткая история будущего |
|
||||
| Хокинг Стивен — Краткая история времени | Хокинг Стивен — Высший замысел | Шаман Павел — Система дефрагментации (цикл) |
|
||||
| Шаров Кирилл — Проект «Изоляция» (цикл) | Юдковский Элиезер — Гарри Поттер и методы рационального мышления | Юнг Карл Густав — Аналитическая психология: Тавистокские лекции |
|
||||
| Ямамото Цунэтомо — Хагакурэ. Сокрытое в листве | | |
|
||||
|
||||
## Музыка
|
||||
|
||||
+ [ГРОТ](https://grotmusic.ru) - не просто музыка, а текст и глубокий смысл.
|
||||
+ [HTP](https://vk.com/nii_rap) - если вы из IT просто полистайте, это весело.
|
||||
|
||||
## Кумиры
|
||||
|
||||
В той или иной мере меня вдохновляют эти люди:
|
||||
+ [Линус Торвальдс](https://ru.wikipedia.org/wiki/Торвальдс,_Линус) — самый значимый OpenSource проект.
|
||||
+ [Павел Дуров](https://t.me/durov) — Telegram и борьба за свободу в интернете.
|
||||
+ [Тарн и Зак Адамс](https://bay12games.com) - самая амбициозая инди-игра.
|
||||
+ [Глеб Карпов](https://www.youtube.com/@glebprosto) — Просто о сложном и важном.
|
||||
|
||||
## Разное
|
||||
|
||||
Это просто классные вещи, зацените их!
|
||||
|
||||
+ [Цикада 3301](https://habr.com/ru/companies/ruvds/articles/714806/) — одна из самых больших загадок интернета 2010-х.
|
||||
@@ -188,6 +188,10 @@ enum I18nKey {
|
||||
// 友链页面
|
||||
friends = "friends",
|
||||
|
||||
// 值得提及的 проекты
|
||||
worthMentioning = "worthMentioning",
|
||||
worthMentioningSubtitle = "worthMentioningSubtitle",
|
||||
|
||||
// RSS页面
|
||||
rss = "rss",
|
||||
rssDescription = "rssDescription",
|
||||
|
||||
@@ -111,8 +111,8 @@ export const ru: Translation = {
|
||||
[Key.skillLevelAdvanced]: "Продвинутый",
|
||||
[Key.skillLevelExpert]: "Эксперт",
|
||||
[Key.skillExperience]: "Опыт",
|
||||
[Key.skillYears]: " г.",
|
||||
[Key.skillMonths]: " мес.",
|
||||
[Key.skillYears]: " г",
|
||||
[Key.skillMonths]: " мес",
|
||||
[Key.skillsTotal]: "Всего навыков",
|
||||
[Key.skillsExpert]: "Экспертный уровень",
|
||||
[Key.skillsAdvanced]: "Продвинутый",
|
||||
@@ -163,8 +163,8 @@ export const ru: Translation = {
|
||||
[Key.diaryDaysAgo]: "дней назад",
|
||||
|
||||
// Страница альбомов
|
||||
[Key.albums]: "Портфолио", //"Альбомы",
|
||||
[Key.albumsSubtitle]: "Записывайте прекрасные моменты жизни",
|
||||
[Key.albums]: "Медиа", //"Альбомы",
|
||||
[Key.albumsSubtitle]: "Скриншоты моих работ и многое другое",
|
||||
[Key.albumsEmpty]: "Нет содержимого",
|
||||
[Key.albumsEmptyDesc]: "Альбомы ещё не созданы. Добавьте прекрасные воспоминания!",
|
||||
[Key.albumsBackToList]: "Вернуться к альбомам",
|
||||
@@ -191,6 +191,10 @@ export const ru: Translation = {
|
||||
// Страница друзей
|
||||
[Key.friends]: "Друзья",
|
||||
|
||||
// Страница проектов достойных упоминания
|
||||
[Key.worthMentioning]: "Посмотрите также",
|
||||
[Key.worthMentioningSubtitle]: "Проекты достойные упоминания",
|
||||
|
||||
// Страница RSS
|
||||
[Key.rss]: "RSS лента",
|
||||
[Key.rssDescription]: "Подпишитесь, чтобы получать последние обновления",
|
||||
|
||||
@@ -7,7 +7,10 @@ import { LinkPresets } from "@constants/link-presets";
|
||||
import { url } from "@utils/url";
|
||||
import GridLayout from "@layouts/grid.astro";
|
||||
import { siteConfig } from "@/config";
|
||||
|
||||
import PostPage from "@components/postPage.astro";
|
||||
import { PAGE_SIZE } from "@constants/constants";
|
||||
import { getSortedPosts } from "@utils/content";
|
||||
import Pagination from "@components/pagination.astro";
|
||||
|
||||
// Получаем все ссылки из navbar, включая основные и с подразделами
|
||||
const allLinks: NavbarLink[] = [];
|
||||
@@ -25,23 +28,34 @@ navbarConfig.links.forEach(link => {
|
||||
}
|
||||
});
|
||||
|
||||
// Добавляем ссылку на новости/ленту постов
|
||||
const newsLink: NavbarLink = {
|
||||
name: "Новости",
|
||||
url: "/news/",
|
||||
icon: "material-symbols:article",
|
||||
description: "Лента постов и статей",
|
||||
};
|
||||
|
||||
// Вставляем ссылку на новости в начало списка
|
||||
allLinks.unshift(newsLink);
|
||||
|
||||
const pageTitle = siteConfig.title;
|
||||
const pageDescription = siteConfig.subtitle || "";
|
||||
|
||||
const allBlogPosts = await getSortedPosts();
|
||||
const firstPagePosts = allBlogPosts.slice(0, PAGE_SIZE);
|
||||
const totalPages = Math.ceil(allBlogPosts.length / PAGE_SIZE);
|
||||
|
||||
const page = {
|
||||
currentPage: 1,
|
||||
lastPage: totalPages,
|
||||
size: PAGE_SIZE,
|
||||
total: allBlogPosts.length,
|
||||
data: firstPagePosts.map((post, index) => ({
|
||||
...post,
|
||||
index: index + 1,
|
||||
})),
|
||||
url: {
|
||||
current: "/",
|
||||
prev: undefined,
|
||||
next: totalPages > 1 ? url("/news/2/") : undefined,
|
||||
},
|
||||
};
|
||||
const len = page.data.length;
|
||||
|
||||
---
|
||||
|
||||
<GridLayout title={pageTitle} description={pageDescription}>
|
||||
<div class="flex w-full rounded-(--radius-large) overflow-hidden relative min-h-32">
|
||||
<div class="flex w-full rounded-(--radius-large) overflow-hidden relative min-h-32 mb-3">
|
||||
<div class="card-base z-10 px-9 py-6 relative w-full">
|
||||
<!-- Заголовок -->
|
||||
<header class="mb-8">
|
||||
@@ -84,6 +98,10 @@ const pageDescription = siteConfig.subtitle || "";
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<PostPage page={page}></PostPage>
|
||||
{totalPages > 1 && (
|
||||
<Pagination class="mx-auto onload-animation-up" page={page} style={`animation-delay: ${(len)*50}ms`} basePath="/news"></Pagination>
|
||||
)}
|
||||
</GridLayout>
|
||||
|
||||
<style>
|
||||
|
||||
@@ -27,10 +27,12 @@ const stats = getProjectStats();
|
||||
const featuredProjects = getFeaturedProjects();
|
||||
const allTechStack = getAllTechStack();
|
||||
|
||||
// 获取所有分类
|
||||
const categories = [
|
||||
...new Set(projectsData.map((project) => project.category)),
|
||||
];
|
||||
// 定义分类顺序
|
||||
const categoryOrder = ["actual", "history", "other"];
|
||||
|
||||
// 获取所有分类并按指定顺序排序
|
||||
const allCategories = [...new Set(projectsData.map((project) => project.category))];
|
||||
const categories = categoryOrder.filter(cat => allCategories.includes(cat));
|
||||
|
||||
// 按分类获取项目
|
||||
const projectsByCategory = categories.reduce(
|
||||
|
||||
35
src/pages/worth-mentioning.astro
Normal file
35
src/pages/worth-mentioning.astro
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
export const prerender = true;
|
||||
|
||||
|
||||
import { getEntry, render } from "astro:content";
|
||||
|
||||
import { LinkPresets } from "@constants/link-presets";
|
||||
import { LinkPreset } from "@/types/config";
|
||||
import Markdown from "@components/common/markdown.astro";
|
||||
import GridLayout from "@layouts/grid.astro";
|
||||
import BackwardButton from "@components/backwardButton.astro";
|
||||
|
||||
|
||||
const pageTitle = LinkPresets[LinkPreset.WorthMentioning].name;
|
||||
const pageDescription = LinkPresets[LinkPreset.WorthMentioning].description;
|
||||
|
||||
const worthMentioningPost = await getEntry("spec", "worth-mentioning");
|
||||
|
||||
if (!worthMentioningPost) {
|
||||
throw new Error("Worth mentioning page content not found");
|
||||
}
|
||||
|
||||
const { Content } = await render(worthMentioningPost);
|
||||
---
|
||||
|
||||
<GridLayout title={pageTitle} description={pageDescription}>
|
||||
<div class="flex w-full rounded-(--radius-large) overflow-hidden relative min-h-32">
|
||||
<div class="card-base z-10 px-9 py-6 relative w-full ">
|
||||
<BackwardButton currentPath={Astro.url.pathname} />
|
||||
<Markdown class="mt-2">
|
||||
<Content />
|
||||
</Markdown>
|
||||
</div>
|
||||
</div>
|
||||
</GridLayout>
|
||||
@@ -210,6 +210,7 @@ export enum LinkPreset {
|
||||
Anime = 7,
|
||||
About = 8,
|
||||
Friends = 9,
|
||||
WorthMentioning = 10,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ site:
|
||||
kenBurns: true
|
||||
banner:
|
||||
homeText:
|
||||
enable: false
|
||||
enable: true
|
||||
title: "Степанов Платон"
|
||||
subtitle:
|
||||
- "Программный инженер, разработчик"
|
||||
@@ -95,15 +95,11 @@ navbar:
|
||||
- "Projects"
|
||||
- "Skills"
|
||||
- "Timeline"
|
||||
- name: "Разное"
|
||||
url: "/exhibition/"
|
||||
icon: "material-symbols:check-box"
|
||||
description: ""
|
||||
children:
|
||||
- "Diary"
|
||||
- "Albums"
|
||||
- "Friends"
|
||||
- "About"
|
||||
# - "Diary"
|
||||
- "Albums"
|
||||
# - "Friends"
|
||||
- "WorthMentioning"
|
||||
- "About"
|
||||
|
||||
sidebar:
|
||||
components:
|
||||
@@ -131,14 +127,17 @@ sidebar:
|
||||
profile:
|
||||
avatar: "/assets/images/avatar.jpg"
|
||||
name: "Степанов Платон"
|
||||
bio: ""
|
||||
bio: "Приятно познакомиться!"
|
||||
links:
|
||||
- name: "GitHub"
|
||||
icon: "fa6-brands:github"
|
||||
- name: "Git"
|
||||
icon: "fa6-brands:git-alt"
|
||||
url: "https://git.stepanovplaton.ru"
|
||||
- name: "Telegram"
|
||||
icon: "fa6-brands:telegram"
|
||||
url: "https://t.me/StepanovPlaton"
|
||||
- name: "Email"
|
||||
icon: "material-symbols:mail-outline"
|
||||
url: "mailto:mail2platon@yandex.ru"
|
||||
|
||||
announcement:
|
||||
enable: false
|
||||
|
||||
Reference in New Issue
Block a user