応用
フォルダのトップページをカスタムフィールドで実現する
カスタムブロックの出力テスト
カスタムブロックBlockEditorBlocksのテスト
フォルダを作ってウェブページを作成していく場合、フォルダのトップページ(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に指定します。
※ フォルダの一番上に表示するには、現状は公開日を同じフォルダ内のウェブページの中で一番早い(過去)日時にするなど調整してください。