サブプラグインの作成がしやすくなるようにメソッドを充実させました。
機能的にはv0.2とあまり変わらないですが、月別アーカイブのバグフィックス、サブプラグインの日本語コメント付きサンプルを追加してます。

※Windows環境以外ではサブプラグインがロードエラーになる件を修正してv0.31としました(2008/05/08)

Download: NP_List_v0.31.zip 新しいバージョン出ました。

Nucleus v3.31SP1 UTF-8、PHP4/5で確認。

詳しい説明はNP_List v0.2のページをどうぞ。
以下は変更点です。

  • サブプラグインの設計を見直し、メソッドを追加。同梱のサブプラグインをそれにあわせて修正。
  • 日本語で解説コメントをつけたサンプルを追加。
  • monthlyタイプのCSS出力にバグがあったのを修正。
  • ストライプ出力をリストのヘッダやフッタにも対応できるように修正。
  • writebackタイプに resetstripe フラグを追加。アイテムごとにストライプの状態をリセットします。
  • サブプラグインのロードに失敗する件を修正(2008/05/08追加)。
    NP_List側の読み込み部分を修正するとともに NP_ListOfRecentItem.phpNP_ListOfRecentitem.php (iを小文字)に変更しています。

スクリーンショット

デフォルトスキンで使ってみた感じのスクリーンショットです。

サイドバーにブログ+カテゴリーの2層リスト、月別アーカイブリスト、最新記事リストを配置。stripeフラグを指定。

2007年6月の「メモ」カテゴリーを選択。アーカイブ期間にある記事のカテゴリーのみをリスト化。その下に選択カテゴリーの月別アーカイブ、アーカイブ期間の反響、選択カテゴリーの最新記事、全体の最新の反響、と続く。

リストの内容にあわせてアイコンを変えてみる。writebackのリストには内容別のclass属性が出力されているのでそれを利用。

スキンへの記述

上記スクリーンショットでは、sidebar.inc にこんな風に記述しています。スキンタイプによってリストを表示・非表示したり、リストのパラメータを変えて出力内容を変えたりしてます。

<!-- NP_List -->
<div class="sidebar">
<dl class="sidebardl menu">
<dt>メニューリスト<%if(skintype,archive)%> [<%archivedate(en,%Y/%m)%>]<%endif%></dt>
<%if(skintype,archive)%>
<%List(type:category, tpl:default/index, cfilter:arcdate=@, flag:stripe hidenoamount, order:blogdesc ASC, corder:catdesc ASC)%>
<%else%>
<%List(type:blog, tpl:default/index, flag:stripe, order:blogdesc ASC, corder:catdesc ASC)%>
<%endif%>
</dl>

<%ifnot(skintype,archivelist)%>
<dl class="sidebardl monthly">
<dt><%if(category)%>「<%category(name)%>」の<%endif%>月別アーカイブ</dt>
<%List(type:monthly, flag:stripe, filter:blogid=@ catid=@)%>
</dl>
<%endif%>

<%if(skintype,archive)%>
<dl class="sidebardl writeback">
<dt>アーカイブ [<%archivedate(en,%Y/%m)%>] の反響</dt>
<%List(type:writeback, flag:stripe resetstripe, filter:arcdate=@)%>
</dl>
<%endif%>

<%ifnot(skintype,archivelist)%>
<dl class="sidebardl recentitem">
<dt><%if(category)%>「<%category(name)%>」の<%endif%>最新記事</dt>
<%List(type:recentitem, flag:stripe, filter:catid=@)%>
</dl>
<%endif%>

<dl class="sidebardl writeback">
<%if(skintype,index)%>
<dt><%if(category)%>「<%category(name)%>」の<%endif%>最近の反響</dt>
<%List(type:writeback, flag:stripe resetstripe, filter:catid=@)%>
<%else%>
<dt>最近の反響</dt>
<%List(type:writeback, flag:stripe resetstripe)%>
<%endif%>
</dl>
</div>

テンプレートへの記述

default/index テンプレートに。

ブログ一覧の本体

<dt<%class%>>
<a href="<%bloglink%>" title="<%blogdesc%>"><%blogname%></a>
</dt>
<%catlist%>

カテゴリー一覧のヘッダー

<dd<%class%>>
<a href="<%blogurl%>" title="All categories">All</a>
</dd>

カテゴリー一覧の本体

<dd<%class%>>
<a href="<%catlink%>" title="Category: <%catname%>"><%catname%></a> [<%amount%>]
</dd>

スタイル指定

CSSに以下を追記しています。

/* NP_List */
.current,
.current a {
    color: red;
}
dd.stripe {
    background-color: white;
}

最後のスクリーンショットのように、リストのアイコンを変えたいときはこういう感じ。paddingの14pxのところは、アイコンの幅にあわせるようにします。

.monthly dd a:link, 
.monthly dd a:visited {
    background: url(images/ico_archive.gif) left center no-repeat;
    padding: 0 0 0 14px;
}
.recentitem dd a:link, 
.recentitem dd a:visited {
    background: url(images/ico_item.gif) left center no-repeat;
    padding: 0 0 0 14px;
}
.writeback dd.comment a:link, 
.writeback dd.comment a:visited {
    background: url(images/ico_comment.gif) left center no-repeat;
    padding: 0 0 0 14px;
}
.writeback dd.trackback a:link, 
.writeback dd.trackback a:visited {
    background: url(images/ico_tb.gif) left center no-repeat;
    padding: 0 0 0 14px;
}