Использование javascript для разметки структурированных данных

#javascript #schema #blogger #json-ld

Вопрос:

В разметке структурированных данных я хочу вставить дату публикации с помощью java script.is есть способ сделать это?

пример схемы;

 <script type="application/ld json">
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "headline": "Article headline",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "datePublished": "  date variable  ",
      
      "author": [{
          "@type": "Person",
          "name": "Jane Doe",
          "url": "http://example.com/profile/janedoe123"
        },{
          "@type": "Person",
          "name": "John Doe",
          "url": "http://example.com/profile/johndoe123"
      }]
    }
    </script>
 

Я должен взять дату внутри тега времени на странице и поместить ее в схему с помощью javascript.

 <time datetime="2021-02-24T12:11:00 03:00">2021-02-24T12:11:00 03:00</time>
 

Комментарии:

1. почему бы вам не использовать <data:post.date/> вместо date variable

2. Я добавляю его в содержимое поста, коды данных здесь не работают.

Ответ №1:

Я удалил datePublished , потому что это недопустимая разметка, если есть переменные JS, мы должны добавить ее полностью с помощью JS, это допустимо, даже если Javascript отключен.

 <script id='structured-data' type="application/ld json">
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "Article headline",
  "image": ["https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg"],
  "author": [{
      "@type": "Person",
      "name": "Jane Doe",
      "url": "http://example.com/profile/janedoe123"
    },{
      "@type": "Person",
      "name": "John Doe",
      "url": "http://example.com/profile/johndoe123"
    }]
}
</script>
 

и чтобы добавить datePublished , вы можете использовать это

 let timeValue = document.querySelector('time').dateTime;
let structuredData = document.getElementById('structured-data');
let parsedSD = JSON.parse(structuredData.innerText);
parsedSD.datePublished = timeValue;
structuredData.innerText = JSON.stringify(parsedSD)
 

Комментарии:

1. сработало отлично, спасибо