日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2014年5月16日金曜日

Blogger:投稿一覧を作成する-ラベルへリンクを設定

イントロダクション

前回はラベルを付与して記事一覧を表示しました。

今回は前回のコードを少し修正し、ラベルへリンクを設定して記事一覧を表示するように修正します。


今回作成する投稿一覧

ラベルへリンクを設定して記事一覧を表示するようにします。

コード

以下のコードを記事一覧を表示したい部分に埋め込みます。

一番最後の行の、

<script type="text/javascript" src="http://upa-pc.blogspot.com/feeds/posts/summary?alt=json-in-script&callback=loadtoc&max-results=500&redirect=false"></script>

の src のドメイン部に各自の Blogger のアドレスを入れます。


<script type="text/javascript">
<!--
function loadtoc(data) {

    document.writeln("<ol>");
    for (var i = 0; i < data.feed.entry.length; i++) {
        
        // リンク先の探索
        var href = "javascript:void(0);";
        for (var j = 0; j < data.feed.entry[i].link.length; j++) {
            if (data.feed.entry[i].link[j].title == data.feed.entry[i].title.$t) {
                href = data.feed.entry[i].link[j].href;
            }
        }

        // ラベル一覧作成
        var labels = "";
        if (data.feed.entry[i].category) {
            for (var j = 0; j < data.feed.entry[i].category.length; j++) {
                var label = data.feed.entry[i].category[j].term;
                var labelLink = location.protocol + "//" + location.host + "/search/label/" + label;

                labels += "<span><a href=\"" + labelLink + "\">" + label + "</a><span>";
                if (j < data.feed.entry[i].category.length - 1) {
                    labels += ",";
                }
            }
        }

        document.writeln("<li><a href=\"" + href + "\" title=\"" +
            fixForAttributeTitle(escapeForAttributeText(data.feed.entry[i].summary.$t)) + "\">" +
            escapeHTML(data.feed.entry[i].title.$t) + "</a><br />ラベル:" + labels + "<br /><br /></li>");

    }
    document.writeln("</ol>");

    // テキストをエスケープ処理する
    function escapeHTML(html) {

        var div = document.createElement("div");
        if (div.innerText !== void 0) div.innerText = html;          // innerText が定義されていれば innerText へ設定
        else div.textContent = html;                                 // Firefox のように innerText がないブラウザ向け

        return div.innerHTML;
    }

    // 属性用にテキストをエスケープ処理する
    function escapeForAttributeText(html) {

        // " をエスケープ
        html = html.replace(/\&/g, "&amp;");

        html = html.replace(/\</g, "&lt;");
        html = html.replace(/\>/g, "&gt;");
        html = html.replace(/\"/g, "&quot;");
        html = html.replace(/\'/g, "&apos;");
        return html;
    }

    // 属性の title 用にテキストを整理する
    function fixForAttributeTitle(text) {

        text = text.replace(/(\r\n){2,}/g, "$1$1");
        text = text.replace(/(\r){2,}/g, "$1$1");
        text = text.replace(/(\n){2,}/g, "$1$1");

        return text;
    }
}

//-->
</script>
<script type="text/javascript" src="http://upa-pc.blogspot.com/feeds/posts/summary?alt=json-in-script&callback=loadtoc&max-results=500&redirect=false"></script>


ラベルに設定するリンクは、

http://upa-pc.blogspot.jp/search/label/ラベル名

という形式で設定しています。

この形式でラベルにリンクを設定することで、Blogger 内で他のラベルをクリックしたときと同等の動作を実現できます。

結果

上記のコードを埋め込み、実行すると次のような結果が得られます。

  1. JavaScript:特定の要素を配下の要素も含めて有効・無効(disabled)を制御する
    ラベル:JavaScript
  2. Closure Compiler:コンパイルしたらJavaScriptの実行時にエラーが出るようになった。コードの順番を変えたら正常に動作した
    ラベル:Closure Compiler,JavaScript
  3. 2台のパソコンを同じ机で使う場合、USB切替機を使うと圧倒的に便利!!
    ラベル:USB切替機,パソコン周辺機器
  4. リモートデスクトップのクライアントの画面がマルチディスプレイだと作業が捗る!
    ラベル:マルチディスプレイ,リモートデスクトップ

~省略~

まとめ

上記コードにて、ラベルへリンクを設定した記事一覧を作成できました。


次回は上記コードに少し手を加えて、10 件ごとにラインを引いてみます。




関連記事

関連記事を読み込み中...

同じラベルの記事を読み込み中...