問題タブ [netlify-cms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
127 参照

yaml - Netlify CMS - データをプロジェクト ルートに保存します (例: `__dirname`)

Gatsby テーマ内で Netlify CMS を使用しています。これが私のプロジェクト構造の例です:

より詳しい情報:

  • gatsby-theme-examplegatsby -plugin-netlify-cmsを使用し、config.ymlファイルは次の場所にありますroot/themes/gatsby-theme-example/static/admin/config.yml
  • gatsby-theme-exampleyarn workspacesexample-theme-site経由で接続されていますが、完全に開発されたら npmに公開して、ユーザーがパッケージとしてインストールできるようにする予定です。開発テスト目的でのみ使用されます。gatsby-theme-exampleexample-theme-site

この意味は:

  1. 実行中yarn workspace example-theme-site developは実行さgatsby developれますexample-theme-site
  2. その後、ユーザーはhttp://localhost:8000/adminNetlify CMS にアクセスしてアクセスできます。ログインすると、Netlify CMS 内にある構成ファイルを使用して読み込まれます。root/themes/gatsby-theme-example/static/admin/config.yml

この後に実行したい次のステップは次のとおりです。

  • ユーザーが Netlify CMS にコンテンツを追加する
  • 保存/公開すると、この新しいデータはroot/sites/example-theme-site/dataディレクトリの下に保存されます。

gatsby-theme-example設定ファイルは にありますが、データを に保存したいので、これは私が苦労している問題ですexample-theme-site。ハードコーディングせずにルートディレクトリからの相対パスを作成する方法がわかりません。

の下fileまたはfolderconfig.ymlデータを保存する場所を指定できることがわかりましたが、 .yml ファイルであるため、正しいディレクトリを指定するconfig.yml方法などを使用する方法がわかりません。__dirname私が確認できる唯一のオプションは、開発中にファイル パス (例: ) をハードコードし、テーマを npm に公開する直前にfile: "../../sites/example-theme-site/data/content.md"相対的になるように変更することです。node_modules

ここに他のより適切な解決策はありますか?

0 投票する
0 に答える
962 参照

graphql - GraphQL/Netlify CMS - クエリ フィールドが未定義 (存在しない) の場合にエラーにならない

Netlify CMS で Gatsby を使用しており、ファイル コレクションにオプションのフィールドがいくつかあります。これに関する問題は、GraphQL を使用してこれらのフィールドを取得できないことです。空白のままにするとフィールドが存在しないためです。

たとえば、次のコレクション ファイルがあるとします。

すべてのフィールドはオプションです。ユーザーが の値のみを入力するとしますmain。これにより、データが次のように保存されます。

lightdarkおよびcontrastTextまったく保存されません-それらは単に完全に除外されます。

GraphQL でデータをクエリするときは、ユーザーが入力したオプション フィールドと空白のままになっているフィールドがわからないため、明らかにすべてのフィールドを確認する必要があります。これは、クエリが次のようになることを意味します。

ユーザーがmainフィールドにのみ入力した上記の例を使用すると、上記のクエリは としてエラーをスローし、lightフィールドは存在しません。darkcontrastText

これには (フォルダー コレクション タイプではなく) ファイル コレクション タイプを使用しているため、既定値を設定できません。とにかくデフォルト値を設定できたとしても、GraphQL と Yaml は値として受け入れないため、問題ありません。最良の代替手段として、または空の文字列 ( )undefinedのみを受け入れることができます。null""

nullすべてのフィールド値をまたはに設定して yaml ファイルを手動で保存しても""、クエリ結果を別の JavaScript オブジェクトと深くマージしているため、追加の問題が発生するため、これは機能しません。

undefinedエラーをスローする代わりに、空白の (欠落している) フィールドごとに GraphQL が返されるようにするか、空白/欠落しているフィールドをまったく返さないようにする必要があります。

これは一般的な問題 (Netlify CMS でのオプション フィールドの処理) のように見えますが、それに関するドキュメントには何もありません。人々はこの問題をどのように処理しますか?