ListIndexer

概要:
新着記事をリストアップする。
基本的な書式:
[[ListIndexer? &LIn_root=`0`]]
パラメータ:
LIn_root : &LIn_root=` NULL | string (カンマ区切りで ID を複数指定可能) `
リストアップしたいドキュメントを含む、親フォルダを指定。「0」は、サイトルートの意味。
特定のフォルダ以下の更新情報を取得したいときは、そのフォルダの ID を指定する。また、複数のフォルダの場合は、「,(カンマ)」 で区切って指定可能。未定義は、そのフォルダをルートとして、その配下の更新情報を取得。
デフォルトは 「 null (未定義) 」
LIn_depth : &LIn_depth=`int`
指定したフォルダから、何階層まで更新情報を取得するかを指定。
デフォルトは 「 0 (以下、全ての階層) 」
LIn_seeThru : &LIn_seeThru=` true | false `
公表していないフォルダの配下の更新情報を取得するか。
デフォルトは 「 未定義 (表示しない) 」
※ true / false となっているが、「 LIn_seeThru=false 」 と指定しても、 公表していないフォルダの配下の更新情報を取得する。
LIn_seeShowInMenu : &LIn_seeShowMenu= true | false 
メニューに表示しない設定のドキュメントの更新情報を取得するか。
デフォルトは 「 未定義 (表示しない) 」
※ true / false となっているが、「 LIn_seeShowInMenu=false 」 と指定しても、メニューに非表示のドキュメントが表示される。
LIn_mode : &LIn_mode='short' | 'full'
更新情報の表示数を制限するか。full では、配下の全ての情報を表示。 short の場合、LIn_sQty で表示件数を設定可能。
デフォルトは 「 short 」
LIn_sort : &LIn_sort='alpha' | 'date' | 'menuindex'
どのフィールドでソートするか。ページタイトル順 ( alpha ) 、更新日付順 ( date ) 、メニューインデックス順 ( menuindex )
「 &LIn_sort=alpha&LIn_mode=full 」 で Index の作成なども可能。
デフォルトは 「 date 」
LIn_dir : &LIn_dir='ASC' | 'DESC'
更新情報を古い順 ( ASC ) で取得するか、新しい順 ( DESC ) に取得するか
デフォルトは 「 未定義 (新しい順) 」
LIn_sQty : &LIn_sQty=' Int '
&LIn_mode='short' の表示件数を設定
デフォルトは 「 3 」
サンプル:
記入例:
[[ListIndexer? &LIn_root=`0`]]
表示例:
・2008.03.10 Breadcrumbs Breadcrumbs
・2008.03.10 スニペット スニペット
・2008.03.10 MODx MODx
カスタマイズ(サイトのUpdate出力用に改造する):
longtitleを書き出す
デフォルトでは「 description(概要) 」 を出力するが、「 longtitle(長いタイトル) 」 出力するように変更する。


328 行目付近 ( 変更 )

//$recentSql .= "SELECT id, pagetitle, description";

$recentSql .= "SELECT id, pagetitle, longtitle";


446 行目付近 ( 変更 )

//$output .= ''.$recentRecord['description'].'';

$output .= ''.$recentRecord['longtitle'].'';
更新日付でのソートを可能にする
デフォルトでは「 date(作成日付) 」 でのソートしかできないので、「 editedone(更新日付) 」 でソートできるように変更する。


220 行目付近 ( 変更 )

//if ($sortDir == '') $sortDir = ($sortBy == 'date')? 'DESC' : 'ASC';
if ($sortDir == '') $sortDir = ($sortBy == 'date' or $sortBy == 'editedon' )? 'DESC' : 'ASC'";


333 行目付近 ( 追加 )

$recentSql .= ", editedon ";


344 行目付近 ( 追加 )

case 'editedon':    // EDIT START
  $recentSql .= "ORDER BY editedon ";
  break;        // EDIT END


445 行目付近 ( 修正 )
//if ($showCreationDate){
//  $output .= '<span class="LIn_date">'.date($dateFormat,$recentRecord['pubDate']).'</span> ';
//}
if ($showCreationDate){
  if ($sortBy == 'editedon') {
    $output .= '<span class="LIn_date">ED:'.date($dateFormat,$recentRecord['editedon']).'</span> ';
  } else {
    $output .= '<span class="LIn_date">MK:'.date($dateFormat,$recentRecord['pubDate']).'</span> ';
  }
}


これで、オプションに LIn_sort=editedon が使えるようになる。
パラメータで日付のフォーマットを変更する
デフォルトでは日付のフォーマットがソースに 「 $dateFormat = 'Y.m.d'; 」 と直書きされているが、これを他の設定と同じようにパラメータで変更できるようにする


215 行目付近 ( 追加 )

$dateFormat = (isset($LIn_dtFmt))? $LIn_dtFmt : $dateFormat;


これで、&LIn_dtFmt=`m.d` といったパラメータが使えるようになる。
引数は、基本的に PHP の日付関数と同じものが使える。
ex) $dateFormat = 'Y.m.d h:i:s'
フォルダの更新情報を取得しない
デフォルトではドキュメントだけでなくフォルダの更新情報も取得されるので、パラメータで取得の可否を変更できるようにする


65 行目付近 ( 追加 )

   // Add Original param
   // [[ListIndexer?&LIn_isFldr=`1`]]
   $isFldr = '';


221 行目付近 ( 追加 )

$isFldr = (isset($LIn_isFldr))? $LIn_isFldr : $isFldr ;    // Add Original param


350 行目付近 ( 追加 )

// Not Disp Folder
$recentSql .= ($isFldr)? "AND isfolder<>1 " : " " ;


これで、&LIn_isFldr=`1` といったパラメータが使えるようになる。
フォルダを表示しない場合は 「 1 」。
デフォルトは 「 null 」

自宅サーバーWebRing << 前 |ID=231 |次 >> 乱移動前後5表示サイト一覧