向Atom 1.0条目添加图片或缩略图

11

这个 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>

我还发现了一个叫做雅虎媒体扩展的东西这里,可以允许您添加自定义的其他元素。

<?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>

什么是最大兼容性的正确方法?


2
我简直无法相信像 Atom 1.0 这样的重要互联网基础设施已经存在了8年,但是它的文档如此之少。甚至连关于它的博客文章都很少!!! - Muhammad Rehan Saeed
1
我写了一篇博客文章(是我找到的最近几年关于这个主题写的几篇博客之一)在这里 - Muhammad Rehan Saeed
1个回答

3
最佳实践是像WordPress RSS 2.0订阅源一样操作 - 如果您希望在Feedly中显示您的文章图片,例如,请将<p><img...></p>放在内容顶部。我的Eleventy设置中,文章标题图像位于文章内部,但在用于订阅源的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的feeds中都没有单独设置文章图片的标签,它们只是简单地放在文章内容的顶部。

关于你提到的例子...

"原始" Atom RSS feed有一个架构xmlns="http://www.w3.org/2005/Atom",其文档定义在RFC4287中。

根据RFC4287,"原始"Atom RSS feed严格只能有<logo>,它是2:1比例的图片,是feed的logo。不幸的是,它被放置在XML的根部(注意规范中的atom:logo,它不是atom:entry:logo)。实际上,这意味着您可以放置您的RSS feed本身的图片,但不能每篇文章都放置。如果您将<logo>放在<entry>中,feed将无法通过验证器,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>标签内。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接