diff --git a/src/components/ContentGrid.astro b/src/components/ContentGrid.astro index 66297e7..f01cc99 100644 --- a/src/components/ContentGrid.astro +++ b/src/components/ContentGrid.astro @@ -11,7 +11,7 @@ export interface Props { hasNextPage: boolean; endCursor: string | null; }; - perLoad?: number; // Переименовали first в perLoad + perLoad?: number; } const { @@ -20,15 +20,14 @@ const { type = 'latest', slug = '', pageInfo = { hasNextPage: false, endCursor: null }, - perLoad = 11 // perLoad на верхнем уровне с дефолтом 11 + perLoad = 11 } = Astro.props; -// Формируем конфиг для sentinel из пропсов верхнего уровня -// Внутри оставляем поле first для совместимости с API и скриптом +// Используем perLoad везде const loadMoreConfig = { type, slug, - first: perLoad // Маппим perLoad в first для обратной совместимости + perLoad // Теперь используем perLoad вместо first }; function getCoauthorsNames(coauthors: any[]): string { @@ -163,7 +162,7 @@ function shouldBeLarge(index: number): boolean { interface LoadMoreConfig { type: 'latest' | 'category' | 'author' | 'tag'; slug?: string; - perLoad?: number; // В скрипте оставляем first для совместимости + perLoad: number; // Только perLoad, никакого first } class InfinityScroll { @@ -186,15 +185,25 @@ function shouldBeLarge(index: number): boolean { this.noMorePosts = document.getElementById('no-more-posts'); this.postsCount = document.getElementById('posts-count'); - const defaultConfig: LoadMoreConfig = { type: 'latest', first: 11 }; + // Дефолтный конфиг только с perLoad + const defaultConfig: LoadMoreConfig = { + type: 'latest', + perLoad: 11 + }; if (this.sentinel) { this.endCursor = this.sentinel.dataset.endCursor || null; this.currentIndex = parseInt(this.sentinel.dataset.currentIndex || '0'); try { - this.loadMoreConfig = JSON.parse(this.sentinel.dataset.loadConfig || '{}'); - this.loadMoreConfig = { ...defaultConfig, ...this.loadMoreConfig }; + // Парсим конфиг из data-атрибута + const parsedConfig = JSON.parse(this.sentinel.dataset.loadConfig || '{}'); + this.loadMoreConfig = { + ...defaultConfig, + ...parsedConfig, + // Убеждаемся, что perLoad определен + perLoad: parsedConfig.perLoad || defaultConfig.perLoad + }; } catch { this.loadMoreConfig = defaultConfig; } @@ -233,13 +242,14 @@ function shouldBeLarge(index: number): boolean { this.showLoading(); try { + // Отправляем только perLoad (никакого first) const response = await fetch('/load-more-posts', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ - perLoad: this.loadMoreConfig.perLoad || 11, + perLoad: this.loadMoreConfig.perLoad, after: this.endCursor, type: this.loadMoreConfig.type, slug: this.loadMoreConfig.slug, @@ -248,7 +258,7 @@ function shouldBeLarge(index: number): boolean { }); if (!response.ok) { - throw new Error('Ошибка загрузки постов'); + throw new Error(`Ошибка загрузки постов: ${response.status}`); } const html = await response.text(); @@ -274,7 +284,8 @@ function shouldBeLarge(index: number): boolean { this.grid?.appendChild(fragment); - this.currentIndex += this.loadMoreConfig.first || 11; + // Используем perLoad для увеличения индекса + this.currentIndex += this.loadMoreConfig.perLoad; this.endCursor = newEndCursor; this.hasMore = hasNextPage; diff --git a/src/components/Header/Header.astro b/src/components/Header/Header.astro index 1aefcb6..0d8e9fa 100644 --- a/src/components/Header/Header.astro +++ b/src/components/Header/Header.astro @@ -1,5 +1,7 @@ --- + const { category } = Astro.props; + import Stores from './LazyStores.astro'; import MainMenu from '@components/MainMenu.astro'; @@ -12,6 +14,11 @@
diff --git a/src/components/NewsSingle.astro b/src/components/NewsSingle.astro index 0d92bba..d5185cb 100644 --- a/src/components/NewsSingle.astro +++ b/src/components/NewsSingle.astro @@ -4,6 +4,7 @@ import Author from '@components/AuthorDisplay.astro'; import Subscribe from '@components/SubscribePost.astro'; import ShareButtons from '@components/ShareButtons.astro'; + interface Props { post: any; pageInfo?: any; diff --git a/src/layouts/MainLayout.astro b/src/layouts/MainLayout.astro index cd844f4..cc0ddbd 100644 --- a/src/layouts/MainLayout.astro +++ b/src/layouts/MainLayout.astro @@ -1,6 +1,6 @@ --- -const { title, description } = Astro.props; +const { title, description, category } = Astro.props; import Header from '../components/Header/Header.astro'; import Header_lite from '../components/Header/Header_lite.astro'; @@ -28,7 +28,7 @@ import '../styles/global.css';