最近、暇つぶしにちょろちょろとはてなブログ用のブログパーツ的なスクリプトを書いていて、メモがわりにしておきたいなということで以下のような感じ
はてなブログで最初から使えるサードパーティライブラリ
今のところ僕が確認しているのは
jQuery
underscore.js
です。
もちろんこの二つをはてなブログが利用しているのは僕らのためではないので、ある日突然依存ライブラリから消える可能性もなきにしもあらずです。
なお、読み込みタイミングの問題もあるので
document.addEventListener('DOMContentLoaded', function() { // ここでjQueryを使う });
みたいにスクリプトの実行を遅延させるのが良いでしょう。
トップページのURLの取得
これはJavaScript全体のAPIですが、
BASE_URL = windows.location.origin;
で取得出来ます。
以下で対応ブラウザを参照出来ます。
Window.location - Web API Interfaces | MDN
そうです。我らがIEは11から、また古いAndroidやSafariに過度の期待を寄せる気にはなれません。
なのでここははてなブログが用意してくれているテンプレートを利用させてもらいましょう。
html要素のdata属性にdata-blogs-uri-base
という名前のものが用意されています。中身にブログの基底アドレスが入ってます。
$('html').attr('data-blogs-uri-base'); // jQueryを使いたくなければ以下のようにも書ける // document.querySelector('html').getAttribute('data-blogs-uri-base'); // => http://hachibeechan.hateblo.jp/
例によってはてなブログ側の仕様変更がなんとかかんとか
現在表示されているブログページの種類
例えば、記事ページにだけ表示させたいブログパーツなんかは多いかと思います。
以前書いたパン屑の拡張なんかもその手合いですね。
見た感じ、ここの分類に苦慮されているコードが散見されますが、これもはてな側で用意してくれています。
html要素のdata属性にdata-page
という名前のものが用意されているのでそれを使わせてもらいましょう。
$('html').attr('data-blogs-uri-base');
記事ページ → entry
トップページ → index
プロフィールページ → about
とかまぁそんな感じになってます。
考えにくいですが、いきなる変わる可能性もなきにしもあらずなのでごちゅういを。
他の記事の一覧などを取得する
ajaxでトップページなどをクロールすることも考えたのですが、恐らく一番簡単な方法ははてなブログのRSS用URLを使って、Google AJAX Feed APIでパースすることです。
まずはスクリプトのロードです。デザイン画面から、フッタ部分に書き込むことをおすすめします。
<script src="//www.google.com/jsapi"></script>
次に、目的のモジュールをロードします。これはJavaScript内で行います。
google.load("feeds", "1")
これで準備は完了しました。
あとはRSS用のURLからリソースを読み込み、パースすれば良いです。Feed APIの詳細は公式のドキュメントなどを参照しましょう。
URLは先ほどのBASE_URL + "/rss/category"
です。
var rss_link = $('html').attr('data-blogs-uri-base') + "/rss/category/"; var feed = new google.feeds.Feed(rss_link); feed.setNumEntries(20); // 読み込む記事数 feed.load(function(result) { // result.feed.entriesで参照 });
絵文字のアイコンフォント
参考:
はてなブログで標準的に利用可能なアイコン絵文字フォント一覧 - 太陽がまぶしかったから
はい。
当然いきなり使えなくなる可能性はあります。が、余計なリソースを読み込まずに使えるのは楽ですね。
参考ページのようにクラス名で指定するか、
.hoge { text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-family: 'blogicon'; content: '\f035'; // twitterのアイコン }
みたいに指定することで自由に使えます。
アイコンフォントにどういうスタイルを指定すべきかとかは他のドキュメントとかを参考にしてください。
以上。
他になんか思い付いたら書き足すと思います。