読者です 読者をやめる 読者になる 読者になる

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>
  1. MTFoldersでフォルダ一覧をループ
  2. MTFolderPathが指定したフォルダのURL(folder/sub-folder)ならfolderlabelをtarget_folder_labelに代入
  3. あとはMTPagesのfolderモディファイアでtarget_folder_labelを指定すればいい。