You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll中如何通过YAML配置无需JS的当前页锚点链接

解答

纯YAML静态配置无法实现带通配符的自适应路径锚点,但无需JavaScript,通过简单调整配置和模板逻辑即可满足需求。

原有配置失效原因

YAML仅做静态数据存储,不支持通配符解析,你配置的*/#aside会被当做普通字符串处理,Jekyll不会自动将*替换为当前页面路径,因此无法正常跳转。

可行实现方式

方案1:模板直接写相对锚点(成本最低)

如果这个链接不需要和其他导航项统一走YAML配置,直接在渲染侧边栏/导航的模板文件里添加相对锚点即可:

<!-- 原有导航循环渲染完成后追加 -->
<a href="#aside">Index</a>

相对路径锚点#aside会由浏览器自动拼接当前页面路径:在/html/页自动指向/html/#aside,在/css/页自动指向/css/#aside,完全匹配需求。

方案2:保留YAML统一管理入口

如果需要把该链接和其他导航项一起放在YAML中维护,不要在URL字段写通配符,仅存储锚点值,同时增加标记避免模板自动拼接站点根路径:

  1. 调整YAML导航配置:
- title: HTML
  url: /html/

- title: CSS
  url: /css/

- title: Index
  url: "#aside"
  is_anchor: true
  1. 修改导航渲染逻辑,锚点项直接输出URL,跳过路径转换:
{% for item in site.navigation %}
  {% if item.is_anchor %}
    <a href="{{ item.url }}">{{ item.title }}</a>
  {% else %}
    <a href="{{ item.url | relative_url }}">{{ item.title }}</a>
  {% endif %}
{% endfor %}

注意:大部分Jekyll主题默认会给导航配置里的URL自动拼接站点根路径,如果不加标记直接写url: "#aside",最终渲染的链接会变成/#aside,无论在哪个页面点击都会跳转到首页锚点,不符合预期。


内容的提问来源于stack exchange,提问作者Unix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:18:03