如何获得Jekyll Bootstrap的绝对路径

Jus*_*ony 6 liquid jekyll twitter-bootstrap

我试图将一个facebook共享链接添加到jekyll引导程序页面,但是当添加FB将在我使用的共享中使用的href时{{ HOME_PATH }}.这结果是/的相对路径(但是FB不理解).有人知道如何获得绝对路径而不必硬编码吗?

给出/的代码

<a name="fb_share" type="button"
           share_url="{{ HOME_PATH }}">Share this event on Facebook</a>
Run Code Online (Sandbox Code Playgroud)

huo*_*uon 6

不幸的是,不是通过杰基尔.Jekyll是一个静态站点生成器,当它运行时,它生成整个站点为HTML/CSS/etc页面,没有服务器端动态内容.

但是,有一些解决方案:硬编码网址,但只在一个地方,所以很容易改变; 或者,使用javascript将其设置为客户端.

Pure Jekyll/Liquid

添加像这样的行

host: example.com
Run Code Online (Sandbox Code Playgroud)

to _config.yml,然后像它一样引用它

<a name="fb_share" type="button"
           share_url="http://{{ site.host }}/blah">Share this event on Facebook</a>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

如果您正在使用jQuery,请将其放在启动脚本中(显然您可以在没有jQuery的情况下执行此操作,但这说明了该技术):

$('[name=fb_share]').each(function() {
    var $this = $(this);
    $this.attr('share_url', 
               $this.attr('share_url').replace('HOME_PATH', 
                                               document.location.host));
}
Run Code Online (Sandbox Code Playgroud)

和页面一样

<a name="fb_share" type="button"
           share_url="http://HOME_PATH/blah">Share this event on Facebook</a>
Run Code Online (Sandbox Code Playgroud)

(JS解决方案可能需要一些技巧(比如延迟加载Facebook JS),具体取决于Facebook提供的脚本运行的时间/方式.)