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 "» 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

