シェアしたいテキストを140文字で書き出しておく

このエントリーをはてなブックマークに追加

今となっては当たり前のように付いているSNSへのシェアボタン。

20170319124936_blogpix.png

Facebookやtwitterにログインした状態でシェボタンを押せば簡単にシェアできます。

20170319142323_blogpix.png

簡単にシェアできるのですが、共有先によってはテキストの入力が必要になってくる面倒くさい状況が...。何も書かなくてもいいですが...。

20170319143047_blogpix.png

20170319143113_blogpix.png

やっぱり何か入れたいので、入力するテキストを用意しておくことにしました。

Gourmet Vox:アジフライ定食

20170319144645_blogpix.png

内容は店舗名、タイトル、ハッシュタグ、本文の一部、URLです。

店舗名はプライマリーカテゴリー、タイトルはブログ記事のタイトルです。ハッシュタグはキーワードを使っていますが、キーワードが入っていない(古い記事はキーワードを入力していなかった。)場合はカテゴリーをハッシュタグにしています。URLはドメイン+tokyo+エントリーIDで生成しています。

URLは短くするため「ドメイン+tokyo+エントリーID」としていて、インデックステンプレートでhtaccessファイルを書き出してリダイレクトをかけています。

「URLはドメイン+tokyo+エントリーID」は「http://gourmetvox.com/tokyo/0000」で最大32文字なのですが、twitterではhttp:は文字数にカウントしていない?のか、32文字で作成すると140文字に足らなくなるので28文字で計算してます。

本文の一部はEntryBodyとEntryMoreから抜き出していますが、その文字数はエントリーごとに変わっています。

Wordsモディファイアで一定の文字数に設定できますが、今回はtwitterにもコピペで使えるように140文字に収まるようにするため、本文のテキスト以外の店舗名、タイトル、ハッシュタグ、URLの文字数によって本文の文字数を決めるようにしました。

下記をwidgetテンプレートに作成してサイドバーに書き出しています。


<mt:Ignore>主カテゴリー、エントリータイトル、本文、続きの各文字数を変数に代入</mt:Ignore>

<mt:Ignore>タイトルの文字数</mt:Ignore>
<mt:EntryTitle count_characters="1" setvar="entrytitlewords">

<mt:Ignore>主カテゴリーの文字数</mt:Ignore>
<mt:EntryPrimaryCategory><mt:CategoryLabel count_characters="1" setvar="entryprimarycategorywords"></mt:EntryPrimaryCategory>

<mt:Ignore>エントリーボディーの文字数</mt:Ignore>
<mt:EntryBody remove_html="1" strip_linefeeds="1" count_characters="1" setvar="entrybodywords">

<mt:Ignore>エントリーモアの文字数</mt:Ignore>
<mt:EntryMore remove_html="1" strip_linefeeds="1" count_characters="1" setvar="entrymorewords">

<mt:Ignore>ハッシュタグの設定</mt:Ignore>
<mt:If tag="entrykeywords">
<mt:EntryKeywords remove_html="1" replace=" ","" regex_replace="/,$/","" setvar="entrykeywords">
<mt:GetVar name="entrykeywords" replace=","," #" setvar="hashtag">
<mt:SetVarBlock name="hashtag">#<mt:GetVar name="hashtag"></mt:SetVarBlock>
<mt:Else>
<mt:EntryCategories glue="," setvar="entrycategory"><mt:CategoryLabel regex_replace="/〜.*円/","台" replace=",","" replace=" ","," replace=" ","," replace="/","," replace="/",","></mt:EntryCategories>
<mt:GetVar name="entrycategory" replace=","," #" setvar="hashtag">
<mt:SetVarBlock name="hashtag">#<mt:GetVar name="hashtag"></mt:SetVarBlock>
</mt:If>

<mt:Ignore>ハッシュタグの文字数</mt:Ignore>
<mt:GetVar name="hashtag" count_characters="1" setvar="hashtagnum">

<mt:Ignore>ショートURLを独自ドメインで作成するにあたりドメインなどの固定された部分を「http://gourmetvox.com/tokyo/」とする。
エントリータイトルと主カテゴリー、キーワードの文字数を足して、さらにショートURLの固定部分(http://gourmetvox.com/tokyo/)+エントリーID4桁分の文字数(28文字)を足した数字を変数に代入</mt:Ignore>

<mt:Ignore>タイトルとカテゴリーの文字数</mt:Ignore>
<mt:GetVar name="entrytitlewords" value="$entryprimarycategorywords" op="+" setvar="entrycatttlwords">

<mt:Ignore>タイトルとカテゴリーとハッシュタグの文字数</mt:Ignore>
<mt:GetVar name="entrycatttlwords" value="$hashtagnum" op="+" setvar="entrycatttlhashtag">

<mt:Ignore>タイトルとカテゴリーとハッシュタグとURLの文字数</mt:Ignore>
<mt:GetVar name="entrycatttlhashtag" value="28" op="+" setvar="entrycatttlhashurlwords">

<mt:Ignore>twitterの文字数制限をクリアするために全体の文字数を140文字に設定する。
140文字からエントリータイトルと主カテゴリー、ハッシュタグ、ショートURLの固定部分を足した文字数を引いて残りの文字数を決定する。</mt:Ignore>

<mt:Ignore>140文字をセット</mt:Ignore>
<mt:SetVar name="tweetwords" value="140">

<mt:Ignore>140文字からタイトルとカテゴリーとハッシュタグとURLの文字数を引いた数→本文から引っ張ってくる文字数</mt:Ignore>
<mt:GetVar name="tweetwords" value="$entrycatttlhashurlwords" op="-" setvar="entrywords">

<mt:Ignore>ここからサイドバーに表示されている部分</mt:Ignore>
<form action="" class="easy-share">
<textarea>

店舗名
<mt:EntryPrimaryCategory><mt:CategoryLabel></mt:EntryPrimaryCategory>

タイトル
<mt:EntryTitle>

ハッシュタグ
<mt:GetVar name="hashtag">

本文
<mt:If name="entrywords" gt="0" strip_linefeeds="1">
<mt:If name="entrybodywords" ge="$entrywords" trim="1">
<mt:GetVar name="entrywords" value="3" op="-" setvar="entrywords02">
<mt:If name="entrywords02" gt="0"><mt:EntryBody remove_html="1" strip_linefeeds="1" words="$entrywords02">...<mt:Elseif name="entrywords02" le="0"><mt:EntryBody remove_html="1" strip_linefeeds="1" words="$entrywords"></mt:If>
<mt:ElseIf name="entrybodywords" lt="$entrywords" trim="1">
<mt:GetVar name="entrycatttlhashurlwords" op="+" value="$entrybodywords" setvar="entrycatttlhashurlbodywords">
<mt:GetVar name="tweetwords" op="-" value="$entrycatttlhashurlbodywords" setvar="entrywords03">
<mt:GetVar name="entrywords03" value="3" op="-" setvar="entrywords04">
<mt:If name="entrywords04" gt="0"><mt:EntryBody remove_html="1" strip_linefeeds="1" strip=""><mt:EntryMore remove_html="1" strip_linefeeds="1" words="$entrywords04" strip="">...<mt:Elseif name="entrywords04" le="0"><mt:EntryBody remove_html="1" strip_linefeeds="1" strip=""><mt:EntryMore remove_html="1" strip_linefeeds="1" words="$entrywords03" strip=""></mt:If>
</mt:If>
</mt:If>

URL
http://gourmetvox.com/tokyo/<mt:EntryID>

</textarea>
</form>

20170319160430_blogpix.png

これで140文字に収まったテキストが書き出されるのですが、ひとつ問題が...。

キーワードが多くて本文を含まない「店舗名、タイトル、ハッシュタグ、URL」で140文字を超えてしまうと書き出されるテキストが140文字以上になってしまうという問題はありますが、そんなエントリーも少ないのでとりあえずはOKということにしてます。