Добавление изображений или эскизов к записям Atom 1.0

В этом ответе StackOverflow предлагается использовать содержимое записи HTML и использовать стандартный тег <img> для ссылка на ваши изображения.

<content type="html">
  <![CDATA[
    <a href="http://test.lvh.me:3000/listings/341-test-pics?locale=en">
      <img alt="test_pic" src="http://test.lvh.me:3000/system/images/20/medium/test_pic.jpg?1343246102" />
    </a>
  ]]>
</content>

Я также нашел что-то, называемое мультимедийными расширениями Yahoo здесь, которое позволяет вам добавлять нестандартные дополнительные элементы.

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
<!-- ommitted -->
  <entry>
    <!-- ommitted -->
    <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="path_to_image.jpg" />
  </entry>
</feed>

Google также, кажется, имеет свои собственные подобные расширения. См. здесь.

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<!-- ommitted -->
  <entry>
    <!-- ommitted -->
    <g:image_link>http://www.google.com/images/google_sm.gif</g:image_link>
  </entry>
</feed>

Моя собственная интуиция подсказывает мне, что я должен просто иметь возможность добавлять ссылки на изображения следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <!-- ommitted -->
  <entry>
    <!-- ommitted -->
    <link rel="enclosure" type="image/png" length="1337"
        href="http://example.org/image.png"/>
  </entry>
</feed>

Каков правильный подход для максимальной совместимости?


person Muhammad Rehan Saeed    schedule 22.04.2015    source источник
comment
Я не могу поверить, что у крупной части интернет-инфраструктуры, такой как Atom 1.0, которой 8 лет, так мало документации. Там даже не так много сообщений в блоге об этом!!!   -  person Muhammad Rehan Saeed    schedule 12.05.2015
comment
Я написал сообщение в блоге (один из немногих, написанных за последние несколько лет на эту тему, который я смог найти) здесь.   -  person Muhammad Rehan Saeed    schedule 19.10.2016


Ответы (1)


Лучше всего делать то, что делают каналы Wordpress RSS 2.0 — если вы хотите, чтобы изображение вашего поста появлялось, например, в ленте, поместите <p><img...></p> вверху содержимого. В моей одиннадцатой настройке изображение заголовка сообщения находится внутри статьи, но вне содержимого переменной content, которая используется в ленте. Я решаю проблему, добавляя изображение обратно:

<item>
...
  <content:encoded>
    <![CDATA[<p>{% include "src/components/partials/post-hero-img.njk" %}</p>{{ post.templateContent | textDeletePresentationDivs | htmlToAbsoluteUrls(absolutePostUrl) | safe }}]]>
  </content:encoded>

исходник в git

Я проверил, ни в каналах Atom, ни в RSS 2.0 изображения сообщений не устанавливаются где-либо как отдельные теги. Они просто в верхней части содержания статьи.

Что касается ваших примеров...

Канал RSS vanilla Atom имеет схему xmlns="http://www.w3.org/2005/Atom", и его документация определена в RFC4287.

В соответствии с ним RSS-канал vanilla Atom строго может иметь <logo>, что является изображением с соотношением сторон 2: 1, логотип фида. К сожалению, он помещен в корень XML (обратите внимание на atom:logo в спецификации, это не atom:entry:logo). На практике это означает, что вы можете поместить изображение вашего RSS-канала, но не для каждой статьи. Если вы поместите <logo> внутри <entry>, фид не пройдет валидаторы и изображение поста не появится в фиде (я пытался).

Кроме того, спецификация определяет <icon>, который неопределенно определяется как маленький квадратный изображение, также помещенное в корень. Похоже, что Feedly в любом случае определяет фавикон веб-сайта, хотя явно установить этот тег в rss не помешает.

Это все, что есть — спецификация Atom официально не определяет способ размещения изображений в статье.

Вот где появляются дополнительные пространства имен (или RSS 2.0, другая спецификация, другой XML). Вы упомянули xmlns:media="http://search.yahoo.com/mrss/" в примере. Я попробовал, изображения сообщений не будут отображаться в фиде. Кроме того, ссылка на спецификацию http://search.yahoo.com/mrss/ не показывает никаких спецификаций.

Процитированное вами пространство имен Google, xmlns:g="http://base.google.com/ns/1.0", также не работает, изображения сообщений не отображаются в фидли.

Подход link, <link rel="enclosure" type="image/png" length="1337" href="http://example.org/image.png"/> был бы многообещающим, за исключением того, что length предназначен для указания размера файла в байтах. . Например, в Eleventy получить такое значение проблематично.

Подводя итог, лучше всего размещать изображение заголовка сообщения в верхней части контента, внутри <content>.

person revelt    schedule 09.09.2020