【问题标题】:For loop duplicating code in Jekyll / Liquid在 Jekyll / Liquid 中循环复制代码
【发布时间】:2016-02-29 23:43:00
【问题描述】:

我的输入很简单。我从数据文件中提取内容以填充<p>,然后运行markdownify 方法,但输出以(对我而言)意想不到的方式复制了<p> 元素。

请指教!谢谢。

示例输入:

{% for item in site.data.filename.item %}
<p style="display:{{ item.display }}" id="{{ item.nav }}">{{ item.content | markdownify }}</p>
{% endfor %}

还有输出:

<p id="test" style="display:block"></p>
<p>testing output</p>
<p></p>

我的流动语法有什么问题吗?非常感谢提前

【问题讨论】:

    标签: html css yaml jekyll liquid


    【解决方案1】:

    这通常是嵌套段落时发生的情况。您应该从内容中删除 HTML 标记。

    {{ item.content | strip_HTML}}
    

    https://docs.shopify.com/themes/liquid/filters/string-filters#strip_html

    如果你想保持html格式,你可以用一个div来包装内容,像这样:

    {% for item in site.data.filename.item %}
    <div style="display:{{ item.display }}" id="{{ item.nav }}">{{ item.content | markdownify }}</div>
    {% endfor %}
    

    【讨论】:

    • 感谢 JoostS!这行得通。我意识到我没有提到我使用 markdownify 方法来尊重我保留在数据 yaml 文件中的一些文本格式。有没有办法保持格式,但丢失 &lt;p&gt; 重复项?如果我没有意义,我可以更深入:)
    • 不客气,丹尼尔。我已经更新了我的答案以满足您的需求。
    • 嗨,Daniel,您可以将问题标记为已回答吗?还是您还有问题?
    • 是的!这对我有用:) 谢谢,抱歉我还没有标记它!
    【解决方案2】:

    您是否尝试过删除 markdownify? jekyll 框架内部会应用markdownify,所以我们不需要写markdownify 我在删除 markdownify 的情况下尝试了您的代码,并得到了单行 &lt;p&gt; 重复项。

    strip_HTML 选项也有效。

    删除markdownify 或放入strip_HTML

    【讨论】:

    • 谢谢!这绝对可以避免重复代码,现在我遇到的问题是 yaml 文件中的数据中的降价(为什么我使用降价)不再受到尊重。你对我如何保持文本格式有任何建议,但删除多余的&lt;p&gt;
    【解决方案3】:

    代替display:{{ item.display }}试试

    display:{{ display }}

    应该做的工作! :)

    【讨论】:

    • 对不起,我想我误解了这个问题:|
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多