扩展 Jekyll 和 Liquid 来解析帖子内容

发布于 2024-09-05 12:57:37 字数 1566 浏览 5 评论 0 原文

我的博客由 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>

我在哪里编码的方式做一些事情jekyll液体,以及如何解决仅更改指向“/”而不是“http://otherdomain.com/”?

谢谢

My blog, powerred by Jekyll, serves out a Atom feed.

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

I need to change the content of each post, so that

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

becomes:

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

I was thinking of doing something along the lines of

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

Where would I code this in jekyll or liquid, and how could I solve the problem of changing only the href values that point to "/" and not "http://otherdomain.com/"?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情何以堪。 2024-09-12 12:57:37

我应该在 jekyll 或 Liquid 中的哪里编码?

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

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

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

Where would I code this in jekyll or liquid?

In the recently-released Jekyll 0.6.0, you can create your own plugins, including Liquid tag plugins. You can check out the Jekyll plugin documentation for more info, but that would be your best bet.

How could I solve the problem of changing only the href values that point to "/" and not "http://otherdomain.com/"?

Seems pretty easy. In your custom Liquid tag, check to see if the first character is a '/'; if it is, then prepend your new domain. You could probably use a Ruby HTML parser to find all instances of <a>, and then change the href attributes as appropriate.

遇到 2024-09-12 12:57:37

我在我的博客提要中遇到了同样的问题,并且我设法解决了这个问题,而无需使用插件,即仅使用 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/,因此只有那些实际开始的链接 > 与 / 受到影响。

I had the same problem in the feed of my blog, and I managed to solve it without using a plugin, i.e. only with vanilla Liquid.

In my Atom XML file, my content is populated like this:

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

...and I have these variables in my config file:

# 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/

In other words, I just do two ordinary string replaces, one for links and one for images.

The trick is:
In both cases, I replace href="/ by href="http://christianspecht.de/, so only those links that actually begin with / are affected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文