Transmetimi Dinamik i Metatëdhënave nga Përmbajtja në NextJS
Në mësimin e mëparshëm mësuam të vendosnim metatëdhënat në përmbajtjen e faqes. Kjo metodë është e mirë, por nuk zbatohet gjithmonë. Çështja është se metatëdhënat e faqes mund të ndryshojnë në varësi të parametrit të rrugës dinamike.
Le të shohim një shembull.
Le të themi se kemi një skedar me përmbajtje
për të shfaqur një përdorues sipas id të tij.
Le të themi se në këtë skedar ka
një grup me përdorues:
app/users/[id]/page.jsxlet users = [
'user1',
'user2',
'user3',
'user4',
'user5',
];
Le të shfaqim të dhënat e përdoruesit, që korrespondon me parametrin e transmetuar:
app/users/[id]/page.jsxexport default function User({ params }) {
return <>
<h1>user {params.id}</h1>
<p>
name: {users[params.id]}
</p>
</>;
}
Le të kalojmë tani te problemi ynë. Meqenëse po shfaqim përdorues të ndryshëm, atëherë edhe metatëdhënat për ta duhet të jenë të ndryshme. Ne duhet t'i formësojmë ato në mënyrë dinamike, në varësi të vlerës së parametrit.
Kjo bëhet duke përdorur një funksion të veçantë
generateMetadata,
të cilin duhet ta eksportojmë
nga komponenti ynë:
src/app/test/page.jsxexport const generateMetadata = () => {
return {
title: '',
description: '',
};
};
Në këtë funksion na janë të disponueshëm parametrat e rrugës:
src/app/test/page.jsxexport const generateMetadata = ({params}) => {
console.log(params);
};
Le të kthejmë metatëdhënat e duhura në varësi të vlerës së parametrit:
src/app/test/page.jsxexport const generateMetadata = ({params}) => {
return {
title: `Page for user {params.id}`,
description: `Description for user "{users[params.id]}"`,
};
};
Krijoni një rrugë, që përpunon adresat
të formës /post/:id, ku në vend të :id
mund të jetë çdo numër.
Le të jetë dhënë grupi i mëposhtëm:
page.jsxlet posts = [
{
id: '1',
title: 'post 1',
desc: 'description for post 1',
text: 'text1 text1 text1 text1 text1 text1 text1 text1',
},
{
id: '2',
title: 'post 2',
desc: 'description for post 2',
text: 'text2 text2 text2 text2 text2 text2 text2 text2',
},
{
id: '3',
title: 'post 3',
desc: 'description for post 3',
text: 'text3 text3 text3 text3 text3 text3 text3 text3',
},
];
export default function Post() {
}
Bëni që për id-në e dhënë të shfaqet layout-i i duhur i postimit, si dhe të vendoset titulli i duhur dhe përshkrimi meta.