export const getLessonsSection = async(slug) => {
const response = await fetch( `${ baseApi }api/fullsinglecat/${slug }`, {
cache: "no-store",
}
);
if( !response.ok ) throw new Error( "Ошибка при получении секции" );
return response.json();
};
export default async function LessonsSectionPage({ params }) {
const lessonsSection = await getLessonsSection( params.section );
return (
....
)
}
const [ lessonSection, setLessonSection ] = useState( {} );
const [ lessonCategory, setLessonCategory ] = useState( {} );
const segments = useSelectedLayoutSegments();
useEffect( () => {
async function f() {
if( segments.length > 0 ) {
const newSection = await getLessonsSection( segments[ 0 ] );
setLessonSection( newSection );
}
if( segments.length > 1 ) {
const newCategory = await getLessonsSection( segments[ 1 ] );
setLessonCategory( newCategory );
}
}
f();
}, [ segments, lessonSection, lessonCategory ] );
export default async function LessonsSectionPage({ params }) {
const lessonsSection = await getLessonsSection( params.section );
const lessonChildrens = lessonsSection.cats.children_categories;
return (
<section
className={ `${ styles[ "lessons-section" ] } section` }
>
<h2 className="title">{ lessonsSection.cats.title }</h2>
{
lessonChildrens.length > 0 ? (
<ul className={ styles[ "lessons-section__list" ] }>
{
lessonChildrens.map( category => {
return (
<LessonsSectionItem
key={ category.slug }
lessonsSection={lessonsSection}
category={ category }
/>
);
} )
}
</ul>
)
: null
}
</section>
);
}
import { baseApi } from "@/utils/constants";
export const getLessonsSection = async(slug) => {
const response = await fetch( `${ baseApi }api/fullsinglecat/${slug }`, {
cache: "no-store",
}
);
if( !response.ok ) throw new Error( "Ошибка при получении секции" );
return response.json();
};
export default async function LessonsCatalogLayout({ children, }) {
return (
<>
<div className="lessons-catalog-layout">
<BreadcrumbsWrap
/>
<div className={ styles[ "lessons-catalog-wrap" ] }>
<LeftCatalogMenu />
{ children }
</div>
</div>
</>
);
}
(в нем нужно получать путь в адресной строке, что я делаю через const segments = useSelectedLayoutSegments()). И этот компонент должен получать данные
breadcrumbs next example
и смотришь как реализовали другие А чтобы перевести это все на кириллицу, мне и нужно получать данные с сервера, и уже из этих данных брать title, который на кириллице, и который я и использую в хлебных крошкахесли у тебя где-то массив есть с переводом, пф - заюзай его в хлебных крошках, чё париться, в общем я подсказал, думаю дальше уже справишься, удачи)