问题描述
首先,我对 html 一无所知。我正在尝试使用 Jekyll 构建一个网站,并找到了该网站的模板,我正在对其进行修改。 我有以下代码:
{% for publi in site.data.publist %}
{% assign even_odd = number_printed | modulo: 2 %}
{% if even_odd == 0 %}
<div class="row">
{% endif %}
<div>
<ol>
<li>{{ publi.title }}</li>
<!-- <img src="{{ site.url }}{{ site.baseurl }}/images/pubpic/{{ publi.image }}" class="img-responsive" width="33%" style="float: left" />
--> <p>{{ publi.description }}</p>
<p><em>{{ publi.authors }}</em></p>
<p><strong><a href="{{ publi.link.url }}">{{ publi.link.display }}</a></strong></p>
<!-- <p class="text-danger"><strong> {{ publi.news1 }}</strong></p>
<p> {{ publi.news2 }}</p> -->
</ol>
</div>
{% assign number_printed = number_printed | plus: 1 %}
{% if even_odd == 1 %}
</div>
{% endif %}
{% endfor %}
site.data.publist
中有一个 yml 文件,它有多个成员,每个成员都有不同的字段。 for 循环有助于遍历 yml 文件的所有成员。正如您在代码中看到的,我在 for 循环中使用了 <ol>
标记,并且我已经将 <li>
标记用于 publi.title
(yml 文件成员中的一个字段)。但我得到的只是对 yml 文件中的所有成员重复 1。I have attached the output I get
任何帮助将不胜感激。
解决方法
正如@sirko 在他的评论中提到的,您正在生成无效的 HTML。
首先,<ol>
可能只包含 li
作为直接子代。因此,请确保将其他所有内容也放在 li
标签内。
但您真正的问题是,您在循环中生成 ol
标签。如评论中所述,您的输出包含多个列表,每个列表包含 1 个元素,而不是包含 n 个元素的 ONE LIST。
为了改变这种情况,您必须将 ol
移到 for 循环之外。 (然后确保您仍然生成有效的 HTML => 见第 1 点)