2

我的博客由Jekyll提供支持,提供Atom提要。

---
layout: nill
rooturi: http://stefan.artspace44.com
---

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

...

{% for post in site.posts %}
  <entry>
    <title>{{ post.title }}</title>
    <link href="{{ page.rooturi }}{{ post.url }}" />
    <updated>{{post.date | date_to_xmlschema }}</updated>
    <id>{{ page.rooturi }}{{ post.id }}</id>
    <content type="html">{{ post.content | xml_escape }}</content>
  </entry>
 {% endfor %}
</feed>

我需要更改每个帖子的内容,以便

<img href="/images/01.jpg" />
<a href="/2010/post/">Post</a>

变成:

<img href="http://stefan.artspace44.com/images/01.jpg" />
<a href="http://stefan.artspace44.com/2010/post/">Post</a>

我正在考虑做一些类似的事情

<content type='html'>
  {{ post.content | make_hrefs_base page.rooturi }}
</content>

我会在哪里用jekyllLiquid编写代码,如何解决仅更改指向“/ ”而不是“ http://otherdomain.com/ ”的href值的问题?

谢谢

4

2 回答 2

3

我会在哪里用 jekyll 或液体编码?

在最近发布的 Jekyll 0.6.0 中,您可以创建自己的插件,包括 Liquid 标签插件。您可以查看Jekyll 插件文档以获取更多信息,但这将是您最好的选择。

如何解决仅更改指向“/”而不是“ http://otherdomain.com/ ”的 href 值的问题?

似乎很容易。在您的自定义 Liquid 标签中,检查第一个字符是否为“/”;如果是,则添加您的新域。您可能可以使用 Ruby HTML 解析器来查找 的所有实例<a>,然后href根据需要更改属性。

于 2010-06-29T14:40:14.260 回答
2

我在博客的提要中遇到了同样的问题,我设法在不使用插件的情况下解决了这个问题,即仅使用 vanilla Liquid。

我的 Atom XML 文件中,我的内容填充如下:

<content type="html">
    {{ post.content | replace: site.feed_linkurl_find, site.feed_linkurl_replace | replace: site.feed_imgurl_find, site.feed_imgurl_replace | xml_escape }}
</content>

...我的配置文件中有这些变量:

# URL replacements for feeds
feed_linkurl_find: href="/
feed_linkurl_replace: href="http://christianspecht.de/
feed_imgurl_find: src="/
feed_imgurl_replace: src="http://christianspecht.de/

换句话说,我只是做了两个普通的字符串替换,一个用于链接,一个用于图像。

诀窍是:
在这两种情况下,我都替换href="/href="http://christianspecht.de/,因此只有那些实际以开头的链接/受到影响。

于 2015-06-23T21:44:06.307 回答