はてなブログのカテゴリーを階層化し別ブログに統合した

はてなブログのカテゴリーを階層化し別ブログに統合した

ブログはワンテーマワンブログのほうがいいとは思いますが、更新もままならず休止中にしておくのもどうかと思い、別ブログに統合して書く意欲を奮い起こそうと思います(笑)。

この件、すでに「はてなブログ間の記事移動はJavascriptとcanonicalでリダイレクト」の記事であつかっており、その時は統合先のブログの一つのカテゴリーに入れてしまおうと思ったのですが、今回はカテゴリーを階層化して統合することにしました。

01統合先のカテゴリーの階層化

まず、統合先のブログを階層表示可能にしておく必要があります。詳しくは以下の記事をご覧ください。

www.imuza.com

はてなブログは階層カテゴリーに対応していませんので、あくまでも擬似的に表示のみそのように見せているだけです。階層化するにはカテゴリーを「親カテゴリー-子カテゴリー」とハイフンで結びます。

02元ブログのカテゴリー変更

統合する元ブログのカテゴリーを階層化対応の「親カテゴリー-子カテゴリー」形式に変更します。

方法は、「はてなブログ間の記事移動はJavascriptとcanonicalでリダイレクト」のようにエクスポートしたテキストファイルをエディターで変更する方法でも可能ですが、今回のようなケースではエクスポートする前に 管理画面 > カテゴリー から変更する方法が一番簡単です。この階層化は親カテゴリーがあってもなくても階層化されますので、この方法ですべてのカテゴリーを「親カテゴリー-子カテゴリー」形式にすればOKです。

03統合した結果

こうなりました。

www.tokotokotekuteku.com

04元ブログのリダイレクト

はてなブログ間の記事移動はJavascriptとcanonicalでリダイレクト」にも書いていますが、元ブログは Javascript で統合先のブログにリダイレクトしておきます。

今回はカテゴリーのリダイレクト先を階層化カテゴリーにそれぞれ置き換えています。

<script>
if(location.pathname.indexOf('entry') !== -1){
    var url = 'http(s)://統合先のドメイン' + location.pathname;
}else if(location.pathname.indexOf('/archive/category') !== -1){
    var cat = location.pathname.match(/\/archive\/category\/(.+)$/);
    // 子カテゴリーを変更する場合
    // if(cat[1] === encodeURI('元の子カテゴリー')) cat[1] = encodeURI('統合先の子カテゴリー');
    // 
    var url = 'http(s)://統合先のドメイン' + encodeURI('親カテゴリー-') + cat[1];
}else{
    var url = 'http(s)://統合先のドメイン/archive/category/' + encodeURI('親カテゴリー');
}


document.getElementsByTagName('link')[0].href = url;
var elem = document.createElement('div');
elem.innerHTML = '当ブログは「' + 統合先ブログ名 + '」に統合しました。<br />5秒後に新しいブログに移動します。<br /><br /><a href="' + url + '">統合先ブログ名</a>';
elem.setAttribute('style', 'width:100vw;height:100vh;padding-top:100px;text-align:center;background:#fff;font-size:20px;font-weight:bold;position:fixed;z-index:9999;line-height:2;');
var parent = document.getElementById('container');
parent.insertBefore(elem, parent.firstChild);


setTimeout(function(){
location.href = url;
}, 5000);
</script>

これを元ブログの ヘッダ > タイトル下 に入れます。

ということで、統合したブログがこちら、リダイレクトします。

mankan.hatenablog.jp