【问题标题】:jekyll - filter to remove trailing slash from post.urljekyll - 过滤器以从 post.url 中删除尾部斜线
【发布时间】:2023-02-26 20:39:53
【问题描述】:

Jekyll 生成带有尾部斜杠的 post url。我想从所有网址中删除这个尾部斜线,所以我创建了一个 Liquid 过滤器“remove_trailing_slash”,我想在我的模板中使用它,如下所示:

<a class="blog-article" href="{{ post.url | remove_trailing_slash }}">

这是我的插件(_plugins/remove_trailing_slash.rb)的内容:

module Jekyll
  module RemoveTrailingSlash

    def remove_trailing_slash(url)
      if url[-1] == '/'
        url[0..-2]
      else
        url
      end
    end
  end
end

Liquid::Template.register_filter(Jekyll::RemoveTrailingSlash)

我期待什么

<a class="blog-article" href="/path/to/post">

我得到什么

<a class="blog-article" href="/path/to/post/">

看来我的过滤器没有做任何事情。 我究竟做错了什么?

【问题讨论】:

  • 我已经测试了代码并且它工作正常。您确定只有一个尾部斜杠而不是多个吗?
  • 确实,它现在有效。我认为这是由于我的本地开发环境:我不得不杀死并重新启动 jekyll(而不是 livereloading)。感谢您抽出时间查看此内容!

标签: ruby jekyll


【解决方案1】:

谢谢你的回答,我不懂ruby,你能做一个{{ page.url }}的变体吗,因为使用permalink: pretty时,{{ page.url }}的末尾会有一个斜杠

PS 当前 ruby​​ 块对 {{ page.url }} 无效


抱歉,我更正了我的答案,虽然他没有去掉page.url中的斜杠,但他生效了(因为我重启了jekyll serve)。 用例:用于检测导航页中的导航页是否等于page.url,添加一个active

代码示例

{% for item in site.data.navigation.nav %}
<a href="{{ item.link }}" class="nav-link {% assign no_xiegang = page.url | remove_trailing_slash %}{% if item.link == no_xiegang %}active{% endif %}">{{ item.name }}</a>
{% endfor %}

【讨论】:

    猜你喜欢
    • 2023-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多