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)
为什么?所以我可以用它来检查它所属的静态页面并按顺序突出显示它.
最简单的方法是使用split:
{{ page.url | split:'/' | first }}
Run Code Online (Sandbox Code Playgroud)
这将使您的URL内容最多到第一个/字符。
我设法用三个过滤器解决了这个问题:
\n\n{{ page.url | replace:'/',' ' | truncatewords: 1 | remove:'...' }}\nRun Code Online (Sandbox Code Playgroud)\n\npage.url输出:/page/cat/title,然后replace删除正斜杠,生成:page cat title。truncatewords将字符串截断为一个单词,产生:(page...由于某种原因,在剩余单词之后插入了三个点)。毕竟,我只需要用 和removevoil\xc3\xa1 删除那些点,我的最终字符串:page。
希望这对某人有帮助。
\n