在Jekyll中将网址删除到1个单词

Pet*_*ble 6 html liquid static-site jekyll

我正在建立一个Jekyll博客,我遇到了永久链接的问题.

我在@config.yml中设置了博客文章的永久链接:

permalink: /:page/:categories/:title
Run Code Online (Sandbox Code Playgroud)

导航到博客文章时,它会像这样输出:

http://localhost:4000/blog/travel/netherlands-trip-prequesites/
Run Code Online (Sandbox Code Playgroud)

我在网站上有一些静态页面:Blog,Travel

变量page.url输出此url:/blog/travel/netherlands-trip-prequesites

导航栏用于突出显示当前页面的代码(为其提供"活动"类):

          {% assign url = page.url|remove:'index.html' %}
          {% for nav in site.navigation %}
            {% if nav.href == url %}
              <li class="active"><a href="{{nav.href}}">{{nav.name}}</a></li>
            {% else %}
              <li><a href="{{nav.href}}">{{nav.name}}</a></li>
            {% endif %}
          {%endfor%}
Run Code Online (Sandbox Code Playgroud)

导航到静态页面时效果很好,但是当我点击博客文章时,它没有突出显示正确的静态页面.(例如:如果我导航到带有网址的博客帖子,/blog/smth/title它应该会在我的导航中自动突出显示"博客".当我导航到/travel/smth/title它时应突出显示"旅行")

我想要做的是剥离的产量下降page.url它的第一部分.例如,我想要提供以下输出

/blog/travel/netherlands-trip-prequesites
Run Code Online (Sandbox Code Playgroud)

向下

/blog/
Run Code Online (Sandbox Code Playgroud)

为什么?所以我可以用它来检查它所属的静态页面并按顺序突出显示它.

Dan*_*ird 5

最简单的方法是使用split

{{ page.url | split:'/' | first }}
Run Code Online (Sandbox Code Playgroud)

这将使您的URL内容最多到第一个/字符。


Pet*_*ble 4

我设法用三个过滤器解决了这个问题:

\n\n
{{ page.url | replace:'/',' ' | truncatewords: 1 | remove:'...' }}\n
Run Code Online (Sandbox Code Playgroud)\n\n

page.url输出:/page/cat/title,然后replace删除正斜杠,生成:page cat titletruncatewords将字符串截断为一个单词,产生:(page...由于某种原因,在剩余单词之后插入了三个点)。毕竟,我只需要用 和removevoil\xc3\xa1 删除那些点,我的最终字符串:page

\n\n

希望这对某人有帮助。

\n