以下の独自タグは使い方と説明がわかりづらく、利用頻度も低いと思われますので機能追加版用としています。

階層型のグローバルメニュー

[[ First 階層型グローバルメニュー ]]
グローバルメニューをトップページと同階層のページページだけでなく子ページも含めて生成します。 トップページと同階層のページは[[ First グローバルメニュー ]]と同じクラス名を適用しますが、 下の階層の要素には config.json 内の「gmH」以下の設定で css クラスを付与します。
ドロップダウンしたりする javascript は用意していません。

テンプレートを使用したメニュー

[[ First グローバルメニュー #テンプレートファイル名# ]]

標準ではグローバルメニューのリンクテキストはページのタイトルが使用されますが、 テンプレートを指定することでほぼ自由な形で生成できます。

例えば menu-item.html (ファイル名は任意です)を templates/parts フォルダに以下の内容で置いて [[ First グローバルメニュー #menu-item.html# ]] とすると、トップページと同階層にあるページを menu-item.html に流し込んで要素を生成します。
menu-item.html の例

<li class="[[ First globalMenuActiveLi ]]">
  <a href="[[ First url ]]" class="[[ First globalMenuActiveA ]]">
    [[ First ページタイトル ]]
    <span>[[ First ファイル名 ]]</span>
  </a>
</li>

上記のように書くと、「ページタイトル」と「ファイル名」がリンクテキストになります。
また、「[[ First globalMenuActiveLi ]]」は生成するページが該当ページならプロジェクトで設定した「アクティブなLIのクラス」、 「[[ First globalMenuActiveA ]]」は「アクティブなAのクラス」、 該当ページでない場合は空文字と置換されます。
なお、最終的に「class=""」のようにクラス名を持たないクラス指定が残った場合は自動的に削除します。

この場合 UL タグがないので(書くと独立したリストになる)ので下の様に、 使用する部分に UL タグを書く必要があります。

<ul class="globalmenu">
  [[ First グローバルメニュー #menu-item.html# ]]
</ul>

他にも、ページデータ等も使用可能なのでいろいろとできると思いますし、 UL > LI のリストでない要素でも生成できると思います。

トップページと同階層のページのみリスト化します。

コンテンツの一部を一覧表示

ブログのトップページに最新記事の一部が表示されているものをよく見ますが、 似たことができるようにするために以下を用意。

Bootstrap3(機能追加版用) で使用しています。サンプルプロジェクトをダウンロードして参考にしてください。

[[ First ページを整形して表示 フォルダID #フォルダID#テンプレートファイル#最大#日付昇順|日付降順|ツリー# ]]
指定されたフォルダ内のページを子階層まで含めてテンプレートファイルで整形して置換します。
最大数を 0 にすると全ページ出力します。
並び順は登録日の昇順/降順かツリーの並びの3通り指定できます。

例えば以下のようにトップページのテンプレートファイルか、メインコンテンツ内に指定します。

トップページのテンプレートかメインコンテンツ内に以下を記述
[[ First ページを整形して表示 フォルダID #5#headline.html#3#日付昇順# ]]

とすると、フォルダID 5 の子孫ページの中から最大 3 ページを templates/parts 内のファイル headline.html で整形し登録日の降順に並び替えて表示します。
以下が整形用テンプレートの例です。

templates/parts/headline.html の内容の例
<h1>[[ First ページへのリンク ]]</h1>
[[ First 親フォルダのリスト 階層レベル指定 #1# ]]
[[ First メインコンテンツの導入部 ]]
<div>
作成日:[[ First 登録日 ]] 更新日:[[ First 最終保存日 ]]
</div>
<div>
<a href="[[ First url ]]">続きを読む</a>
</div>

該当ページのメインコンテンツに[[ First ここまで導入部 ]] が記述されている必要があります。
整形用テンプレートファイルには他の First タグも使用できます。

[[ First メインコンテンツの導入部 ]]
First で入力されたコンテンツ部分のHTMLの「[[ First ここまで導入部 ## ]]」があるところまでと置換されます。
[[ First ここまで導入部 ## ]]
メインコンテンツにこれを書いておくと 「[[ First メインコンテンツの導入部 ]]」でそれ以降が省略されます。 閉じタグ等が必要になる場合は # と # の間に必要なタグを書いてください。

※ markdown で記述している場合は markdig で html に変換されたときにどうなっているか確認する必要があるかもしれません。

<p>
いろはにほへと
ちりぬるを[[ First ここまで導入部 # ... </p># ]]
わかよたれそ
つねならむ
うゐのおくやま
けふこえてあさきゆめみし
ゑひもせすん
</p>
[[ First url ]]
ページの url 文字列と置換されます。
生成するページの URL が必要になる場合はほとんどないと思いますが、
[[ First ページを整形して表示 フォルダID #フォルダID#テンプレートファイル#最大# ]]
のテンプレート内で整形表示されているページから自身へリンクする場合に必要になります。
[[ First ページへのリンク ]]
生成中のページ自身へのリンクを生成します。
通常は必要ないと思いますが、
[[ First ページを整形して表示 フォルダID #フォルダID#テンプレートファイル#最大# ]]
のテンプレート内で整形表示されているページから自身へリンクする場合に使用します。
<a href="ページのurl">ページのタイトル</a>が生成され、置換されます。
[[ First 親フォルダのリスト 階層レベル指定 #0# ]]
[[ First 親フォルダのリスト ]] と同じですが、始まりの階層を指定できます。0 にするとトップページまで表示されます。
ページが属するフォルダ名をカテゴリとして表示する用途を想定しています。

ページをタグ付けして一覧表示する

ブログ等で記事をタグ付けしてあるのをよく見ますがそれと似たことができるようにと思いましたが、 これもややこしい上にちょっと問題ありかもしれません。

ページにタグ付けをする場合は以下の条件が必要です。

  1. 一覧を表示するページ名のファイル名は必ず tags.html とする
  2. tags.html は必ずトップページと同階層に置くこと
  3. tags.html 自体をタグ付けしない(自己参照で永久ループの可能性あり)

各ページにタグ付けをする場合は任意のノードをツリーで選択して「ノード」タブの右下部分でタグの追加、設定、解除、削除等ができます。

非常に解り辛いですが、タグ付けされたページをタグ名と一緒にリスト表示したい場合、 2段階のテンプレートファイルが必要になります。

  1. それぞれのタグを表示するテンプレート
  2. 同じタグを持つページのリストを表示するためのテンプレート
[[ First タグとページのリスト #テンプレートファイル名# ]]
例えば「[[ First タグとページのリスト #taglist.html# ]]」とした場合の taglist.html は以下のような感じです。
taglist.html の例(タグとページリストの配置用)
<h1 id="[[ First タグ名 ]]">[[ First タグ名 ]]</h1>
[[ First タグ付けされたページ #tagged_page.html# ]]
<hr />
上の例だと、h1 要素の id にタグ名がそのまま日本語等で出ますので html 的に正しくない可能性があります。 かといって url エンコードしても意味がない気もしますし。(一応 [[ First URLエンコードしたタグ名 ]] てのも使えます。) さらに「tagged_page.html」が必要になります。
tagged_page.html の例(ページを整形するテンプレート)
<h2>[[ First ページへのリンク ]]</h2>
<p>
[[ First 登録日 ]]
</p>
[[ First タグリスト ]]
ページに付けられているタグを UL > LI > A のリストで生成します。 この時、それぞれのタグにはアンカーが付きますが、その href 属性には tags.html#タグ名 が指定されます。

ページのプロパティをテスト

ページの id, ファイル名, url, 親ID, url 中のスラッシュの数をチェックできるようにしました。

Butter Cake(機能追加版用) のグローバルメニューで一部使用していますので参考にしてください。

[[ First ? #id#数字#真#偽# ]]
ページの ID が指定値なら「真」の文字列、それ以外なら「偽」の文字列を出力します。
[[ First ? #name#ページ名の先頭から任意の文字列#真#偽# ]]
ページのファイル名が指定の文字列で始まるなら「真」の文字列、それ以外なら「偽」の文字列を出力
[[ First ? #url#url の先頭から任意の文字列#真#偽# ]]
ページの url が指定の文字列で始まるなら「真」、それ以外なら「偽」の文字列を出力
[[ First ? #parentid#数字#真#偽# ]]
ページの親ノードの ID が指定の数字なら「真」、それ以外なら「偽」の文字列を出力
[[ First ? #count/#url に含まれる / の数#真#偽# ]]
ページの url 中の / の数が指定した数なら「真」、それ以外なら「偽」の文字列を出力

最終更新日:2020 年 02月 25 日