アストロフォレスト


これは私たちのデモへのフォローアップ投稿です-あなたがまだそれを読んでいない場合は、最初の1つをチェック!

Our go-to content solutions: for internal projects (when we just need it to work) for client projects (when a clean, user friendly UI is a must) (when a file based CMS just won't cut it)

What tools are you always reaching for?

— Navillus ( )

すべてのCMSの利点と最善の用途がありますが、我々はこれらの3つのツールの外側に到達する必要がまれです.我々はすでにAstroとNetlify CMSを試してみた、驚くほどの方法は密接に与えたAstro 静的なサイトジェネレータは、普通の古いHTML/CSS/JSに貼り付けられています.これは質問をするForestry この真新しいフレームワークを持ちます?
TLドクターチェックアウトlive demo , GitHub repo , またはまっすぐにジャンプdiff デモを元の宇宙飛行士と比較することblog example .

林業の力
林業CMSは非常に特別なニッチに座っています.Gitベースであるので、それは非常に単純な開発者経験を考慮に入れます.
あなたが静的に構築されたフロントエンドでJamstackプロジェクトに取り組んでいるならば、そして、コンテンツ更新の大部分を直接マークダウンよりむしろCMSによってされると思っているならば、私は十分に林業を推薦することができません.
あなたが尋ねる前に-いいえ、これは有料のポストではありません.Navillusは林業と提携していません、我々は製品のちょうど大きいファンです.

どのような変更が必要
私は、Astroのものでこのデモを始めましたblog example . CMSの設定に必要な変更を打破しましょう.

動画資産/public/uploadsこれは他の何よりも個人的な好みです.多くのCMSのツールは、同じ場所にすべての画像資産をドロップし、視覚的にギャラリーから画像を選択することができます.
私は実際に別のディレクトリに別のディレクトリに画像の資産を分離するために有用であることを発見した唯一の時間は、その使用に応じて特定のイメージを変換することであり、我々はこのデモのための画像の最適化に悩まされることはありません.
これはまた、任意の画像参照を更新する必要があることに注意してください/images to /uploads . 我々の場合、それは更新を意味しました/src/pages/about.astro そして、各々のブログ柱/src/pages/posts .

データをMarkdownに移動する
例のrepoは/src/data/authors.json つのデモ著者の基本JSONオブジェクト/マップです.この構造体はファイルベースのCMSに対してあまり意味をなさない.
代わりに、各作者を別のマークダウンファイルに保存しましょう/src/data/authors ディレクトリ.後で私たちは、そのフォルダに森林を指すことができる、各著者のために利用可能なプロパティの種類を定義し、CMSのユーザーがJSONに触れることなく、新しい著者を作成することができます.
ここでは、各作者のイメージプロパティが/uploads ディレクトリ/images .

著者情報の読み込み
これは本当にうまくいく唯一のトリッキーなビットだった.
import authorData from "../data/authors.json";
いくつかの異なるページとテンプレートは、著者のデータをロードする必要があります、そして、彼らはすべて、JSONマップを見つけると予想しました.それぞれの作者が別々のMarkdownファイルを持っているので、データがどのようにロードされるかを修正する必要があります.
let allAuthors = Astro.fetchContent("../data/authors/*.md");
let authorData = allAuthors.reduce((acc, next) => {
  return {
    ...acc,
    [`src/data/authors/${next.slug}.md`]: next,
  };
}, {});
との関係src/data/authors/${next.slug}.md コード?我々はすぐに林業を設定することになりますが、今注目される一つのことは、森林がデフォルトでコンテンツの関係を処理する方法です.
このポストの終わりまでには、CMSの著者を作成し、各ブログ記事に著者をリンクすることができます.それは右、このGitベースのCMSはボックスの関係データを処理する!(ごめんなさい、テーブルがないのは、gitレポです).
森林は他のCMSオブジェクトを絶対パスで参照します.の場合authorData 上記の各著者のファイルパスから著者のデータへのマッピングです.あなたがここでデータを管理することができる他の方法があります、しかし、デモのために、これはそうでなければ、あなたがページテンプレートを更新する必要はないので、より簡単です.

CMSの設定
これは、簡単で楽しい、一部です!一度プロジェクトの建物をローカルしてGithubにプッシュし、頭をForestry そして、彼らの輸入ウォークに続いてください.
林業のレポオンボード加工は本当に印象的です.一度あなたのレポにリンクされて、林業はあなたのデータ型(私たちの場合だけ著者とポスト)を定義する手順を介して歩きます.
林業のコンテンツモデルの設定で遊ぼう.別のプロパティの種類とデータの検証を定義するための、特に異なるオプションで突くために数分かかる.
ボーナスポイント林業は、あなたの実際のdevサーバーを実行し、公開前にコンテンツの更新のプレビューを与えるライブプレビューを提供しています.私は、V 14を提供して、V 14を提供して、箱の林業のうちのノードV 14で、Astroを走らせていました.彼らはDockerHubからカスタムDocker画像をサポートしていますが、ナッツとセットアップ独自のプレビューサーバー!

結論
この林業デモのパート2のために目を離さないでください!私は家を編集し、ページについて、またはその問題のための新しいページを作成する最良の方法を再訪問したい.
はい、この投稿の上部にあるつぶやきがそれを与えなかったならば、我々はAstroFaunaDB すぐに十分なデモ!