📃
【Movable Type】ウェブページでフォルダ情報を出力する際の留意事項
概要
ウェブページの一覧や個別ページを出力する際、フォルダ名やフォルダIDも出力することがあります。
これらフォルダに関する情報をウェブページで利用する際ははすこし注意が必要なため、本記事ではこの内容について解説しています。
なお、ウェブページ一覧を出力する方法については、以下記事をご参考ください。
ウェブページでフォルダ情報を出力する
ウェブページの一覧や個別ページにおいて、そのウェブページが属しているフォルダの情報を表示する場合は、いったん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>
記事の一覧や個別ページではMTCategoryLabel
やMTCategoryID
は変数を定義しなくてもそのまま利用できるので、ウェブページも同様だと思ってしまうのですが、上記のように一手間必要です。
変数を定義しなくても利用できるのですが、本来推奨されている利用方法ではないようです。
<!-- 出力処理はされるけど推奨されない書き方 -->
<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>
Discussion