NextJs (7) MetaData
在 Next.js 中,metadata 設定是針對 Next.js 13 及更新版本中使用 App Router(app/ 資料夾)的一個特性。如果你使用的是 app 資料夾結構,你可以在每個頁面的 page.js 文件中定義 metadata。
全域設定
你可以在 app/layout.js 文件中設定全局的 metadata。這樣所有的頁面都會繼承這些設定。
1 | // app/layout.js |
頁面級別設定
你也可以在特定頁面的 page.js 文件中設定該頁面的 metadata。
1 | // app/your-page/page.js |
動態 metadata
假設你有一個商品頁面,並且想要根據商品的 ID 動態設置每個文章頁面的 metadata。你可以使用 generateMetadata 函數,並透過 URL 參數來取得文章資料。
1 | export const generateMetadata = ({ params }) => { |
title 設定為物件
你可以在 metadata 裡將 title 定義為物件,並使用 template 來自定義標題的格式。template 是一個字串,會插入指定的頁面標題。
1 | // app/layout.js |
- default: 如果頁面沒有設定特定標題,這個值將會用作頁面的標題。
- template: 這是一個格式化字串,其中 %s 會被具體頁面的標題替換。例如,如果頁面的標題是 “產品頁面”,那麼最終顯示的標題會是 “產品頁面 | 我的網站名稱”。
在個別頁面元件內設定的 title 會和 template 結合
1 | // about.js |
如果個別頁面的 title 不想和 template 結合,可使用 absolute
1 | // blog.js |