Javascriptで作るFC2ブログのページナビゲーション

Javascriptで作ったFC2ブログ用のページナビゲーションプログラムの”コア”を公開します。
正規表現を使ってアドレスを要素ごとに分解するので比較的何が書かれているのかわかりやすいと思います。
アドレスを取得して要素ごとに分解してくれるプログラムです。
(このプログラムはFC2変数の”<%total_pages>”が有効なページで実行されることを想定して作られています。)

(function(){
  /* FC2blogのアドレスを取得、分解、出力するプログラム */
  var fcacore=function(){
    /* .base .prop .page .ext */
    return new fcacore.fp.basurl(window.document.URL);
  };
  fcacore.fp=fcacore.prototype={
    basurl:function(address){
      var
      ourl=address.match(/^(http:\/\/.+?\/)(.*)/);
      this.base=ourl[1];
      this.prop="";
      this.page="";
      this.ext=".html";
      if(ourl[2]){
        this._surl=ourl[2];
        this.pagetype();
      }else{
        this.prop="page-";
        this.page=0;
      };
    },
    pagetype:function(){
      var
      address=this._surl,
      mtc;
      if(/^page-/.test(address)){
        mtc=address.match(/^page-(\d+)/);
        this.prop="page-";
        if(mtc[1]){
          this.page=mtc[1];
        }else{
          this.page=0;
        };
        return 1;
      };
      if(/category/.test(address)){
        mtc=address.match(/category-?(\d+)(?:-(\d+))?/);
        this.prop="category"+mtc[1]+"-";
        if(mtc[2]){
          this.page=mtc[2];
        }else{
          this.page=0;
        };
        return 1;
      };
      if(/^\?/.test(address)){
        this.ext='';
        mtc=address.match(/^(\?.+?=.+)\&page=(\d+)|(\?.+)/);
        if(mtc[3]){
          this.prop=mtc[3]+"&page=";
          this.page=0;
        }else{
          this.prop=mtc[1]+"&page=";
          this.page=mtc[2];
        };
        return 1;
      };
      if(/^blog-date/.test(address)){
        mtc=address.match(/^blog-date-(\d+)(?:-(\d+))?/);
        this.prop="blog-date-"+mtc[1]+"-";
        if(mtc[2]){
          this.page=mtc[2];
        }else{
          this.page=0;
        };
        return 1;
      };
      return 0;
    },
  };
  fcacore.fp.basurl.prototype=fcacore.fp;
  window.fcadress=fcacore;
})();

プログラムの使い方

プログラムはページ内の実行箇所より上ならどこに設置しても動作します。
使い方は,

var
test=fcadress();
alert(test.base+test.prop+test.page+test.ext);
というふうにすると、使えます。
アーラートの内容は、baseが”http://〜/”までを、propが閲覧中のコンテンツ名を、pageが閲覧中のページ番号を、extが拡張子を意味しています。
これだけでは使い方がよくわからないかもなので、また出力プログラムも載せてみようと思います。

Category: プログラム Tag: JavaScriptプログラム

コメント

コメントの投稿

トラックバック