パンくずリスト
はじめに
Hugoでパンくずリストを作成します。
実装例
Hugoのページの実装例にそのものの記載があります。この例では、orderd listを作成します。
|
|
コードの解読
コードを解読してみました。親ページを順にたどっていき、ホームページに到達したら、ホームページからリンクを生成していきます。
- 2行目: breadcrumbnavを呼び出しています。引数は、
(dict "p1" . "p2" .)
です。 - 4行目: breadcrumbnavの定義です。
- 5行目: p1に親ページがあるか(.Parent)確認しています。その場合、p1を親要素(.p1.Parent)に設定して、breadcrumbnavを再帰呼び出しします。
- 7行目: p1に親ページがない場合、トップページか(.IsHome)を確認し、そうでなければ、p1をトップページ(.p1.Site.Home)に設定して、breadcrumbnavを再帰呼び出しします。
- 10行目: p1とp2が等しい場合は、最初に呼び出したページなので、
class=active
を設定します。 - 11行目: p1に対するリンクを作成します。
例えば、/a/b という構造がある場合、p1とp2は、以下のように変化していきます。class=acrive
を出力する必要がなければ、p2は不要であることがわかります。
sequenceDiagram
participant t as template
participant b1 as breadcrumbnav
participant b2 as breadcrumbnav
participant b3 as breadcrumbnav
t->>b1: p1=/a/b, p2=/a/b
b1->>b2: p1=/a, p2=/a/b
b2->>b3: p1=/, p2=/a/b
Note over b3: "/" へのリンクを出力
b3->>b2: return
Note over b2: "/a" へのリンクを出力
b2->>b1: return
Note over b1: "/a/b" へのリンクを出力
b1->>t: return
最終更新日
January 23, 2021