もっと詳しく

ブログにアクセスランキングを設置

どんなブログでもGoogleアナリティクスのアクセス数を利用して、アクセスランキングを埋め込める『Ranklet』というサービスを見つけました。現時点でMovableTypeを使用しているこのブログに埋め込みたいと思います。

使い方はとても簡単です。

  1. Googleアカウントでログオン
  2. ランキングに使用するGoogleアナリティクスのプロファイルを選択
  3. 表示されたコードをコピペ

これだけで簡単にブログに埋め込むことができます。

HTML、CSS、Javascriptを編集する画面があるので、カスタマイズの自由度はとても高いです。ランキングの集計期も直近の期間から長期までいろいろ選べます。

デフォルトのソース

デフォルトで表示されるHTMLソースは、なぜか<table>が使用されています。

html

<div class="ranklet ranklet-reset">
    <table class="ranklet-table">
        <tbody class="ranklet-pages">
            {{#context.pages}}
            <tr class="ranklet-page">
                <td class="ranklet-rank">
                    {{rank}}
                </td>
                <td class="ranklet-image">
                    {{#image}}
                    <a href="{{url}}" class="ranklet-link">
                        <img class="ranklet-img" src="{{image}}" />
                    </a>
                    {{/image}}
                </td>
                <td class="ranklet-meta">
                    <div class="ranklet-title">
                        <a href="{{url}}" class="ranklet-link">
                            {{title}}
                        </a>
                    </div>
                    {{#description}}
                    <div class="ranklet-description">
                        <a href="{{url}}" class="ranklet-link">
                            {{description}}
                        </a>
                    </div>
                    {{/description}}
                </td>
            </tr>
            {{/context.pages}}
        </tbody>
    </table>
</div>

CSS

#ranklet-{{context.id}} {
    .ranklet-reset { // リセット
        table, tr, td, div, span {
            margin: 0;
            padding: 0;
            border: 0;
            font-size: 100%;
            font: inherit;
            vertical-align: baseline;
            line-height: 1;
            box-sizing: border-box;
        }
    }

    .ranklet-table {
        border-collapse: separate;
        border-spacing: 8px 24px;
        width: 100%;

        td {
            vertical-align: middle;
        }

        .ranklet-rank {
            text-align: center;
            font-size: 120%;
        }

        .ranklet-image {
            text-align: center;
            img {
                max-width: 64px;
                max-height: 64px;
            }
        }

        .ranklet-meta {
            .ranklet-title {
                font-size: 120%;
                line-height: 125%;
            }

            .ranklet-description {
                margin-top: 8px;
                line-height: 125%;
            }
        }
    }

}

 

MovableType用に書き換えたテンプレート

デフォルトの<table>で組まれているソース嫌なのと、デフォルトのまま使用するとデザインがおかしくなるので、以下のようにリスト形式にカスタマイズしました。デフォルトのソースにあるページの概要は不要なので{{description}}を省きました。

HTML

<aside >
<section id="side-recentpost" class="side-entrylist">
<nav>
<h2 class="widget-header"><i class="far fa-file-alt" aria-hidden="true"></i>週間アクセスランキング</h2>
<div class="widget-content">
	<ol class="entryList ranklet-list">
		{{#context.pages}}
        <li class="ranklet-list-item">
				  <span class="ranklet-image">
					  {{#image}}
						  <a href="{{url}}" class="ranklet-link"><img class="ranklet-img" src="{{image}}" loading="lazy" /></a>
					  {{/image}}
				  </span>
				  <span class="ranklet-title">
              <a href="{{url}}" class="ranklet-link">{{title}}</a>
          </span>
        </li>
		{{/context.pages}}
  </oll>
</div>
</nav>
</section>
</aside>

CSS

ol.ranklet-list {
list-style-position: inside;
}
.ranklet-image, .ranklet-title {
display: table-cell;
}
span.ranklet-image {
width: 25%;
}
img.ranklet-img {
width: 100%;
}

 

他にもMovableTypeのCSSに合わせスタイルをいじっていますが、最終的に見た目は以下の通りになりました。

Rankletによる週間アクセスランキング