Nuxt.jsでtitleタグやmetaタグの設定方法をメモ。
サンプルコード
nuxt.config.jsのheadプロパティでデフォルトの値を設定できます。
export default {
head: {
title: '共通タイトル',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'format-detection', content: 'telephone=no' },
{
hid: 'description',
name: 'description',
content: '共通ディスクリプション'
},
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
}
}
この場合、各ページで以下のような出力になります。
<title>共通タイトル</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="format-detection" content="telephone=no"> <meta data-hid="description" name="description" content="共通ディスクリプション"> <link rel="icon" type="image/x-icon" href="/favicon.ico">
個別に設定する場合、各ページ内でheadを使って設定します。
export default {
head: {
title: '個別ページタイトル',
meta: [
{
hid: 'description',
name: 'description',
content: '個別ページ説明'
}
],
}
}
これで設定したページのtitleとディスクリプションが個別の内容になりました。
<title>個別ページタイトル</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="format-detection" content="telephone=no"> <meta data-hid="description" name="description" content="個別ページ説明"> <link rel="icon" type="image/x-icon" href="/favicon.ico">
headを関数にすることで、dataの値を使用することもできます。
export default {
data() {
return {
title: '個別タイトル'
}
},
head() {
return {
title: this.title,
meta: [
{
hid: 'description',
name: 'description',
content: '個別ページ説明'
}
],
}
}
}
dataのtitleに変更できました。
<title>個別タイトル</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="format-detection" content="telephone=no"> <meta data-hid="description" name="description" content="個別ページ説明"> <link rel="icon" type="image/x-icon" href="/favicon.ico">
titleで部分的に共通化したい場合、nuxt.config.jsでtitleTemplateを使用します。
export default {
head: {
title: '共通タイトル',
titleTemplate: '%s - サイト名',
〜 略 〜
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
}
}
titleTemplateの「%s」部分に、各ページのheadで設定しているtitleの値が入ります。
前述の例の場合、以下のようになります。
<title>個別タイトル - サイト名</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="format-detection" content="telephone=no"> <meta data-hid="description" name="description" content="個別ページ説明">
トップページなど一部で共通タイトルを使用したくない場合、個別でtitleTemplateにnullを設定します。
export default {
head: {
title: 'トップページ',
titleTemplate: null,
meta: [
{
hid: 'description',
name: 'description',
content: 'トップページ説明'
}
],
}
}
これで共通タイトルは使用されず、titleで設定した内容のみが表示されます。
<title>トップページ</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="format-detection" content="telephone=no"> <meta data-hid="description" name="description" content="トップページ説明"> <link rel="icon" type="image/x-icon" href="/favicon.ico">
コメントが承認されるまで時間がかかります。