MovableType.net 逆引き辞典

応用

特定のフォルダの下層フォルダを一覧で表示する

同じフォルダ内に作成したウェブページを一覧します。
実際にブログで一覧を作成する際は、今表示しているページのリンクを外したり、フォルダの設定がないページの処理、スタイルを変更する…といったアレンジが必要な場合もあるでしょう。
今回の例ではフォルダが設定されていないウェブページの場合は、その他としてまとめて表示します。

使用するMTタグ

  • mt:PageFolder
  • mt:FolderLabel
  • mt:IfFolder
  • mt:SetVarBlock
  • mt:PagesHeader
  • mt:PagesFooter

  • mt:TopLevelFolersは最上位のフォルダからサブフォルダを含めたリストを表示するので、その次のmt:IfFolderのnameに指定したいフォルダ名を入力します。
    これにより特定のフォルダに限定でき、mt:SubFolderで下層のフォルダの情報を取得する、という流れになります。

    まず、今表示しているウェブページの格納されているフォルダ名をmt:SetVarBlockで変数として取り出します。
    また、mt:PageID setvar="id"で現在表示しているウェブページのIDを変数にしておきます。
    mt:IfFolderではウェブページがフォルダ内にある場合とない場合で分けます。
    mt:Pagesでは、先ほどpage_folderとして変数にした値でフィルターし、同じフォルダ内のウェブページ一覧を表示します。
    mt:Ifでは、現在表示しているウェブページかどうかをIDによって比較し、現在のページではリンクを無しにしclassを追加するようにしています。

    以下、ウェブページアーカイブテンプレートへの記述例です。

    記述サンプル

    記述例

    <div>
      <mt:SetVarBlock name="page_folder"><mt:PageFolder><$mt:FolderLabel$></mt:PageFolder></mt:SetVarBlock>
    <$mt:PageID setvar="id"$>
    <mt:IfFolder>
      <mt:Pages folder="$page_folder">
        <mt:PagesHeader>
          <h1><$mt:Var name="page_folder"$></h1>
          <ul>
        </mt:PagesHeader>
            <mt:If tag="pageid" eq="$id"><li><$mt:PageTitle$></li><mt:Else>
            <li><a href='<$mt:PagePermalink$>'><$mt:PageTitle$></a></li></mt:If>
        <mt:PagesFooter>
          </ul>
        </mt:PagesFooter>
      </mt:Pages>
    <mt:Else>
      <mt:Pages no_folder="1">
        <mt:PagesHeader>
          <h1>その他</h1>
          <ul>
        </mt:PagesHeader>
            <li><a href='<$mt:PagePermalink$>'<mt:If tag="entryid" eq="$id"></mt:If>><$mt:PageTitle$> </a></li>
        <mt:PagesFooter>
          </ul>
        </mt:PagesFooter>
      </mt:Pages>
    </mt:IfFolder>
    </div>