MovableType

MTでサイドナビ

kurumin

アーカイブテンプレート

各モジュール読み込み

<mt:Ignore>
サイドナビ生成
</mt:Ignore>
<mt:Include module="generate_folder_list_module">
<mt:Include module="generate_sidenav" blog_id="1">

出力

<mt:Var name="_function" key="sidenav" _data="$folder_list">

フォルダ構造生成

<mt:Ignore>
初期設定
</mt:Ignore>
<mt:SetVarBlock name="top_folder"><mt:TopLevelFolder><mt:FolderBasename></mt:TopLevelFolder></mt:SetVarBlock>
<mt:SetVar name="is_first_loop" value="1">
<mt:SetVar name="num" value="0">
<mt:SetVar name="sub_num" value="0">
<mt:SetVar name="sub_folder_count" value="0">

<mt:ignore>
多次元配列生成
@type {array} folder_list フォルダ一覧
</mt:ignore>
<mt:YAML2Vars name="folder_list">
<mt:Folders parent="0">
<mt:SetVarBlock name="loop_folder"><mt:TopLevelFolder><mt:FolderBasename></mt:TopLevelFolder></mt:SetVarBlock>
  <mt:If name="loop_folder" eq="$top_folder">
    <mt:If name="is_first_loop">
folder_label: <mt:FolderLabel>
<mt:SetVarBlock name="folder_path">/<mt:FolderPath>/</mt:SetVarBlock>
folder_path: <mt:Var name="folder_path" regex_replace=".html/",".html">
<mt:Ignore>サブフォルダの数カウント</mt:Ignore>
<mt:SubFolders>
  <mt:SetVar name="sub_folder_count" op="++">
</mt:SubFolders>
<mt:Ignore>カウントここまで</mt:Ignore>
sub_folder_count: <mt:If name="sub_folder_count"><mt:Var name="sub_folder_count"></mt:If>
sub_folders:
<mt:SetVar name="sub_folder_count" value="0">
<mt:SetVar name="is_first_loop" value="0">
    <mt:Else>
  <mt:Var name="num">:
    folder_label: <mt:FolderLabel>
    <mt:SetVarBlock name="folder_path">/<mt:FolderPath>/</mt:SetVarBlock>
    folder_path: <mt:Var name="folder_path" regex_replace=".html/",".html">
  <mt:Ignore>サブフォルダの数カウント</mt:Ignore>
  <mt:SubFolders>
    <mt:SetVar name="sub_folder_count" op="++">
  </mt:SubFolders>
  <mt:Ignore>カウントここまで</mt:Ignore>
    sub_folder_count: <mt:If name="sub_folder_count"><mt:Var name="sub_folder_count"></mt:If>
  <mt:SetVar name="sub_folder_count" value="0">
  <mt:SetVar name="num" op="++">
    sub_folders:<mt:SubFolders>
      <mt:Var name="sub_num">:
        folder_label: 【sub】<mt:FolderLabel>
        <mt:SetVarBlock name="folder_path">/<mt:FolderPath>/</mt:SetVarBlock>
        folder_path: <mt:Var name="folder_path" regex_replace=".html/",".html">
      <mt:SetVar name="sub_num" op="++">
</mt:SubFolders>
<mt:SetVar name="sub_num" value="0">
    </mt:If>
  </mt:If>
</mt:Folders>
</mt:YAML2Vars>

HTMLを生成する関数

<mt:Ignore>
配列は各サイトで定義
</mt:Ignore>
<mt:SetVarTemplate name="_function" key="sidenav" note="サイドナビを生成する関数">
<mt:Ignore>ヘッダー(第二階層)情報取得</mt:Ignore>
<mt:SetVarBlock name="folder_label"><mt:Var name="_data" key="folder_label"></mt:SetVarBlock>
<mt:SetVarBlock name="folder_path"><mt:Var name="_data" key="folder_path"></mt:SetVarBlock>
<mt:SetVarBlock name="sub_folder_count"><mt:Var name="_data" key="sub_folder_count"></mt:SetVarBlock>
<div class="sideNav">
  <div class="sideNav__header"><a href="<mt:Var name="folder_path">"><mt:Var name="folder_label"></a></div>
  <mt:If name="sub_folder_count">
    <ul class="sideNav__lv1">
      <mt:SetVarBlock name="counter"><mt:Var name="sub_folder_count" value="1" op="-"></mt:SetVarBlock>
      <mt:Ignore>ループ開始</mt:Ignore>
      <mt:For var="i" from="0" to="$counter">
        
        <mt:Ignore>第三階層の情報取得</mt:Ignore>
        <mt:SetVarBlock name="folder_label"><mt:GetHashVar name="_data" key="sub_folders","$i","folder_label"></mt:SetVarBlock>
        <mt:SetVarBlock name="folder_path"><mt:GetHashVar name="_data" key="sub_folders","$i","folder_path"></mt:SetVarBlock>
        <mt:SetVarBlock name="sub_folder_count"><mt:GetHashVar name="_data" key="sub_folders","$i","sub_folder_count"></mt:SetVarBlock>
        <li><a href="<mt:Var name="folder_path">"><mt:Var name="folder_label"></a>
        <mt:If name="sub_folder_count">
          <ul>
          <mt:SetVarBlock name="counter"><mt:Var name="sub_folder_count" value="1" op="-"></mt:SetVarBlock>
          <mt:For var="j" from="0" to="$counter">
            <mt:Ignore>第四階層の情報取得</mt:Ignore>
            <mt:SetVarBlock name="folder_label"><mt:GetHashVar name="_data" key="sub_folders","$i","sub_folders","$j","folder_label"></mt:SetVarBlock>
            <mt:SetVarBlock name="folder_path"><mt:GetHashVar name="_data" key="sub_folders","$i","sub_folders","$j","folder_path"></mt:SetVarBlock>
            <li><a href="<mt:Var name="folder_path">"><mt:Var name="folder_label"></a></li>
          </mt:For>
          </ul>
        </mt:If>
        </li>
      </mt:For>
    </ul>
  </mt:If> 
</div>
</mt:SetVarTemplate>
ABOUT ME
記事URLをコピーしました