【问题标题】:Jekyll - How can I make avoid a paragraph to be added on a YAML frontmatter markdownify itemJekyll - 如何避免在 YAML frontmatter markdownify 项目上添加段落
【发布时间】:2015-08-29 17:20:22
【问题描述】:

好的...我有一个项目,我正在将 Jekyll 用于播客项目。我选择通过 YAML Front Matter 项目在 shownotes 中列出主机:

hosts:
  - Name A
  - Name B
  - Name C

使用这段代码

<li> <strong>Hosts:</strong>
<ul>
  {% for host in page.hosts %}
<li>{{ host }}
{% endfor %}
</ul>

我收到了正确的列表

<ul>
<li> <strong>Hosts:</strong> 
<ul> 
  <li>Name A </li>
  <li>Name B </li>
  <li>Name C </li>
</ul>
</ul>

但是,我想通过这样做来降价

<li> <strong>Hosts:</strong>
<ul>
  {% for host in page.hosts %}
<li>{{ host | markdownify }}
{% endfor %}
</ul>

但是 Jekyll 回来了:

<ul>
<li> <strong>Hosts:</strong> 
<ul> 
  <li><p>Name A </p></li>
  <li><p>Name B </p></li>
  <li><p>Name C </p></li>
</ul>
</ul>

有什么方法可以禁止 Jekyll 将 &lt;p&gt; 标签添加到列表项中?实际上,如果我想添加任何丰富的格式,我需要将 HTML 直接放入项目中,但我想通过 Markdown'ing the Front Matter 文本来添加它。有什么建议吗?

PS:我的网站托管在 Github Pages

【问题讨论】:

  • 我知道这是旧的,但如果您编写正确的 html,大多数降价解析器会更好地处理它。 &lt;li&gt;{{ host }} 缺少尾随 &lt;/li&gt;,所以它不知道它不是一个段落,所以它试图提供帮助。

标签: ruby jekyll liquid github-pages


【解决方案1】:

我“杀死”&lt;p&gt;&lt;/p&gt; 失败了。

所以我在 p 元素中添加了一个 css 类,例如.handle-as-span,然后我就可以用 css 来“操纵” p 元素(从块更改为内联)。

{: .handle-as-span }
![Image Alt Tag](path/to/image)

它也应该适用于 markdown 中的列表/表格。我了解到{: .handle-as-span } 有时需要放在块之前,有时放在块之后。试试看。它仍然很丑,但至少我能够让我的设计没有被破坏。

p.handle-as-span {
  display: inline;
}

【讨论】:

    【解决方案2】:

    使用 md.renderInline() 删除&lt;p&gt; 标签

    【讨论】:

      【解决方案3】:

      嗯...这是一个很老的问题,但仍然是实际的。

      您可以像之前的David Jacquel answered 一样使用| remove: '&lt;p&gt;' | remove: '&lt;/p&gt;'。但它会删除文本中的每个&lt;p&gt; 标签。

      但是,如果您只想在只有一个 &lt;p&gt; 节点的情况下删除 &lt;p&gt;-tag 包装,则需要更复杂的解决方案。

      没有外部插件和过滤器,几乎没有办法做到这一点。

      这是我的解决方案:

      {%- assign arr = yourTextVar | markdownify | strip | split: "<p>" -%}
      {%- if arr.size > 2 -%}
        {{ arr | join: "<p>" | prepend: "<p>" }}
      {%- else -%}
        {{ arr[1] | remove: "</p>" }}
      {%- endif -%}
      

      它将分割空&lt;p&gt;标签上的文本,并忽略&lt;p id="my-id"&gt;之类的任何内容

      【讨论】:

        【解决方案4】:

        您可以像这样使用remove filter

        {{ host | markdownify | remove: '<p>' | remove: '</p>' }}
        

        【讨论】:

        • 这确实工作得很好。其实我是来这里寻找alternate解决方案的,因为一想到这个,就觉得有点野蛮了。
        • 五年后...我想知道是否还有一个过滤器可以让我剪掉前 3 个和最后 4 个字母,以避免删除内部 p 标记。
        猜你喜欢
        • 2015-09-25
        • 2010-11-21
        • 1970-01-01
        • 2014-02-01
        • 1970-01-01
        • 2020-06-22
        • 2020-03-02
        • 2015-11-09
        • 2011-01-04
        相关资源
        最近更新 更多