デザインマネージャーにJsonファイルを管理して、それを変数として読み込むことができますか?
{% set json = [ { "name": "ページ1" }, { "name": "ページ2" }] %}
このJson部分を別ファイルで管理して読み込む方法がないか思案しております。
よろしくお願いいたします。
デザインマネージャーにJsonファイルを管理して、それを変数として読み込むことができますか?
{% set json = [ { "name": "ページ1" }, { "name": "ページ2" }] %}
このJson部分を別ファイルで管理して読み込む方法がないか思案しております。
よろしくお願いいたします。
デザインマネージャーで、直接jsonファイルを管理は難しいかもしれません。
という方法は使えないでしょうか。
<script type="application/json"
{{ module|tojson }}
</script>
よろしくお願いします。
ありがとうございます。
jsonファイルがアップロードできたので、もしやと思ったのですが、できないのですね。
こうやってモジュールとして使うのですね。
参考になりました。ありがとうございます。
できますね!このJSONデータをHubLで利用したい場合と、JavaScriptで利用したい場合とで方法が少し異なります。
HubLで利用したい場合
JSONが記載されたファイルを、パーシャルテンプレートとして.htmlの拡張子で保存します。仮にdata.htmlとします。
<!--
templateType: page
isAvailableForNewContent: false
-->
{% set json = [
{
"name": "ページ1"
},
{
"name": "ページ2"
}
] %}
他のテンプレートのHubLでこれを利用したい場合は、このファイルをimportします。それだけで、下記のようにjson変数にアクセスできるようになります。
{% import '/data.html' %}
{{ json }} {# jsonの中身が表示されます #}
なおdata.htmlの中身をimport時に1つの名前空間に閉じ込めたい場合は、as句を利用します。
ご参考:HubL variables & macros syntax - HubSpot docs
JavaScriptで利用したい場合
データをパーシャルテンプレートとして.htmlの拡張子で保存するのは変わりませんが、JavaScript側でHubLを書く形になります。
また実際にJSONとして利用する際は、HubLのフィルタの tojson を利用する必要があります。
{% import '/data.html' %}
const json = {{ json|tojson }};
console.log(json) // JavaScript変数のjsonの中身が表示される
HTMLとJavaScriptの例をだしていただきありがとうございます。
定義だけパーシャルで切り出すことで実現しているのですね。
1箇所で管理してHTMLでもJavaScriptでも使い回すことがしたかったので、どちらの例も大変参考になりました。
ありがとうございました。