📃

【Movable Type】ウェブページでフォルダ情報を出力する際の留意事項

2024/12/28に公開

概要

ウェブページの一覧や個別ページを出力する際、フォルダ名やフォルダIDも出力することがあります。
これらフォルダに関する情報をウェブページで利用する際ははすこし注意が必要なため、本記事ではこの内容について解説しています。

なお、ウェブページ一覧を出力する方法については、以下記事をご参考ください。

https://zenn.dev/srkkr/articles/6b514d982060f0

ウェブページでフォルダ情報を出力する

ウェブページの一覧や個別ページにおいて、そのウェブページが属しているフォルダの情報を表示する場合は、いったんMTPageFolderブロックを利用して出力した値を変数として定義し、利用します。
以下が主なフォルダの情報です。

  • フォルダID(MTFolderID
  • フォルダ名(MTFolderLabel
  • フォルダのベースネーム(MTFolderBasename
  • フォルダの説明(MTFolderDescription

以下の例では、Webページ一覧にフォルダ名とフォルダベースネームを出力しています。
※この項目の例では、以下のフォルダが設定されている想定です(括弧内はベースネーム)

  • フォルダA(folderA
  • フォルダB(folderB
  • フォルダC(folderC
<!-- MTML -->
<mt:Pages lastn="0">
  <!-- 出力するフォルダ情報の値をそれぞれ変数に定義する -->
  <mt:SetVarBlock name="folderLabel"><mt:PageFolder><$mt:FolderLabel$></mt:PageFolder></mt:SetVarBlock>
  <mt:SetVarBlock name="folderBasename"><mt:PageFolder><$mt:FolderBasename$></mt:PageFolder></mt:SetVarBlock>
  <!-- 変数の定義ここまで -->
  <mt:PagesHeader>
    <h2>ウェブページ一覧</h2>
    <ul>
  </mt:PagesHeader>
      <li class="<$mt:Var name='folderBasename'$>"><a href="<$mt:PagePermalink$>"><$mt:PageTitle$>(<$mt:Var name="folderLabel"$>)</a></li>
  <mt:PagesFooter>
    </ul>
  </mt:PagesFooter>
</mt:Pages>

<!-- 出力結果 -->
<h2>ウェブページ一覧</h2>
<ul>
  <li class="folderC"><a href="ウェブページリンクurl">タイトル3(フォルダC)</a></li>
  <li class="folderB"><a href="ウェブページリンクurl">タイトル2(フォルダB)</a></li>
  <li class="folderA"><a href="ウェブページリンクurl">タイトル1(フォルダA)</a></li>
</ul>

MTPagesのループ内で、出力したいフォルダ情報である「フォルダ名」と「フォルダメースネーム」の値をそれぞれMTSetVarBlockで変数folderLabel folderBasenameとして定義します。
同じくMTPagesのループ内で、それぞれの変数をMTVarで出力します。

なお、MTSetVarBlockを利用して変数を定義する場合、改行により変数の値が正常に入らないため、1行で書いています。
整形したコードは以下です。

<!-- 出力するフォルダ情報の値をそれぞれ変数に定義する(整形ver) -->
<mt:SetVarBlock name="folderLabel">
  <mt:PageFolder><$mt:FolderLabel$></mt:PageFolder>
</mt:SetVarBlock>

<mt:SetVarBlock name="folderBasename">
  <mt:PageFolder><$mt:FolderBasename$></mt:PageFolder>
</mt:SetVarBlock>

記事の一覧や個別ページではMTCategoryLabelMTCategoryIDは変数を定義しなくてもそのまま利用できるので、ウェブページも同様だと思ってしまうのですが、上記のように一手間必要です。
変数を定義しなくても利用できるのですが、本来推奨されている利用方法ではないようです。

<!-- 出力処理はされるけど推奨されない書き方 -->
<mt:Pages lastn="0">
  <mt:PagesHeader>
    <h2>ウェブページ一覧</h2>
    <ul>
  </mt:PagesHeader>
      <li class="<$mt:FolderBasename$>"><a href="<$mt:PagePermalink$>"><$mt:PageTitle$>(<$mt:FolderLabel$>)</a></li>
  <mt:PagesFooter>
    </ul>
  </mt:PagesFooter>
</mt:Pages>

公式リファレンス

MT

PowerCMS

Discussion