MovableType.net 逆引き辞典

応用

フォルダのトップページをカスタムフィールドで実現する

フォルダを作ってウェブページを作成していく場合、フォルダのトップページ(indexページ)が必要な場合があります。
今回はその実装方法をご紹介します。
ベーステーマでは、Public Organization などで使用されています。

ウェブページに機能を持たせるため、カスタムフィールドを使用します。
まずはウェブページのカスタムフィールドを設定します。識別子はfolder_topです。

すると、ウェブページの編集ページにチェックボックスが表示されます。

次に実際にアーカイブテンプレートのウェブページへの実装例です。
本文を表示させた後に、条件分岐で読み込んだ folder-pages の内容を表示させます。
folder-pagesの内容は、mt:Ifでカスタムフィールドの識別子folder_topの値が1のときにというモジュールを読み込んで表示する、という条件を指定します。

使用するMTタグ

記述サンプル

ウェブページテンプレート記述例

<div>
  <$mt:PageBody$>
  <$mt:PageMore$>
  <mt:If tag="CustomFieldValue" identifier="folder_top">
    <$mt:Include module="folder-pages"$>
  </mt:If>
</div>

読み込み用の、folder-pagesモジュールも作成します。
そのウェブページが属するフォルダにあるウェブページ一覧を表示し、さらにサブフォルダのウェブページ一覧も表示する、といった処理をしています。

folder-pagesモジュールテンプレート記述例

<div>
<mt:SetVarBlock name="page_folder"><mt:PageFolder><$mt:FolderLabel encode_html="1"$></mt:PageFolder></mt:SetVarBlock>
<$mt:PageID setvar="id"$>
<mt:IfFolder>
  <mt:Pages sort_order="ascend" folder="$page_folder" field:folder_top="0">
  <a href="<$mt:PagePermalink$>"> 
  <div>
  <mt:If tag="PageID" ne="$id">
    <h1><$mt:PageTitle encode_html="1"$></h1>
  </mt:If>
  </div>
  </a>
  </mt:Pages>
<mt:SubFolders>
  <div>
    <h1><$mt:FolderLabel encode_html="1"$></h1>
    <mt:Pages sort_order="ascend">
      <a href="<$mt:PagePermalink$>"> 
        <mt:If tag="PageID" ne="$id">
          <h1><$mt:PageTitle encode_html="1"$></h1>
        </mt:If>
      </a>
    </mt:Pages>
  </div>
<$mt:SubFolderRecurse$>
</mt:SubFolders>
</mt:IfFolder>
</div>

実際の運用方法

フォルダ配下のトップに設定する場合には、ウェブページの編集画面で作成したfolder_topのカスタムフィールドにチェックを入れ、フォルダを選んだ後にファイル名をindexに指定します。

※ フォルダの一番上に表示するには、現状は公開日を同じフォルダ内のウェブページの中で一番早い(過去)日時にするなど調整してください。