このブログをNetlify + Nuxtへ移行する時、Google AdSense
も移しました。
Adsenseの広告ユニットのコードを貼り付けていくと、似たコードが至る所にあり嫌なのでいい方法はないかと調べました。
Nuxtのためのモジュールが見つかったのでその使い方を解説していきます。
@nuxtjs/google-adsense
nuxt-communityからGoogle AdSenseのためのモジュールgoogle-adsense-moduleが提供されているので、それを使います。
ライセンス形態はMIT Licenseなので大丈夫ですね。
使い方は簡単です。
インストール後にnuxt.config.js
へ記述して、挿入したいところに<adsbygoogle/>
を追加するだけです。
以下、GitHubを参考に解説していく。 尚、ドメインの取得やGoogle AdSenseへの登録と審査はすでに終えているものとします。
install
npm install --save @nuxtjs/google-adsense
--save
でpackage.jsonに記録している。
このブログはNetlifyを使ってホスティングしているため必須。
モジュールをnuxt.config.jsに記述する
nuxt.config.js
{
modules: [
// Simple usage
['@nuxtjs/google-adsense', {
id: 'ca-pub-###########'
}]
]
}
id
にAdSenseのidを記述する。
idはAdSenseのアカウント情報にあるサイト運営者 ID
です。
####
はpub-から続く数字が入ります。先頭のca-
は必ずつけてください。
自動広告はデフォルトでオフになったいるため、使う場合はpageLevelAds: true
を追加します。
広告を挿入する
広告の場所を指定するには、テンプレートの中に<adsbygoogle/>
を追加します。
また、v-bindを使っていくつかのパラメータを渡せます。
<template>
<!-- 広告の挿入 -->
<adsbygoogle />
<!-- 指定する広告ユニットの挿入 -->
<adsbygoogle v-bind:ad-slot="'1234567890'" />
</template>
広告ユニットを指定する場合は、ad-slot
に広告ユニットのIDを渡します。
この時、IDは数値ではなく文字列として渡してあげる必要があります。そのため、'シングルクォーテーション'などで囲ってください。
<template>
<!-- 広告ユニットの挿入 OK -->
<adsbygoogle :ad-slot="'1234567890'" />
<!-- 広告ユニットの挿入 NG -->
<adsbygoogle :ad-slot="1234567890" />
<!-- ERROR [Vue warn]: Invalid prop: type check failed for prop "adSlot". Expected String, got Number. -->
<!-- これも多分いける -->
<adsbygoogle data-ad-slot="1234567890" />
</template>
はじめ:ad-slot
でエラーが出るためdata-ad-slot="1234567890"
としていましたが、広告が表示されていました。
確証はありませんので、OKの方法を利用してください。
いくつかのpropの抜粋と雑解説。正確には公式をみてください。
prop | type | description |
---|---|---|
ad-slot | String | 広告ユニットのID。文字列として渡す必要がある。 |
ad-format | String | レスポンシブ広告。デフォルトは'auto'。 |
ad-style | Object | <ins> のスタイルを指定する。デフォルトは{ display: 'block' } |
ad-layout | String | レイアウトの設定。'in-article'など。 |
おわりに
NuxtでAdSenseを利用する(おそらく)最適解が見つかってスッキリしました。
また、このブログのNetlify + Nuxtの構成もまとめていきたいです。