⊗jsnxPmLtCMd 37 of 57 menu

NextJS'te İçerikten Dinamik Meta Veri Aktarımı

Önceki derste, site içeriğinde meta verileri nasıl belirleyeceğimizi öğrendik. Bu yöntem iyidir, ancak her zaman uygulanamaz. Sorun şu ki, sayfanın meta verileri dinamik route parametresine bağlı olarak değişebilir.

Bir örnek üzerinden inceleyelim. Diyelim ki, kullanıcıyı id'ye göre göstermek için içerik dosyamız var. Bu dosyada kullanıcılardan oluşan bir dizi olduğunu varsayalım:

let users = [ 'user1', 'user2', 'user3', 'user4', 'user5', ];

Şimdi, iletilen parametreye karşılık gelen kullanıcının verilerini gösterelim:

export default function User({ params }) { return <> <h1>user {params.id}</h1> <p> name: {users[params.id]} </p> </>; }

Şimdi problemimize geri dönelim. Farklı kullanıcıları gösterdiğimiz için, onlar için meta veriler de farklı olmalı. Bunları parametrenin değerine bağlı olarak dinamik bir şekilde oluşturmalıyız.

Bu, bileşenimizden dışa aktarmamız gereken özel bir generateMetadata fonksiyonu kullanılarak yapılır:

export const generateMetadata = () => { return { title: '', description: '', }; };

Bu fonksiyonda route parametreleri bize açıktır:

export const generateMetadata = ({params}) => { console.log(params); };

Parametre değerine bağlı olarak doğru meta verileri döndürelim:

export const generateMetadata = ({params}) => { return { title: `Page for user {params.id}`, description: `Description for user "{users[params.id]}"`, }; };

/post/:id şeklindeki adresleri işleyen bir route yapın, burada :id yerine herhangi bir sayı gelebilir.

Aşağıdaki dizi verilmiştir:

let 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() { }

Belirtilen id'ye göre ilgili gönderinin HTML çıktısının gösterilmesini, ayrıca doğru başlık ve meta açıklamanın ayarlanmasını sağlayın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet