ruby jekyll -过滤器从post.url中删除尾随斜线

q8l4jmvw  于 2023-03-01  发布在  Ruby
关注(0)|答案(1)|浏览(119)

Jekyll生成的post网址带有一个拖尾斜杠。我想从所有网址中删除这个拖尾斜杠,所以我创建了一个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/">

我的过滤器似乎没有任何作用。我做错了什么?

mbzjlibv

mbzjlibv1#

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

提示当前拼音块对于{{ page.url }}无效

对不起,我更正我的答案,虽然他没有删除page.url的斜线,他生效(因为我重新启动jekyll服务).用例:用于检测导航页中的导航页,如果等于page.url,则增加active

正确的代码示例✔️

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

错误代码示例

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

相关问题