マークダウンファイル内でテンプレートコードを再利用できません。 たとえば、vimeoリンクの埋め込みコードを取得して、vimeo IDを呼び出しに渡したいとします。Nunjucksのpartials/macros/includesをmetalmith-in-placeで使うには?
一例マクロ:
{% macro vimeoEmbed(id) %}
<iframe src="https://player.vimeo.com/video/{{ id }}?title=0&byline=0&portrait=0" width="300" height="169" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
{% endmacro %}
次のように使用する:
{{ vimeoEmbed(120394634) }}
私が直接値下げファイルでマクロを定義する場合、これは動作します。しかしもちろん、私はグローバルファイルにマクロを付けてメンテナンスしやすくしたいと思います。
Nunjucks '{% import "macros.njk" as macros %}
を使用しようとしました。 macros.njk
にはvimeoEmbed
マクロが含まれます。
残念ながら、私はError: template names must be a string: undefined
を手に入れています。
代わりに私は{% include "vimeoEmbed.njk" %}
を使ってみましたが、私は同じError: template names must be a string: undefined
を得ています。
これはmetalsmith-layouts
とうまくNujucks' include
とimport
作品としてmetalsmith-in-place
に特異的であるように思われます。
マークダウンファイルとNunjucks内でコードを再利用するための他のソリューションも歓迎します。ありがとう!
こんにちは!金属師とnunjucksが一緒に働くように、どうやって管理しましたか? 'layouts'と' in-place'の両方を試しましたが、私が試したほとんどの設定で '.nj'ファイルを処理していません。あなたの設定を共有していただけますか?ありがとう! –
Nunjucksの拡張子として '.njk'または' .nunjucks'を使用してください。 JSTransformerは、ファイル拡張子に応じて変圧器を自動的に一致させます。参照として[このリスト](https://github.com/jstransformers/inputformat-to-jstransformer/blob/master/dictionary.json)を見てください。 –
ええ、ありがとう。私はソースコードを調べることでそれを理解しました。私は実際にこの件に関する記事を書いています:https://medium.com/@slavafomin/making-metalsmith-to-work-with-nunjucks-a67a74c3e73d –