Web サイトを開発していて、詳細なページに構造化データを追加したいと考えています。問題は、JSON-LD スクリプトに何を追加するかを知る前に、データを要求する必要があることです。
Parse をバックエンドとして使用しています。また、それを達成する方法に関するチュートリアルを探してみましたが、JSON-LD を動的に追加することはできないようです。
誰かがそれを手伝ってくれることを本当に願っています!:)
編集:
JSON-LD に入力する必要があるデータを含む応答は、DOM の準備が整った後に行われます。この場合のパターンは?
アイテムのリストがあり、そのうちの 1 つをクリックすると、最初にロードする必要がある詳細ページを開く必要がありますが、コンテンツがロードされた後、JSON-LD を介して構造化データを提供したいと考えています。
私は始めたばかりで、これを解決するのに苦労しています。
編集2:
これは私の実際の実装です:
HTML では:
<body>
// my html page code
...
<script type="text/javascript">
loadDetailPageContent();
</script>
</body>
JS で:
function loadDetailPageContent() {
// Calling the method here is too early because I don't have info
//writeData();
createDetailPage();
}
function createDetailPage() {
var recipe = Parse.Object.extend("Recipe");
var query = new Parse.Query(recipe);
query.equalTo("objectId", myId);
query.first({
success: function(result) {
// Calling the method here would be perfect
writeData();
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
function writeData() {
var script = document.createElement('script');
script.type = 'application/ld+json';
script.text = JSON.stringify({
"@context": "http://schema.org",
"@type": "Recipe",
"name": "My recipe name"
});
document.querySelector('head').appendChild(el);
}
ご覧のとおり、メソッド writeData() は 2 つの場所で呼び出されます。最初にすぐに呼び出しても問題はなく、Google 構造化データ テスト ツールを使用すると、必要な構造化データを追跡できます。問題は、その時点で構造化データを作成するための情報を持っていないことです。これは、Parse からの応答を待つ必要があるためです。
成功のコールバックでメソッドを呼び出すと、テスト ツールはデータを取得できなくなります :(