Bloggerの狂った人気の投稿ウィジェットをどうするか 結城永人 - 2023年1月19日 (木) Bloggerの人気の投稿ウィジェットは管理画面の投稿の記事欄や一部は統計情報で確認できる各記事の閲覧数/PV(Page View/ページビュー)に基づいて多い方から表示する記事を選んでいる。 しかし問題が一つあってBloggerが集計している記事の閲覧数は実際に人が来ただけのものではない。コンピューターのアクセスか何かも含まれていて人が誰も来なくても上がることがある。 最も分かり易い例としてTwitterにブログの記事のリンク付きの投稿を行うと直ぐにBloggerの記事の閲覧数が少し上がる。Twitterのアナリティクスで、リンクを押されたかとうかを確認すると一つもなくてまだ誰も来てないはずなのになぜか。たぶんTwitterのクローラーというリンク先のページを紹介するTwitterカードなどの情報を読み取るためのコンピューターが来ているせいなんだ。 Bloggerが集計する記事の閲覧数に人以外の全てのアクセスか含まれるわけではないにしても一部のコンピューターのアクセスが含まれるだけでも誤差が増え過ぎて人気の投稿ウィジェットの記事の順番を狂わせてしまうことがある。 極端にいうと誰も来てない本当は不人気の記事が出てしまってうんざりさせられる。 人気の投稿ウィジェットが狂わされる原因について 統計情報|Blogger 記事の閲覧数が急上昇することが全てコンピューターのアクセスというわけではない。Twitterなどのソーシャルメディアでリンク付きの投稿が広まったり、Googleなどの検索エンジンでキーワードに当たったりすると、突然、アクセスが爆発的に伸びることがあるんだ。その場合はBloggerの統計情報の「このブログのその他の統計情報」の参照元URLを確認するとTwitterやGoogleなどのドメイン(t.coやwww.google.comなど)からの訪問数も同じように伸びているから分かる。参照元URLが変わらなくてダイレクトのアクセスで閲覧数だけが急上昇しているとコンピューターのアクセスの疑いか強まる。 僕は少し前から苦しんでいて原因を推測すると海外のサイトからのリンクかも知れない。以前、アナリティクススパムを経験していて海外のサイトでは様々なアクセス解析のリファラー(参照元)に宣伝したいサイトのURLを残して人を呼び込むという手法の迷惑行為が横行していると分かった。海外のサイトからのリンクは注意しないと不要なコンピューターのアクセスが、沢山、来てしまって様々なアクセス解析を狂わせる危険性がある。 僕は自分で海外の怪しいサイトにリンクを貼らないように注意しつつも他人がやってしまうことは止められない。さらに今回は海外の怪しいサイトにリンクを貼ったサイトに些細な日常の記事のリンクを貼られたせいかも知れない。アナリティクススパムかどうかは分からないけれども何等かのコンピューターのアクセスによって普通ならばさほど人が来ないはずの記事の閲覧数が数百から千ちょっとまで一ヵ月に一回くらい定期的に上がってしまうことが続いているんだ。国内のサイトにリンクが貼られていたので、不要なアクセスがそれを辿って来るという可能性に初めて思い至らされた。 狂った人気の投稿ウィジェットの三つの対処法 不要なアクセスが入るリンクを外す狙われた記事のURLを新しく変える人気の投稿ウィジェットを制限する 不要なアクセスが入るリンクを外す クローラーなどのコンピューターのアクセスは、大抵、サイトのリンクを辿って来るので、それを外せば大丈夫かも知れない。 自分が貼ったものは編集可能ならは簡単に外せるけれども他人が貼ったものは外すように頼まなくてはならないから大変だ。 自分で貼っても編集不可能ならば無理で、たとえリンクを外しても相手にURLを記録されてしまったり、最初からリンクではなくてURLを使ってダイレクトに来ている場合も避けることはできない。 リンクを外せないか外しても駄目ならば狙われた記事のURLを新しいものに変えると大丈夫だ。 狙われた記事のURLを新しく変える 記事のURLは編集画面の投稿の設定のパーマリンクでカスタマイズすることができる。 もう一つBloggerの記事のURLには投稿の年月が含まれるから編集画面の投稿の設定の公開日を変えても全く同じものではなくなる。 注意しなくてはならないのは記事のURLを変更するとそれまでのリンクがエラーになって誰も来られなくなるし、検索エンジンのサイト評価がリンクに関して無効になってアクセスダウンに繋がることもあり得る。 通常は管理画面の設定の「エラーとリダイレクト」のカスタムリダイレクトを付けておけば良いけれどもこれをやると不要なアクセスも又来てしまうだろうから厳しいと思う。 元のURLのリンクの訪問者や検索エンジンのサイト評価を失いたくない場合には人気の投稿ウィジェットを制限すると大丈夫だ。 人気の投稿ウィジェットを制限する 僕が使っている方法を紹介する。人が来てないのに人気の投稿に表示されてしまう記事を消す。 カスタマイズの四つの手順と補足 ブログのテンプレートのソースコードの編集ブログで使用中の人気の投稿ウィジェットを探す人気の投稿ウィジェットの書き換える場所を探す人気の投稿ウィジェットを制限するプログラム 複数の記事を消したい場合の書き方 難点が一つだけあって人気の投稿ウィジェットの記事の設定数を戻すことができないから消された記事の数だけ実際の表示数が減ってしまうことを注意しなくてはならない。 人気の投稿ウィジェットの設定数を消した数だけ追加しておけば代わりの記事が繰り上がって表示されるけど、ただし設定数の最大が十だから設定数と消した数との関係でそれを越えるような場合は望み通りの数で表示できない。 例えば設定数が最大の十だと、それ以上、増やせないから消した数だけ実際に表示される記事の数は減ってしまう(一つ消せば九つ、二つ消せば八つしか表示されない)。 ブログのテンプレートのソースコードの編集 ブログのテンプレートのソースコードを書き換えるからBloggerの管理画面のテーマのメニュー(カスタマイズの右横の▽)の「HTMLを編集」か「バックアップ」と「元に戻す」で行う。 ブログで使用中の人気の投稿ウィジェットを探す テンプレートのソースコードのPopularPostsのtypeのwidgetタグで、「PopularPosts1」などの番号付きのPopularPostsのidを持つものがブログで使用中の人気の投稿ウィジェットのマークアップになる。 <b:widget cond='data:view.isSingleItem and data:posts any (p => p.id != data:view.postId)' id='PopularPosts1' locked='true' title='' type='PopularPosts' visible='true'> 中略 </b:widget> テンプレートによってwidgetタグに付けられる属性は異なるので、太字の三つの部分に注目して探す。 idに付けられた番号は人気の投稿ウィジェットがブログに追加された順番を示している。 複数の人気の投稿ウィジェットを書き換える場合は一つずつ行わなくてはならない。 人気の投稿ウィジェットの書き換える場所を探す ブログで使用中の人気の投稿ウィジェットのwidgetタグのどこを編集するかがテンプレートによって異なる。 ウィジェットヴァージョン2のテンプレート公式テーマContempoSohoEmporioNotableEssential非公式テーマhtmlタグに「b:defaultwidgetversion='2'」が記載されるもの 所定のwidgetタグ内のsnippetedPostsのidのincludable内が書き換える場所になる。 公式テーマは書き換える場所がなくて必要なマークアップを一つ追加しなくてはならない。 非公式テーマは書き換える場所があるかないかが分からないので、あれぱそれを使って編集することができるかも知れないし、なければ公式テーマと同じように必要なマークアップを追加すれば編集できるかも知れない。 テンプレートの作り方が根本的に異なると対応てきない可能性があるので、非公式テーマは人気の投稿ウィジェットを制限できるとはかぎらない。 僕が提供するImaginaryはウィジェットヴァージョン2で、書き換える場所があるから非公式テーマでも必要なマークアップも追加しなくて構わないし、人気の投稿ウィジェットを制限することができる。 公式テーマと書き換える場所がない非公式テーマは以下のマークアップを追加する。 <b:includable id='snippetedPosts'> <div role='feed'> <b:loop values='data:posts where (p => p.id != data:view.postId)' var='post'> <article class='post' role='article'> <b:include name='snippetedPostContent'/> </article> </b:loop> </div> </b:includable> 出典:Snippet des articles populaires et épinglé 必要なマークアップを追加する際は他のwidget-settingsタグと全てのincludableタグの内側に入らないようにする。 非公式テーマは上手く行くとはかぎらないので、試しにやって最終的に駄目ならば消すことになる。 ウィジェットヴァージョン1のテンプレート公式テーマSimpleDynamic ViewsPicture WindowAwesome Inc.WatermarkEtherealTravel非公式テーマhtmlタグに「class='v2'」が記載されるもの 所定のwidgetタグ内のmainのidのincludable内が書き換える場所になる。 公式テーマには全て含まれている。 非公式テーマは書き換える場所があるかないかが分からないので、あれぱそれを使って編集することができるかも知れないし、なければ普通にできないか個別に適したカスタマイズを考えなくてはならない。 テンプレートの作り方が根本的に異なると対応てきない可能性があるので、非公式テーマは人気の投稿ウィジェットを制限できるとはかぎらない。 人気の投稿ウィジェットを制限するプログラム ウィジェットヴァージョン2はsnippetedPostsのid、ウィジェットヴァージョン1はmainのidのincludable内にloopタグが入っていればらそれに付けられたvalues属性の内容を書き換える。 非公式テーマで入ってない場合は普通にカスタマイズできない。 所定のincludable内にloopタグが見付かったら人気の投稿ウィジェットから消したい記事の特定に投稿IDを使うことになる。 投稿IDはBloggerの記事の編集画面のURLの末尾の十九桁の数字だ。 ウィジェットヴァージョン2の書き換え前のloopタグ: <b:loop values='data:posts where (p => p.id != data:view.postId)' var='post'> 中略 </b:loop> ウィジェットヴァージョン2の書き換え後のloopタグ: <b:loop values='(data:posts where (p => p.id != data:view.postId)) where (p => p.id != 投稿ID)' var='post'> 中略 </b:loop> 帯文字の「投稿ID」を消したい記事の十九桁の数字に置き換えて使う。 ウィジェットヴァージョン2のソースコードは閲覧中の記事が人気の投稿に含まれた場合に重複して出ないように最初から除外されていてサンプルのソースコードは消したい記事をそれに追加している。 ウィジェットヴァージョン1の書き換え前のloopタグ: <b:loop values='data:posts' var='post'> 中略 </b:loop> ウィジェットヴァージョン1の書き換え後のloopタグ: <b:loop values='data:posts where (p => p.id != 投稿ID)' var='post'> 中略 </b:loop> 帯文字の「投稿ID」を消したい記事の十九桁の数字に置き換えて使う。 ウィジェットヴァージョン1のソースコードは閲覧中の記事が人気の投稿に含まれた場合でも重複して出るようになっているので、除外したい場合はウィジェットヴァージョン2の書き換え後のソースコードを使うとそのように動作する。 複数の記事を消したい場合の書き方 人気の投稿ウィジェットの消したい記事を増やす場合はvalues属性の内容の全体を半角括弧に入れて半角スペースて区切って「where (p => p.id != 投稿ID)」を追加する。 ウィジェットヴァージョン2で二つの記事を制限する場合: <b:loop values='((data:posts where (p => p.id != data:view.postId)) where (p => p.id != 一つの投稿ID)) where (p => p.id != もう一つの投稿ID)' var='post'> 中略 </b:loop> ウィジェットヴァージョン1で二つの記事を制限する場合: >b:loop values='(data:posts where (p => p.id != 一つの投稿ID) where (p => p.id != もう一つの投稿ID)' var='post'> 中略 </b:loop> 三つ以上、消したい場合も同じように元のvalues属性の値を全て半角括弧に入れて新しい投稿IDの分の「where (p => p.id != 投稿ID)」を後ろに一つずつ追加して行くことになる。 プログラムはBloggerの独自タグのラムダ式のwhereで、人気の投稿ウィジェットに表示する記事のデータを一定の条件で纏め直している。すると消したい記事の分だけwhereが入らなくてはならない。ウィジェットヴァージョン1のソースコードは二つ消したければ二つのwhereというふうになっていてウィジェットヴァージョン2のソースコードは最初から閲覧中の記事を除外するためのwhereが一つ入っているから二つ消したけれは三つのwhereというふうに一つ多くなっている。 人気の投稿ウィジェットを狂わせる不要なアクセスが減ったら元に戻して消した記事も本当に人が多く来たときに表示されるようにすると良いと思う。 参考サイトLes opérateurs Lambdas/Lambda operators : any, all, none, count, map, where, first コメント 新しい投稿 前の投稿
コメント