
はじめに
久々にガッツリとカスタマイズをしましたので覚書です。
ページャーについて。
記事ページにあるページャーが目立ってなくて、なんか嫌でした。
そこで、サムネイルを追加して、良い感じに整形したいという欲求に駆られました。
理想のイメージは、スマホ版ですね。

↑こういうスマートな形。
これを目指してやってます。
JavaScript
基本的なソースコードはGHETTOさんが公開されているものをお借りしています。
universal-zero.hatenablog.com
このコードを元に改変してます。
2018.02.17
森岡さんよりアドバイスを頂けましたので、コードを変更しました。
ありがとうございます。
ブロック要素とインライン要素がぐっちゃぐちゃだったので修正
$(function() { /* 前ページ */ if($(".page-entry .pager-prev").length) { var prev = $(".page-entry .pager-prev").find("a").attr("href"); var html = get_img(prev,".page-entry .pager-prev"); var thtml = ""; thtml += '<a href="' + prev + '" rel="prev">' + html + '</a>'; $(".page-entry .pager-prev").html(thtml); } /* 次ページ */ if($(".page-entry .pager-next").length) { var next = $(".page-entry .pager-next").find("a").attr("href"); var html = get_img(next,".page-entry .pager-next"); var thtml = ""; thtml += '<a href="' + next + '" rel="next">' + html + '</a>'; $(".page-entry .pager-next").html(thtml); } }); function get_img(url,tag) { var nopic = 'サムネイル無し画像のURL'; var getData = $.ajax({url: url, async: false}).responseText; /* DOM変換 */ var parser = new DOMParser(); var dom = parser.parseFromString(getData,"text/html"); /* メイン画像取得 */ var img = $("meta[property='og:image']",dom).attr('content'); /* 画像無? */ if (img.indexOf($("html")[0].dataset.author) == -1) { img = nopic; } var atext = $(tag).find("a").text(); var tit = $("meta[property='og:title']",dom).attr('content').split('-',1); atext = atext.replace(atext,tit); var html = '<span><img src="' + img + '"></span><span>' + atext + '</span>'; return html; }
生成されるHTML
元のページャーリンク(aタグ)を以下のように変更しています。
生成されるHTMLを記します。
<div class="pager pager-permalink permalink"> <span class="pager-prev"> <a href="記事URL" rel="prev"><span><img src="サムネイル画像"></span><span>記事タイトル </span></a> </span> <span class="pager-next"> <a href="記事URL" rel="next"><span><img src="サムネイル画像"></span><span>記事タイトル </span></a> </span> </div>
改変した点。
元のコードは、サムネイル画像を取得して、ページャーの前後に追加するというものです。
これを以下のように変えました。
(1)記事タイトルを取得
はてなの仕様では、記事タイトルの文字数が長すぎると、途中で省略されていました。
タイトル全文表示させたかったので、取得し直しています。
尚、タイトルに「-」があると、それ以降省略されます。
これは、取得元のタイトルが「記事タイトル - ブログ名」となっているからです。
(splitを用いて、ブログ名をカットしてます)
(2)HTMLを書き換え
画像の追加では無く、HTML自体を書き換えています。
元々あった
<span class="pager-arrow">« </span>
は消しています。
CSS
一例として、僕が使っているCSSを記します。
.page-entry .pager .pager-prev,
.page-entry .pager .pager-next {
background: #eaf3ff;
border-bottom: solid 3px #516ab6;
width:100%;
text-align:left;
margin-bottom:0.5em;
}
.page-entry .pager .pager-prev span,
.page-entry .pager .pager-next span {
display: table-cell;
padding:0.5em;
}
* html .page-entry .pager .pager-prev span,
* html .page-entry .pager .pager-next span {
display: inline;
zoom: 1;
}
*:first-child+html .page-entry .pager .pager-prev span,
*:first-child+html .page-entry .pager .pager-next span {
display: inline;
zoom: 1;
}
.page-entry .pager img {
width : 60px;
height : 60px;
object-fit : cover;
vertical-align: middle;
}
.page-entry .pager .pager-prev a,
.page-entry .pager .pager-next a {
color: #CC6666;
text-decoration:none;
}
.page-entry .pager .pager-prev a:before {
content:"次の記事:";
color: #516ab6;
vertical-align: middle;
padding:0.5em;
}
.page-entry .pager .pager-next a:before {
content:"前の記事:";
color: #516ab6;
vertical-align: middle;
padding:0.5em;
}
終わりに
スクリプトもCSSも動けば良いことを前提にしていますので、かなり滅茶苦茶です。
もっとスマートに出来ると思います。
なにかのご参考になれば。

