Добавяне на изображения или миниатюри към записи в 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 — ако искате изображението на вашата публикация да се показва във feedy например, поставете <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.

Според него, ванилията Atom RSS емисия стриктно може да има <logo>, което е изображението в съотношение 2:1, лого на емисията. За съжаление, той е поставен в корена на XML (забележете atom:logo в спецификацията, не е atom:entry:logo). На практика това означава, че можете да поставите снимка на самата си RSS емисия, но не и за всяка статия. Ако поставите <logo> в <entry>, емисията няма да премине валидаторите и изображението на публикацията няма да се появи във feedly (опитах).

Освен това спецификацията дефинира <icon>, което е неясно дефинирано като малък квадрат изображение, също поставено в корена. Изглежда, че Feedly така или иначе открива favicon на уебсайта, въпреки че няма да навреди изрично да зададете този етикет в rss.

Това е всичко — спецификацията на Atom не дефинира официално начин за поставяне на изображения на статия.

Ето къде идват допълнителни пространства от имена (или RSS 2.0, различна спецификация, различен XML). Споменахте xmlns:media="http://search.yahoo.com/mrss/" в примера. Опитах го, публикуваните изображения не се показват във feedly. Освен това връзката към спецификации http://search.yahoo.com/mrss/ не показва никакви спецификации.

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

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

За да обобщим, най-добрата практика е да поставите заглавно изображение на публикация в горната част на съдържанието, вътре в <content>.

person revelt    schedule 09.09.2020