# Twitterシェアボタンを設置しました!
# ボタン作成
まずはTwitterシェアボタンを作成していきます。 公式のボタン生成ページがあるのでそちらを利用します。
- 下の方にスクロールすると見える Twitter Buttons をクリック
- Share Button をクリック → ボタンの貼り付け用コードとプレビューが表示されます。
- 「That’s all we need, unless you’d like to set customization options.」をクリックで内容をカスタマイズ
- Update を押して内容を更新する → ボタンのプレビューが更新されます。
カスタマイズで Language を Japanese にすると日本語表示になります。
# コンポーネント化する
このサイトはVuepressで作られていますので、このTwitterボタンもVueコンポーネントにしていきたいと思います。 まずはコピーしたタグを展開してみましょう。
<a
href="https://twitter.com/share?ref_src=twsrc%5Etfw"
class="twitter-share-button"
data-size="large"
data-text="| Plus oneブログ"
data-url="https://plus-one.tech/"
data-lang="ja"
data-show-count="false"
>
Tweet
</a>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8" />
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
こうしてみると、どのプロパティに何を入れたらいいのかひと目でわかりますね。 さらに、scriptの読み込みは一箇所にまとめてしまっても良さそうです。
最終的に下記のような形に落ち着きました。
TwitterShareButton.vue(クリックで展開)
<template>
<a
href="https://twitter.com/share?ref_src=twsrc%5Etfw"
class="twitter-share-button"
:data-url="dataUrl"
:data-text="dataText"
:data-lang="lang"
:data-size="large ? 'large' : undefined"
:data-show-count="showCount"
>
Tweet
</a>
</template>
<script>
export default {
name: 'TwitterShareButton',
props: {
url: { type: String },
text: { type: String },
lang: { type: String, default: 'ja' },
large: { type: Boolean, default: false },
showCount: { type: Boolean, default: false },
},
computed: {
dataUrl () {
return this.url || location.protocol + '//' + location.host + this.$page.path
},
dataText () {
return (this.text || this.$page.title) + ' | ' + this.$siteTitle + ' @plus_one_masaki'
},
},
/**
* ボタン用スクリプトの読み込み
*/
mounted () {
const twitterWidgetScript = document.createElement('script')
twitterWidgetScript.src = 'https://platform.twitter.com/widgets.js'
twitterWidgetScript.async = true
document.body.appendChild(twitterWidgetScript)
},
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
facebookなども同じ感じでできるようなので、ぜひお試しください!