使用javascript中的液体'include'标签

时间:2016-07-04 11:53:49

标签: javascript jekyll liquid

我正在尝试搜索基于jekyll的网站,然后我执行了this。一切都按预期工作,但是,当我返回搜索结果时,我想在我的首页上使用我的模板进行预览,该模板存储在我的jekyll设置的_includes /文件夹中。在液体中,它会像

{% for post in search_results %}
{% include post-preview.html %}
{% endfor %}

然而,搜索结果html字符串是用javascript构建的,我收集你不能使用液体标签。有没有简单的方法呢?

1 个答案:

答案 0 :(得分:0)

自从我提出这个问题以来,我发现了一种有点过时的方法,所以我会把它放在这里,万一有人需要它。

因此,要加载模板文件,我使用了ajax:

  var xhReq = new XMLHttpRequest();
  xhReq.open("GET", 'post-preview.html', false);
  xhReq.send(null);
  var template = xhReq.responseText;

现在,在此之后,变量模板保存了post.html之后的文本文件的内容,如下所示:



<div class="post-preview">
  <div class="post-title">
    <div class="post-name">
      <a href="{{ post.url }}">{{ post.title }}</a>
    </div>
    <div class="post-date">
      {% include time.html %}
    </div>
  </div>

  <div class="post-snippet">
    {% if post.content contains '
    <!--break-->' %} {{ post.content | split:'
    <!--break-->' | first }}
    <div class="post-readmore">
      <a href="{{ post.url }}">read more-></a>
    </div>
    {% endif %}
  </div>
  {% include post-meta.html %}
</div>
&#13;
&#13;
&#13;

现在我们的工作是用javascript替换post.url之类的液体调用。对于post.url和post.title来说这很容易,我们可以使用.replace方法处理javascript中的字符串。但是,对于诸如分割帖子内容的代码而言,它更复杂,因此只能在预览中显示片段。

所以,至少对我来说,似乎我们需要编写执行相同操作的javascript代码。由于本练习的整个目的不是要在两个地方保留相同的HTML代码(post-preview.html文件和search.js文件),似乎我们需要一些自动方法来删除液体代码和注入javascript。我已经问了一些问题(某些)这个效果here