値に置き換えられるマークダウンページに変数を含める方法はありますか? URLとしてのサービスに関するドキュメントを書いています。 URLはいくつかのマークダウンファイルにあり、変更された場合に備えて検索して置き換える必要はありません。
Markdownにカスタムコンポーネントを追加する最善のオプションはありますか? これは手ごわいようです。
このための小さなカスタムヘルパーを書くことができます(またはlodash.template
https://lodash.com/docs/4.17.11#templateのようなものを使用してください)
これが迅速で汚い解決策です:
次の内容のマークダウンファイルsample.md
とします。
---
title: Sample
---
## Hello World
This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)
ファイルを作成して( src/utils/template.js
と呼びましょう)、次のように記述できます。
export default function template(content, data) {
return content.replace(/%(.+)%/g, (match, key) => {
const value = data[key]
if (typeof value !== 'undefined') {
return value
}
return match // guards against some unintentional prefix
});
}
これですべてをまとめて配線します。コンテンツを置き換えるには、このテンプレート関数を_使用_する必要があります。 data
オブジェクトは好きなものにすることができ、どこからでも引き出すことができます(たとえば、graphql、いくつかの定数ファイル、環境変数など)。
import React from 'react'
import template from '../utils/template';
const URL = 'https://google.com'; // this can be from wherever
export default function SomeMarkdownPage({ data }) {
// data is from GraphQL, presume the parent is data.markdown
return (
<div dangerouslySetInnerHTML={{
__html: template(data.markdown.html, {
URL
})
}} />
)
}
これは意味がありますか? これはかなり便利なgatsby-remark-プラグインでもありますが、それが存在するかどうかはわかりません。 それを書くことに興味があれば、それは素晴らしいことですが、今のところ、これはあなたのユースケースで確かに機能します!
回答どおりにこれを閉じますが、さらにサポートが必要な場合は、お気軽に再度開いてください。 ギャツビーをご利用いただきありがとうございます。
最も参考になるコメント
このための小さなカスタムヘルパーを書くことができます(または
lodash.template
https://lodash.com/docs/4.17.11#templateのようなものを使用してください)これが迅速で汚い解決策です:
次の内容のマークダウンファイル
sample.md
とします。ファイルを作成して(
src/utils/template.js
と呼びましょう)、次のように記述できます。これですべてをまとめて配線します。コンテンツを置き換えるには、このテンプレート関数を_使用_する必要があります。
data
オブジェクトは好きなものにすることができ、どこからでも引き出すことができます(たとえば、graphql、いくつかの定数ファイル、環境変数など)。これは意味がありますか? これはかなり便利なgatsby-remark-プラグインでもありますが、それが存在するかどうかはわかりません。 それを書くことに興味があれば、それは素晴らしいことですが、今のところ、これはあなたのユースケースで確かに機能します!
回答どおりにこれを閉じますが、さらにサポートが必要な場合は、お気軽に再度開いてください。 ギャツビーをご利用いただきありがとうございます。