ラック
Home > CMS > 記事 > 2014年7月 > 関連する記事

関連する記事

カテゴリ: MODx

ブログではよく見かける「関連する記事」とか「同じカテゴリの記事」といった項目。ブログをここで運用しようと考えるならば、実装しないとなー、ということで実験。

…っていうことはですよ。使うものは「同じカテゴリやタグ(=テンプレート変数)が関連付けられたリソースを一覧として出力する」ことができるスニペットなので、それができそうなものは…はい、Dittoですよね。さすがDitto。

…やっぱり。ということで実装してみましょう。

まずはDittoスニペットを記述したチャンクを作成。仮に「CHUNK」という名前ということにしておきましょう。

	
<ul>
[!Ditto?
&phx=`0` //phxは使わない
&parents=`XX`
&hideFolders=`1` //コンテナは隠す
&depth=`2` //全ての階層を表示
&display=`all` //全件表示
&orderBy=`pub_date DESC`
&filter=`id,[*id*],2`  //filterは条件に一致するドキュメントを表示しないようにする。field(適用する変数名)、criterion(適用する対象)、mode(2は「等しい」)
&extenders=`tagging`
&tagData=`tags` //タグを使う
&tags=`[*tags*]` //タグを使う
&tagMode=`onlyTags`
&tagDelimiter=`,`
&tpl='@CODE:
	<li><a href="[~[+id+]~]">[+pagetitle+]</a></li>
' //表示パターン
!]
</ul>
	

こんな感じ。親リソースをparentで指定、このサイトの場合、各年月コンテナごとにエントリが格納されている2段階の構造になっているので、「コンテナは表示しない(hideFolders)」「全ての階層を表示(depth)」の指定をしているのはいつも通り。

今回はtagdataとtagsで使用するテンプレート変数を指定して(ここでカテゴリを指定すれば「同じカテゴリに属す記事」の一覧になりますね)、関連する記事一覧に自分自身が表示されていたらまずいのでfilterで自分は出力しないようにフィルタリングしているわけですね、なるほど。

 

各記事を出力するテンプレート(個別エントリ用のテンプレート)、タグの下にこんなコードを追加。

	
<h3>関連する記事</h3>
{{CHUNK}}
	

ここではチャンクをコールするだけ。左手は添えるだけ。

これで、各記事の下に同じタグが付いた記事とか、同じカテゴリに属す記事とかがリストアップされるようになりました。
…とはいっても、記事に複数のタグが付いている場合はどれか一つ同じタグが付いていたらリストアップされる状態なので、結構たくさん出力されてしまいます。
そこら辺はtagModeでonlyTagsではなく、onlyAllTagsなど別のパラメータを指定することである程度調整する必要があるかと。

すべてはDitto次第。ということで最後はDittoのパラメータとにらめっこしながら調整することになりますね。

タグ: スニペット, ブログ関係

 



関連する記事一覧