免責事項: これは、 Hugo フォーラムで回答が得られなかった質問の再投稿です。それが気に入らない場合はお知らせください。削除または編集します。
Hugo (静的サイト ジェネレーター) を使用して、企業のマーケティング サイトを置き換えようとしています。私はおそらくこれについて間違っているので、ハッキングされた一緒のソリューションに入る前に、私の欲求を表現しようとします.
私の目標
私の会社の Web サイトには、「ケース スタディ」や「アドバイザー」など、いくつかの繰り返しコンテンツのカテゴリがあります。これらのカテゴリは、すでにツリーに編成されています。
技術に詳しくないコンテンツ作成者がヘッダーとページ上部の一部のコンテンツをカスタマイズできる *.md ページを作成し、その下に一連のセクションを追加したいと考えています。子ディレクトリの投稿の 1 つを一覧表示します。
出力例は次のようになります。
<head>
<title>About us</title>
</head>
<body>
<!-- Marketing content generated from /content/about/index.md -->
<h1>About us</h1>
<!-- Leadership team list generated automatically from /content/about/leaders/* -->
<section>
<h2>Leadership team</h2>
<ul>
<li>
<!-- Content from /content/about/leaders/first_last.md* -->
</li>
</ul>
</section>
<!-- Foo list generated automatically from /content/about/foo/* -->
<section>
<h2>Foo</h2>
<ul>
<li>
<!-- Content from /content/about/foo/bar.md* -->
</li>
</ul>
</section>
</body>
今のやり方
準リスト ベースのインデックス ページごとにカスタム レイアウトを作成しています。レイアウトは、カスタム .Params.type に一致するすべてのページをレンダリングするパーシャルを使用します。そのため、私の /content/about/index.md ページは /layouts/about.html ファイルで大幅にカスタマイズされています。
次の少なくとも1つを行うためのより良い方法があるはずだと思います:
- .Site.Pages オブジェクトにアクセスできるショートコードを使用して、コンテンツ作成者が
{{< list 'leader' >}}
コンテンツ ページの横のどこかに次のようなものを記述して、すべてのコンテンツのリストを取得できるようにします。.Params.type = 'leader'
- カスタム レイアウトを使用しますが、すべてのページをタイプ別にフィルター処理するのではなく、そのページの「子」を反復処理します。
- コンテンツ作成者向けにマークダウン コンテンツを簡単にカスタマイズする機能を犠牲にすることなく、list.html ページ テンプレートを使用します。
これらのアプローチは既存の技術で実現可能ですか?ドキュメントにいくつかのコアコンセプトが欠けているだけですか? 理想的には、サイトのホームページがショートコードを介していくつかのコンテンツ リストをチェリー ピックできるように、これらの複数を実行できるようにしたいと考えていますが、いくつかのセクションには子ディレクトリの自動グループ化リストがあります。そうすれば、コンテンツの作成者は、ホームページを微調整する機能を犠牲にすることなく、サブセクションを自由に追加できます。