【Blogger/QooQ】SNSシェアボタンよりURLコピーボタンの方が便利な気がする

ブログを見た人が、他の人へ簡単に紹介したり出来るSNSシェアボタン。
実は、個人的には使い勝手が良いとは思えず
あまり使っていない機能です。

最近、記事タイトルやURLをクリップボードにコピーするボタンが設置されているサイトを見かけます。


記事タイトルとURLをコピーするボタンを追加

考えて見ればURLとタイトルのコピーする機能で事は足りるんですよね。
クリップボードにコピーしておけば、メモパッドやメールにも貼付けておけます。

調べた所、クリップボードにコピーするスクリプトclipboard.jsがMITライセンスでリリースされています。
このスクリプトを利用すればBloggerでもコピーボタンが設置できそうです。
Bloggerの場合CDNを利用する事になるので、お好きなCDN プロバイダーからclipboard.jsを読み込みます。
CDN Providers


HTMLを変更します

テーマ(テンプレート)のバックアップを取ってから変更しましょう。

HTMLの変更はBloggerの管理画面より テーマ>>HTMLの編集と進みテンプレートのHTMLを変更します。尚、変更については自己責任でお願いします。
今回はQooQの変更になります。

JQueryの読込を追加

スクリプトが使える様にするにはJQueryの読込が必要です。
Vaster2はJQueryは読み込んでいますが、QooQの場合は以下、JQueryの読み込みが必要になります。
CDNを使用しないQooQ作者様の意図から離れてしまいますが、軽いスクリプトなので実装を考えてみたいと思います。

<head>〜</head>間に下青字を追加します。
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'/>
他にJQueryのスクリプトを使う可能性もあるなら<head>の直下に追加すれば良し。

コピーボタンの追加(QooQの場合)

コピーボタン用の<b:include>,<b:includable>タグをHTMLに追加します。
Blogger特有の要素で、<b:include>で配置して関数の<b:includable>と呼び出す感じ。

<b:include>の追加

今回はシェアボタンの上部に設置したいので、<b:include cond='data:post.sharePostUrl' data='post' name='shareButtons'/>の直前に以下青字を追加します。
<b:include name='copy-url'/>
<b:include cond='data:post.sharePostUrl' data='post' name='shareButtons'/>

<b:includable>の追加

次に<b:include>で呼び出される要素、<b:includable>を記述します。
<b:includable id='main' var='top'>以下に記述されている複数の<b:includable id=''>の何処に追加します。
保存すると下の画像の様にidをキーにしてアルファベット順に並べ替えてくれます。

<b:includable id='copy-url'>
  <div class='copy-url'>       
   <div class='copy_btn' data-clipboard-text=''>記事タイトルとURLをコピー</div>
  </div>
 <script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>
<script>
  // <![CDATA[
  var clipboard = new ClipboardJS('.copy_btn');
  $(function(){
    var title = $('title').text();
    var url = location.href;
    $('.copy_btn').click(function(){
      $(this)
        .attr('data-clipboard-text', title + ' ' + url)
        .css('cursor','default') // カーソル切り替え
     alert("記事タイトルとURLをコピーしました。 " );
    });
   });
    // ]]>
   </script>
  </b:includable>


今回ボタンをクリック(タップ)した時にコピーした旨のメッセージをアラート表示させています。

アラートの代わりにボタンをクリック後ボタンの文言を「記事タイトルとURLをコピー」から「コピーしました。」等に変更する方法でも良いかも。
その場合は、
alert("タイトルとURLをコピーしました。"+' url); の箇所を.text('コピーしました。') に差し替えます。
'コピーしました。'の箇所は好きな文言に変えてください。

後はcssでボタン箇所をお好みで設定してください。

実際の稼働確認は以下のデモページを用意しているので確認ください。
デモページ

尚、MITライセンスの取扱は各自で対応下さい。
ソースコードやサイト説明等の別ページに著作権を記載しておくだけです。

以上

コメント

ふじやん さんの投稿…
// <![CDATA[ の上に入るべき開始タグの <script> が抜けてますよ。
プゥ二郎 さんの投稿…
ありがとうございます、本文修正しました。