忘録としての投稿です。
数ヶ月前から取り組んでいた「関連記事一覧」を各記事の中に組み込みました。
初めにタイトル通りのことを各記事に表示できたらいいなぁ・・から始まりました。
当然、何もない中から書くのは難しいので、参考となる物を組み込んでみます。
<mt:If name=”entry_archive”>
<$mt:EntryID setvar=”entryid”>
<$mt:SetVar name=”count” value=”0″>
<mt:EntryIfTagged>
<mt:SetVarBlock name=”Sametags”><mt:EntryTags glue=’ OR ‘><$mt:TagName></mt:EntryTags></mt:SetVarBlock>
<mt:Entries lastn=”6″ tags=”$Sametags” setvar=”related_entries”>
<mt:If tag=”EntryID” ne=”$entryid”>
<mt:If name=”count” lt=”5″>
<li class=”kanren”><a href=”<mt:EntryLink abs2rel=”1″>”> <p class=”photo”><mt:EntryAssets sort_order=”ascend” type=”image” lastn=”1″><img src=”<mt:AssetThumbnailURL width=”160″ square=”1″>” alt=”<mt:AssetLabel>” width=”120″ height=”120″></mt:EntryAssets></p> <p class=”title”><mt:EntryTitle></p></a></li> <$mt:SetVar name=”count” op=”++”>
</mt:If>
</mt:If>
</mt:Entries>
<mt:Else>
<$mt:EntryCategory setvar=”Samecat”>
<mt:Entries lastn=”6″ category=”$Samecat” setvar=”related_entries”>
<mt:If tag=”EntryID” ne=”$entryid”> <mt:If name=”count” lt=”5″>
<li class=”kanren”><a href=”<mt:EntryLink abs2rel=”1″>”> <p class=”photo”><mt:EntryAssets sort_order=”ascend” type=”image” lastn=”1″><img src=”<mt:AssetThumbnailURL width=”160″ square=”1″>” alt=”<mt:AssetLabel>” width=”120″ height=”120″></mt:EntryAssets></p> <p class=”title”><mt:EntryTitle></p></a></li> <$mt:SetVar name=”count” op=”++”>
</mt:If>
</mt:If>
</mt:Entries>
</mt:EntryIfTagged>
<mt:If name=”count”>
<div id=”widget-kanren”> <h3 id=”kanren”>この<MTEntryTitle>と関係する商品</h3> <ul> <$mt:GetVar name=”related_entries”> </ul> </div>
</mt:If>
</mt:If>
これは、各記事に設定した「タグ」が一致する物を表示し、同じ記事は除外する仕様となってます。
とりあえずやってみる!
先ほどのテンプレートを各記事文末にくる様にアーカイブテンプレートに組み込んでみるとこんな感じで表示…
私のイメージしていたのとはかなり?違っていて、この表示(写真)では同じサブ(孫)カテゴリーに属するミニバックホーは除外したかったのです!
で、Movable Typeのテンプレートタグでどれを使えばいいか試行錯誤の開始でした…
この中で最初の思いついたのが。「MTCategoryLabel」を使って組み込んでみますが、同じ表示になります。
この時どのように組み込んだかは、もう忘れました…(^^;
迷ったら検索
いろいろテンプレートタグを見て考えるのですが一向に分からないので、このキーワード「関連記事 同じサブカテゴリの記事は除外 movabletype」で検索。
この検索で私の思っている様なタグの使い方がなく、「SimilarEntries」というプラグインにしてみようか?とも思いましたが、商用は¥10,000(+税)がかかるというので当然却下!
試行錯誤の連続のあとに・・
検索では、見つからなかったので(探し方が悪いだけかも?)テンプレートタグの中で、どれがいいか下記の2点絞って探してみます。
- 今表示されている記事のカテゴリの取得
- その表示されている記事と同じカテゴリの記事は除外する
「MTSubCategories」は良さそうでしたが、ブロックタグなのでカテゴリの取得はムリ・・・
そこから考えること1~2週間、カテゴリの取得なので「MTSetVar」か「MTSetVarBlock」を使い、再度「MTCategoryLabel」をつかって・・
<MTSetVarBlock name=”thiscatlabel”><$MTCategoryLabel></MTSetVarBlock>
とやって見ましたが、思う様に行かず・・・
「MTCategoryLabel」がムリなら「MTSubCategoryPath」でどうだ!とやってみると・・・
今までの苦労がいとも簡単にと言うか、すんなり表示!
これで最初に思った通りの表示になりました…(^^;
内容は…
1行目:表示されている記事のカテゴリパスを取得
8&22行目:MTEntries内で 9~18 & 23~32行目:MTUnless内で取得したカテゴリと同じカテゴリ記事を除外
<MTSetVarBlock name=”thiscatpath”><$MTSubCategoryPath>
</MTSetVarBlock> <mt:If name=”entry_archive”> <$mt:EntryID setvar=”entryid”>
<$mt:SetVar name=”count” value=”0″>
<mt:EntryIfTagged> <mt:SetVarBlock name=”Sametags”><mt:EntryTags glue=’ OR ‘><$mt:TagName>
</mt:EntryTags></mt:SetVarBlock> <mt:Entries lastn=”6″ tags=”$Sametags” setvar=”related_entries”> <mt:unless tag=”SubCategoryPath” like=”$thiscatpath”> <mt:If tag=”EntryID” ne=”$entryid”> <mt:If name=”count” lt=”5″> <li class=”kanren”><a href=”<mt:EntryLink abs2rel=”1″>”> <p class=”photo”><mt:EntryAssets sort_order=”ascend” type=”image” lastn=”1″><img src=”<mt:AssetThumbnailURL width=”160″ square=”1″>” alt=”<mt:AssetLabel>” width=”120″ height=”120″></mt:EntryAssets></p> <p class=”title”><mt:EntryTitle></p></a></li> <$mt:SetVar name=”count” op=”++”>
</mt:If> </mt:If> </mt:unless> </mt:Entries> <mt:Else> <$mt:EntryCategory setvar=”Samecat”>
<mt:Entries lastn=”6″ category=”$Samecat” setvar=”related_entries”> <mt:unless tag=”SubCategoryPath” like=”$thiscatpath”> <mt:If tag=”EntryID” ne=”$entryid”> <mt:If name=”count” lt=”5″> <li class=”kanren”><a href=”<mt:EntryLink abs2rel=”1″>”> <p class=”photo”><mt:EntryAssets sort_order=”ascend” type=”image” lastn=”1″><img src=”<mt:AssetThumbnailURL width=”160″ square=”1″>” alt=”<mt:AssetLabel>” width=”120″ height=”120″></mt:EntryAssets></p> <p class=”title”><mt:EntryTitle></p></a></li> <$mt:SetVar name=”count” op=”++”>
</mt:If> </mt:If> </mt:unless> </mt:Entries> </mt:EntryIfTagged> <mt:If name=”count”> <div id=”widget-kanren”> <h3 id=”kanren”>この<MTEntryTitle>と関係する商品</h3> <ul> <$mt:GetVar name=”related_entries”>
</ul> </div> </mt:If> </mt:If>
コメント