NP_MultiBlogs|前後のページ表示改造

NP_MultiBlogs|前後のページ表示改造

Author : pushman|Nucleus|2006-01-06 Fri 21:16

相当猛烈お世話になっている、超多機能プラグイン「NP_MultiBlogs」には、前後の記事を表示する機能があります。ちょうど Yahoo! みたいな感じに表示します。この機能の設置場所を変更したついでに、長い間気になっていたことを実現できたので、メモ。

前後のページを表示する方法は、いろいろあると思うのですが、僕は dj k!ng さん(また名前が変わってますね!(笑))作成のかっこいいプラグイン「NP_Permalink」を使用しているうえに、個別アイテムページをカテゴリーの中にいれてしまったので、前後の記事を簡単に取り出せません。「NP_CatDesc」を参考に、前後の記事のカテゴリー名と記事タイトルを取得するプラグインまで作りましたが、複数 Blog に対応できず、断念しました。

そこで、NP_MultiBlogs の登場となるのですが、前後のページを表示するには、いろいろ準備が必要です。詳細はマニュアルページの「 NP_MultiBlogs 3.個別アイテムページ限定機能」を見てください。

僕の希望する表示形式は、現在表示している

次のページ:次の記事のタイトル
前のページ:前の記事のタイトル

というシンプルなものですので、マニュアルページの「[テンプレート1($template)]」「[テンプレート3($msort)]」は必要ありません。スキンへの記述形式はこうなります。

<%MultiBlogs(,item/1/a,ブログ ID,テンプレート名)%>

で、テンプレートはこう。

<a href="<%blogurl%><%category%>/<%Permalink(name)%>.html"><%title%></a>

表示自体はこれで問題ありませんが、このままだとどっちが「次の記事」「前の記事」なのかわかりません。なので、NP_MultiBlogs を改造します。521 行目あたりに以下のようなコードがあります。

// Prev or Next
if($items[0] == 'item' && $items[1]) {

この if 文内で前後ページに関するあれやこれやをやっているようです。なんでそうなるのか理解できていないので、書き換えたコードを公開します。

if(mysql_num_rows(mysql_query($qnext))) {
	echo '<p class="optionBody">次の記事:';
	if($items[3] == 'a' || $items[3] == 'd') {
echo "&raquo; Next : ";
	}
	if($itemid) {
$blog -> showUsingQuery($bpage, $qnext, 0, 1, 1);
	}
	echo '</p>';
}
if(!($items[3] == 'a' || $items[3] == 'd') && mysql_num_rows(mysql_query($qprev))) {
	echo '<p class="optionBody">前の記事:';
	$blog -> showUsingQuery($bpage, $qprev, 0, 1, 1);
	echo '</p>';
}

if を読みやすくするために「{}」を挿入してますが、僕が追記した個所は echo 文のみです。何度も試行錯誤しながら発見した場所ですので、もう理屈は全然わかりませんが(笑)、とにかく新しい記事には「次の記事」、古い記事には「前の記事」と表示させることができました。

「次の記事」「前の記事」を挿入した個所がテンプレート展開前で、「</p>」を挿入した個所がテンプレート展開後、という感じだと思います。

Tag(s): NP_MultiBlogs

Comment Form (policy)

(メールアドレスは非公開です)

Others
Newest 5 Items

NP_GoogleMapsにオリジナルマーカーを表示

BLOG.phpのPHP Warning

CPIでNucleus(UTF-8)

NP_znItemFieldEX|「本日」の条件判断を修正

NP_OnlyImg|高さを有効に

Nucleus CMS: Pure Publishing