MovableTypeで特定のフォルダのページ一覧を出力
MTを使ってて、「あるフォルダ配下のページ一覧を取得」って場面があり、
そのためにMTPagesのfolderモディファイアを使うのだけど、
このfolderモディファイア、値に指定できるのはMTFolderLabel。
はじめMTFolderBasenameで指定できるのかと思ってハマった。
英語ドキュメントの方にはちゃんと書いてあるんですよね。
Use folder label (not folder basename) as the value.
そもそもフォルダのpathが変わることはあまりない(URLとして使われるから)けど、
folderlabel(フォルダ編集の名前の部分)って適当にいじりやすいから、
それをfolderモディファイアに指定してしまうと、
「フォルダの名前を編集」→「一緒にMTPagesのfolderモディファイアの部分も修正」
みたいな作業が毎回発生してしまい面倒。
ということでどうも使いにくい。
なので、フォルダのpathで指定できるように書いてみた。
<$MTBLogUrl$>folder/sub-folder
配下にあるページ一覧を表示したい時は以下のような感じ。
<MTSetVars> target_folder_label=<MTFolders><MTIf tag="MTFolderPath" eq="folder/sub-folder"><$MTFolderLabel$></MTIf></MTFolders> </MTSetVars> <MTPages folder="$target_folder_label" sort_order="descend"> <$MTPagePermalink$>:<$MTPageBasename$> </MTPages>
- MTFoldersでフォルダ一覧をループ
- MTFolderPathが指定したフォルダのURL(folder/sub-folder)ならfolderlabelをtarget_folder_labelに代入
- あとはMTPagesのfolderモディファイアでtarget_folder_labelを指定すればいい。