パンくず情報を多次元配列にまとめて、関数で出力する
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><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>