linkerは「人と人」「人と情報」「人と物」をつなぐデザインユニットです。

PowerCMSのグループ機能で前後のリンクを作成するメモ

みなさん、こんにちは、まーしーです。

PowerCMSにはエントリーやウェブページなどをグループとしてまとめて管理する機能があります。

コンテンツ管理 | PowerCMS ver.3
http://www.powercms.jp/features/contents_management.html

このグループを使ってブログ記事やウェブページを並び替えたりして自由に表示させることができるようになります。
並び替え用のカスタムフィールドを用意するとか、日付で並び替える必要がなくなるので便利ですね。

そんなグループ機能を使っていて、ある記事の前後の記事はどうやって取り出したらいいのだろう??と思ったので少し考えてみました。

組み合わせを考えてみる

1,2,3,4,5というエントリーがあったら

prev(2):1
prev(3):2
prev(4):3
prev(5):4

next(1):2
next(2):3
next(3):4
next(4):5

こんな感じのがつくれればいいんだろう、、、というところまではなんとなく理解。

配列、ハッシュあたりを使えばできるんだろうなぁ、と思いつつこの辺はどうも苦手でして><
でもそんなことは言ってられないので「配列、ハッシュ、<mt:loop>、<mt:for> movabletype/Documentation Wiki」を読み込んでみました。

配列、ハッシュ、<mt:loop>、<mt:for> movabletype/Documentation Wiki
https://github.com/movabletype/Documentation/wiki/Japanese-mtml-guide-3-3

まず最初に

next(1):2

prev(2):1
next(2):3

prev(3):2
next(3):4

prev(4):3
next(4):5

prev(5):4

こんな組み合わせを考えたりしましたが、そもそも3つの値を保存しておけるわけないし、ということで、

prev(2):1
next(1):2

prev(3):2
next(2):3

prev(4):3
next(3):4

prev(5):4
next(4):5

という組み合わせをループで作ればいいのかということで解決。

MTMLを考えてみる

5つのエントリーに対して、4組あればいいので、

<MT:GroupPages group="hogehoge">
<mt:Unless name="__first__">
<mt:pageID setvar="thisID" />
<mt:Var name="prev{$thisID}" value="$prevID" />
<mt:Var name="next{$prevID}" value="$thisID" />
</mt:Unless>
<mt:pageID setvar="prevID"/>
</MT:GroupPages>

という感じで書いてみました。
prev、nextというハッシュにセットするかんじです。

表示させる側は
(ウェブページアーカイブを想定してます)

<mt:PageID setvar="curID">
<mt:Var name="prev{$curID}" setvar="prevID"/>
<mt:Var name="next{$curID}" setvar="nextID"/>

<ul>
<mt:If name="prevID">
<mt:Pages id="$prevID"><li><a href="<mt:PagePermalink>"><mt:PageTitle></a></li></mt:Pages>
</mt:If>
<mt:If name="nextID">
<mt:Pages id="$nextID"><li><a href="<mt:PagePermalink>"><mt:PageTitle></a></li></mt:Pages>
</mt:If>
</ul>

といったかんじです。

今のウェブページのIDをcurIDにセットして前後のウェブページのIDをprevID、nextIDとしてとりだして、直接IDでウェブページを指定してみました。

他にも配列を使って各IDをセットしておいて、表示させる際に自分のページが何番目かを計算して表示させる、といった方法も考えられますね。

まだまだ理解ができていないところがありますが、ハッシュや配列に入れた方がよさそうな場合もあるので、もう少し積極的に使ってみようと思いました。

「Movable Type 5.1 Webサイト制作ガイド Volume 2」も参考にさせてもらいました

この辺の配列・ハッシュの話とかは藤本さんの「Movable Type 5.1 Webサイト制作ガイド Volume 2」に詳しく書かれていますね。

The blog of H.Fujimoto : 「Movable Type 5.1 Webサイト制作ガイド Volume 2」特設ページ
http://www.h-fj.com/blog/mt51bookvol2/

こちらも改めて読み直してみました。

ハッシュ、配列に入れる際にmt:entriesといったループとかの中での書き方とか参考になります。

関連リンク